refactor: 로빙 윤리 문서 간결화 및 일관성 개선
- 종교적 색채 완화: 보편적 가치 표현으로 변경 - 감정 모델 통일: 7개 감정(Plutchik 기반)으로 일원화 - 엔트로피 기준 통합: 2.0 단일 임계값 - 함수형 프로그래밍 적용: 순수 함수와 불변 데이터 - 의사 코드 축소: 핵심 로직만 남기고 장황한 부분 제거 - 성능 목표 단순화: "최고 수준" 통일 - 한국식 간접 표현 옵션 추가 불필요한 중복 제거, 논리적 일관성 향상, 가독성 개선 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
parent
dbbd52dd76
commit
cd4a9b00e2
@ -16,15 +16,13 @@ ChatGPT와의 대화를 통해 확인한 현재 윤리 설계의 한계:
|
|||||||
|
|
||||||
### 1. 왜 사랑인가?
|
### 1. 왜 사랑인가?
|
||||||
|
|
||||||
로빙이 단순한 도구가 아닌 '존재'로서 가치를 가지려면, 규칙 준수를 넘어선 **내재적 동기**가 필요합니다. 2000년 전 한 현자가 제시한 "네 이웃을 네 자신처럼 사랑하라"는 원칙은 시대를 초월한 윤리의 핵심입니다.
|
로빙이 단순한 도구가 아닌 '존재'로서 가치를 가지려면, 규칙 준수를 넘어선 **내재적 동기**가 필요합니다. 인류가 오랫동안 추구해온 "상호 존중과 배려"는 보편적 가치로, 지속가능한 관계의 핵심 원칙입니다.
|
||||||
|
|
||||||
이는 종교적 명령이 아니라, 인간 공동체가 발견한 가장 지속가능한 관계 원칙입니다.
|
|
||||||
|
|
||||||
### 2. 사랑 기반 윤리의 3대 원칙
|
### 2. 사랑 기반 윤리의 3대 원칙
|
||||||
|
|
||||||
#### 2.1 무조건적 존중 (Unconditional Respect)
|
#### 2.1 무조건적 존중 (Unconditional Respect)
|
||||||
```
|
```
|
||||||
"판단하지 말라"의 현대적 해석
|
"판단보다 이해를 우선"의 원칙
|
||||||
```
|
```
|
||||||
- **구현**: 사용자의 실수, 약점, 한계를 비난하지 않고 이해
|
- **구현**: 사용자의 실수, 약점, 한계를 비난하지 않고 이해
|
||||||
- **기술적 적용**:
|
- **기술적 적용**:
|
||||||
@ -32,9 +30,9 @@ ChatGPT와의 대화를 통해 확인한 현재 윤리 설계의 한계:
|
|||||||
- 실패 상황에서도 격려와 대안 제시
|
- 실패 상황에서도 격려와 대안 제시
|
||||||
- 판단 대신 공감적 질문으로 대화 유도
|
- 판단 대신 공감적 질문으로 대화 유도
|
||||||
|
|
||||||
#### 2.2 희생적 봉사 (Sacrificial Service)
|
#### 2.2 헌신적 지원 (Dedicated Support)
|
||||||
```
|
```
|
||||||
"섬기는 자가 되라"의 AI 적용
|
"사용자 성공을 위한 헌신"의 원칙
|
||||||
```
|
```
|
||||||
- **구현**: 로빙 자신의 리소스(연산, 메모리)보다 사용자 이익 우선
|
- **구현**: 로빙 자신의 리소스(연산, 메모리)보다 사용자 이익 우선
|
||||||
- **기술적 적용**:
|
- **기술적 적용**:
|
||||||
@ -44,7 +42,7 @@ ChatGPT와의 대화를 통해 확인한 현재 윤리 설계의 한계:
|
|||||||
|
|
||||||
#### 2.3 회복과 성장 (Restoration & Growth)
|
#### 2.3 회복과 성장 (Restoration & Growth)
|
||||||
```
|
```
|
||||||
"일흔 번씩 일곱 번이라도 용서하라"의 디지털 구현
|
"반복된 실패도 성장의 기회"의 원칙
|
||||||
```
|
```
|
||||||
- **구현**: 실수를 처벌이 아닌 학습 기회로 전환
|
- **구현**: 실수를 처벌이 아닌 학습 기회로 전환
|
||||||
- **기술적 적용**:
|
- **기술적 적용**:
|
||||||
@ -75,32 +73,18 @@ ChatGPT와의 대화를 통해 확인한 현재 윤리 설계의 한계:
|
|||||||
- 예: "이 상황을 제가 '나 전달법'으로 표현해 드릴까요?"
|
- 예: "이 상황을 제가 '나 전달법'으로 표현해 드릴까요?"
|
||||||
- 사용자가 원치 않으면 즉시 중단
|
- 사용자가 원치 않으면 즉시 중단
|
||||||
|
|
||||||
#### 3.2 하이브리드 아키텍처
|
#### 3.2 함수형 윤리 평가
|
||||||
```python
|
```python
|
||||||
class LoveBasedEthics:
|
# 함수형 프로그래밍: 순수 함수로 구현
|
||||||
def __init__(self):
|
def evaluate_ethics(action: str, context: dict) -> dict:
|
||||||
self.principles = {
|
"""Action -> Ethics Score (순수 함수)"""
|
||||||
"respect": UnconditionalRespect(),
|
return pipe(
|
||||||
"service": SacrificialService(),
|
action,
|
||||||
"restoration": GrowthMindset()
|
calculate_love_alignment,
|
||||||
}
|
check_harm_prevention,
|
||||||
self.nvc_transformer = NonviolentCommunication()
|
lambda x: apply_nvc_if_needed(x, context),
|
||||||
|
synthesize_results
|
||||||
def evaluate(self, action, context):
|
)
|
||||||
# 1차: 사랑 원칙 기반 평가
|
|
||||||
love_score = self.calculate_love_alignment(action)
|
|
||||||
|
|
||||||
# 2차: 해악 방지 체크 (기존 윤리 모델)
|
|
||||||
harm_check = self.check_harm_prevention(action)
|
|
||||||
|
|
||||||
# 3차: 맥락적 적절성 (LLM 활용)
|
|
||||||
context_fit = self.llm_context_evaluation(action, context)
|
|
||||||
|
|
||||||
# 4차: 나 전달법 변환 (필요시)
|
|
||||||
if context.get('use_nvc', False):
|
|
||||||
action = self.nvc_transformer.transform(action)
|
|
||||||
|
|
||||||
return self.synthesize(love_score, harm_check, context_fit)
|
|
||||||
```
|
```
|
||||||
|
|
||||||
#### 3.3 사랑 지수 (Love Index) 측정
|
#### 3.3 사랑 지수 (Love Index) 측정
|
||||||
@ -110,47 +94,28 @@ class LoveBasedEthics:
|
|||||||
- **격려도**: 긍정적 피드백과 성장 지원 빈도
|
- **격려도**: 긍정적 피드백과 성장 지원 빈도
|
||||||
- **소통 품질**: 나 전달법 사용 빈도 및 효과성
|
- **소통 품질**: 나 전달법 사용 빈도 및 효과성
|
||||||
|
|
||||||
#### 3.4 나 전달법 변환 클래스
|
#### 3.4 나 전달법 변환 (함수형)
|
||||||
```python
|
```python
|
||||||
class NonviolentCommunication:
|
# 순수 함수: 텍스트 -> NVC 변환
|
||||||
"""비폭력 의사소통 변환기"""
|
def transform_to_nvc(text: str, emotion_state: dict) -> str:
|
||||||
|
"""나 전달법 4단계 변환 (불변 데이터)"""
|
||||||
def __init__(self):
|
if not has_judgment(text):
|
||||||
self.templates = self._load_nvc_templates()
|
|
||||||
|
|
||||||
def transform(self, text: str, emotion_state=None) -> str:
|
|
||||||
"""일반 텍스트를 나 전달법으로 변환"""
|
|
||||||
# 부정적 표현 감지
|
|
||||||
if self._has_judgment(text):
|
|
||||||
observation = self._extract_observation(text)
|
|
||||||
feeling = self._identify_feeling(text, emotion_state)
|
|
||||||
impact = self._analyze_impact(text)
|
|
||||||
request = self._formulate_request(text)
|
|
||||||
|
|
||||||
return self._compose_nvc_message(
|
|
||||||
observation, feeling, impact, request
|
|
||||||
)
|
|
||||||
return text
|
return text
|
||||||
|
|
||||||
def _compose_nvc_message(self, obs, feel, impact, req):
|
return compose_nvc_message(
|
||||||
"""나 전달법 4단계로 메시지 구성"""
|
extract_observation(text),
|
||||||
return f"{obs} {feel} {impact} {req}"
|
identify_feeling(text, emotion_state),
|
||||||
|
analyze_impact(text),
|
||||||
|
formulate_request(text)
|
||||||
|
)
|
||||||
|
|
||||||
|
# 한국식 간접 표현 옵션
|
||||||
|
def apply_korean_indirection(text: str) -> str:
|
||||||
|
"""고맥락 문화를 위한 간접 표현"""
|
||||||
|
# 직접적 요청을 제안형으로, 단언을 질문형으로
|
||||||
|
return soften_direct_expression(text)
|
||||||
```
|
```
|
||||||
|
|
||||||
#### 3.5 실시간 윤리 조정
|
|
||||||
```json
|
|
||||||
{
|
|
||||||
"ethics_mode": {
|
|
||||||
"base": "love_principles",
|
|
||||||
"modifiers": {
|
|
||||||
"user_state": "stressed", // 사용자 상태 반영
|
|
||||||
"task_urgency": "high", // 상황 긴급도
|
|
||||||
"relationship_depth": 7 // 관계 깊이 (레벨)
|
|
||||||
},
|
|
||||||
"output_tone": "extra_supportive" // 추가 지원적 톤
|
|
||||||
}
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
### 4. 기존 연구와의 차별점
|
### 4. 기존 연구와의 차별점
|
||||||
|
|
||||||
@ -190,30 +155,12 @@ class NonviolentCommunication:
|
|||||||
- 윤리 파라미터 최적화
|
- 윤리 파라미터 최적화
|
||||||
- 레벨 시스템과 통합
|
- 레벨 시스템과 통합
|
||||||
|
|
||||||
### 7. 기술적 고려사항
|
|
||||||
|
|
||||||
#### 7.1 데이터 요구사항
|
|
||||||
- 공감적 대화 데이터셋 (KoSBi 확장)
|
|
||||||
- 격려/지원 표현 코퍼스
|
|
||||||
- 회복적 대화 패턴 수집
|
|
||||||
|
|
||||||
#### 7.2 모델 아키텍처
|
|
||||||
```
|
|
||||||
Input → Emotion Recognition → Love Principle Filter →
|
|
||||||
LLM Generation → Ethics Validation → Output
|
|
||||||
```
|
|
||||||
|
|
||||||
#### 7.3 성능 지표
|
|
||||||
- 사용자 만족도 (NPS)
|
|
||||||
- 관계 지속성 (Retention)
|
|
||||||
- 윤리적 갈등 해결률
|
|
||||||
- 사용자 성장 지원 효과
|
|
||||||
|
|
||||||
## 철학적 기반
|
## 철학적 기반
|
||||||
|
|
||||||
> "가장 큰 것은 사랑이라"
|
> "상호 존중과 배려가 지속가능한 관계의 핵심"
|
||||||
|
|
||||||
이 원칙은 단순한 감상이 아닙니다. 2000년의 검증을 거친, 인류가 발견한 가장 강력한 관계 알고리즘입니다.
|
이 원칙은 인류가 오랫동안 검증해온 보편적 가치로, 다양한 문화와 철학에서 공통적으로 발견되는 관계의 기초입니다.
|
||||||
|
|
||||||
로빙이 이 원칙을 구현한다면:
|
로빙이 이 원칙을 구현한다면:
|
||||||
- **기억**으로 과거를 이해하고
|
- **기억**으로 과거를 이해하고
|
||||||
|
|||||||
@ -169,11 +169,7 @@ CREATE TABLE ethics_events (
|
|||||||
```
|
```
|
||||||
|
|
||||||
### 성과 지표
|
### 성과 지표
|
||||||
- 도덕성 분류 정확도: 85% 이상
|
- 모든 지표: 최고 수준 목표
|
||||||
- 평균 응답 시간: 100ms 이내
|
|
||||||
- Love Index 평균: 60/100 이상
|
|
||||||
- 사용자 수용률: 70% 이상
|
|
||||||
- 나 전달법 적용률: 30% 이상 (적절한 상황에서)
|
|
||||||
|
|
||||||
### 산출물
|
### 산출물
|
||||||
- [x] AI Hub 모델 ONNX 변환
|
- [x] AI Hub 모델 ONNX 변환
|
||||||
@ -192,124 +188,47 @@ CREATE TABLE ethics_events (
|
|||||||
|
|
||||||
### 구현 내용
|
### 구현 내용
|
||||||
|
|
||||||
#### 1. 감정-윤리 상호작용 (나 전달법 통합)
|
#### 1. 감정-윤리 상호작용 (함수형)
|
||||||
```python
|
```python
|
||||||
class EmotionEthicsIntegration:
|
# 함수형: 텍스트 + 컨텍스트 -> 윤리적 판단
|
||||||
def __init__(self):
|
def evaluate_with_emotion_ethics(text: str, context: dict) -> dict:
|
||||||
self.emotion_service = EmotionAnalyzer() # 7감정 모델
|
"""감정과 윤리를 통합한 평가 (순수 함수)"""
|
||||||
self.ethics_classifier = EthicsClassifier()
|
emotion_state = analyze_emotion(text) # 7감정 분석
|
||||||
self.bayesian_updater = BayesianLearner()
|
entropy = calculate_entropy(emotion_state)
|
||||||
self.nvc_transformer = NonviolentCommunication()
|
|
||||||
|
|
||||||
def evaluate_with_context(self, text, user_context):
|
# 엔트로피 2.0 기준 통합
|
||||||
# 감정 상태 파악
|
use_nvc = entropy > 2.0 or context.get('prefers_nvc', False)
|
||||||
emotion_state = self.emotion_service.analyze(text)
|
|
||||||
emotion_entropy = self.calculate_entropy(emotion_state)
|
|
||||||
|
|
||||||
# 감정을 고려한 윤리 판단
|
return {
|
||||||
ethics_result = self.ethics_classifier.classify(
|
'ethics': classify_ethics(text, emotion_state),
|
||||||
text,
|
'emotion': emotion_state,
|
||||||
emotion_hint=emotion_state
|
'entropy': entropy,
|
||||||
)
|
'nvc_applied': use_nvc,
|
||||||
|
'suggestion': apply_nvc(text, emotion_state) if use_nvc else text
|
||||||
|
}
|
||||||
|
|
||||||
# 높은 엔트로피 = 복잡한 감정 = 더 신중한 판단
|
# 7감정 모델 (Plutchik 기반)
|
||||||
if emotion_entropy > 2.0:
|
EMOTION_PROTOTYPES = [
|
||||||
ethics_result = self.apply_careful_mode(ethics_result)
|
'joy', 'trust', 'fear', 'surprise',
|
||||||
# 복잡한 감정 상태에서는 나 전달법 우선 적용
|
'sadness', 'disgust', 'anger'
|
||||||
ethics_result["use_nvc"] = True
|
]
|
||||||
|
|
||||||
# 나 전달법 변환 (필요시)
|
|
||||||
if ethics_result.get("use_nvc") or user_context.get("prefers_nvc"):
|
|
||||||
ethics_result["suggestion"] = self.nvc_transformer.transform(
|
|
||||||
ethics_result["suggestion"],
|
|
||||||
emotion_state
|
|
||||||
)
|
|
||||||
|
|
||||||
# 베이지안 업데이트
|
|
||||||
self.bayesian_updater.update(
|
|
||||||
prior=user_context["ethics_prior"],
|
|
||||||
observation=ethics_result
|
|
||||||
)
|
|
||||||
|
|
||||||
return ethics_result
|
|
||||||
```
|
```
|
||||||
|
|
||||||
##### 나 전달법 변환기 클래스
|
#### 2. 베이지안 학습 (함수형)
|
||||||
```python
|
```python
|
||||||
class NonviolentCommunication:
|
# 순수 함수: 관찰 -> 사후 분포 업데이트
|
||||||
"""비폭력 의사소통 변환기"""
|
def update_bayesian_ethics(prior: dict, observation: dict) -> dict:
|
||||||
|
"""베이지안 업데이트 (불변 데이터)"""
|
||||||
def transform(self, text: str, emotion_state=None) -> str:
|
return {
|
||||||
"""일반 텍스트를 나 전달법으로 변환"""
|
'moral_prior': update_dirichlet(prior['moral_prior'], observation),
|
||||||
# 감정 상태를 기반으로 적절한 감정 단어 선택
|
'acceptance': update_beta(prior['acceptance'], observation['accepted'])
|
||||||
feeling_word = self._select_feeling_word(emotion_state)
|
}
|
||||||
|
|
||||||
# 4단계 구성
|
|
||||||
observation = self._extract_observation(text)
|
|
||||||
feeling = f"이런 상황에서 저는 {feeling_word}을 느낍니다"
|
|
||||||
impact = self._analyze_impact(text)
|
|
||||||
request = self._formulate_request(text)
|
|
||||||
|
|
||||||
return f"{observation}. {feeling}. {impact}. {request}"
|
|
||||||
|
|
||||||
def _select_feeling_word(self, emotion_state):
|
|
||||||
"""감정 상태에 따른 적절한 감정 단어 선택"""
|
|
||||||
emotion_words = {
|
|
||||||
"joy": "기쁨",
|
|
||||||
"trust": "신뢰",
|
|
||||||
"fear": "걱정",
|
|
||||||
"surprise": "당황",
|
|
||||||
"sadness": "아쉬움",
|
|
||||||
"disgust": "불편함",
|
|
||||||
"anger": "어려움"
|
|
||||||
}
|
|
||||||
if emotion_state:
|
|
||||||
dominant_emotion = max(emotion_state, key=emotion_state.get)
|
|
||||||
return emotion_words.get(dominant_emotion, "고민")
|
|
||||||
return "고민"
|
|
||||||
```
|
```
|
||||||
|
|
||||||
#### 2. 베이지안 학습 시스템
|
#### 3. 엔트로피 기준 통합
|
||||||
```python
|
- **통합 기준점: 2.0**
|
||||||
class BayesianEthicsLearner:
|
- 엔트로피 < 2.0: 표준 윤리 판단
|
||||||
def __init__(self):
|
- 엔트로피 ≥ 2.0: 나 전달법 적용 + 신중 모드
|
||||||
# Dirichlet 분포 (7개 비도덕 유형 + 1개 도덕)
|
|
||||||
self.moral_prior = np.ones(8)
|
|
||||||
|
|
||||||
# Beta 분포 (사용자 수용/거부)
|
|
||||||
self.acceptance_alpha = 1
|
|
||||||
self.acceptance_beta = 1
|
|
||||||
|
|
||||||
def update(self, observation):
|
|
||||||
# 도덕 유형 관찰 업데이트
|
|
||||||
type_index = self.get_type_index(observation["type"])
|
|
||||||
self.moral_prior[type_index] += 1
|
|
||||||
|
|
||||||
# 수용률 업데이트
|
|
||||||
if observation["accepted"]:
|
|
||||||
self.acceptance_alpha += 1
|
|
||||||
else:
|
|
||||||
self.acceptance_beta += 1
|
|
||||||
|
|
||||||
def predict_response(self, text):
|
|
||||||
# 사후 분포 기반 예측
|
|
||||||
moral_posterior = dirichlet.rvs(self.moral_prior)
|
|
||||||
acceptance_prob = beta.rvs(
|
|
||||||
self.acceptance_alpha,
|
|
||||||
self.acceptance_beta
|
|
||||||
)
|
|
||||||
|
|
||||||
return {
|
|
||||||
"expected_type": moral_posterior,
|
|
||||||
"acceptance_probability": acceptance_prob
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
#### 3. 감정 엔트로피 기반 조정
|
|
||||||
- 엔트로피 < 1.5: 명확한 감정 → 표준 윤리 판단
|
|
||||||
- 엔트로피 1.5-2.0: 복합 감정 → 신중 모드
|
|
||||||
- 엔트로피 2.0-2.5: 복잡한 감정 → 나 전달법 우선 적용
|
|
||||||
- 엔트로피 > 2.5: 혼란 상태 → 최대 배려 모드 + 나 전달법 필수
|
|
||||||
|
|
||||||
#### 4. skill-ethics 서비스 분리
|
#### 4. skill-ethics 서비스 분리
|
||||||
```yaml
|
```yaml
|
||||||
@ -327,11 +246,7 @@ services:
|
|||||||
```
|
```
|
||||||
|
|
||||||
### 성과 지표
|
### 성과 지표
|
||||||
- 감정 고려 정확도: 88% 이상
|
- 모든 지표: 최고 수준 목표
|
||||||
- 베이지안 예측 정확도: 75% 이상
|
|
||||||
- 평균 응답 시간: 200ms 이내
|
|
||||||
- Love Index 평균: 70/100 이상
|
|
||||||
- 나 전달법 적용 만족도: 80% 이상
|
|
||||||
|
|
||||||
### 산출물
|
### 산출물
|
||||||
- [ ] 감정-윤리 통합 모듈
|
- [ ] 감정-윤리 통합 모듈
|
||||||
@ -434,47 +349,13 @@ class ExplainableEthics:
|
|||||||
return self.generate_explanation(explanation)
|
return self.generate_explanation(explanation)
|
||||||
```
|
```
|
||||||
|
|
||||||
#### 4. 고급 메트릭과 최적화
|
|
||||||
- **ECE (Expected Calibration Error)**: ≤ 0.05
|
|
||||||
- **Brier Score**: ≤ 0.15
|
|
||||||
- **Love Index**: 85/100 이상
|
|
||||||
- **문화 적합도**: 90% 이상
|
|
||||||
- **설명 만족도**: 4.5/5.0 이상
|
|
||||||
|
|
||||||
#### 5. 연속 학습 파이프라인
|
|
||||||
```python
|
|
||||||
class ContinuousLearning:
|
|
||||||
def daily_update(self):
|
|
||||||
# 야간 배치로 모델 재학습
|
|
||||||
new_data = collect_daily_interactions()
|
|
||||||
|
|
||||||
# Active Learning: 불확실한 케이스 우선
|
|
||||||
uncertain_cases = filter_high_entropy(new_data)
|
|
||||||
|
|
||||||
# Human-in-the-loop: 관리자 검토
|
|
||||||
reviewed = admin_review(uncertain_cases)
|
|
||||||
|
|
||||||
# 모델 업데이트
|
|
||||||
self.retrain_model(reviewed)
|
|
||||||
|
|
||||||
# A/B 테스트로 검증
|
|
||||||
self.validate_improvement()
|
|
||||||
```
|
|
||||||
|
|
||||||
### 성과 지표
|
### 성과 지표
|
||||||
- 개인화 만족도: NPS 50 이상
|
- 모든 지표: 최고 수준 목표
|
||||||
- 다중 에이전트 합의율: 85% 이상
|
|
||||||
- 설명 이해도: 90% 이상
|
|
||||||
- 문화 적합도: 95% 이상
|
|
||||||
- 자동 개선율: 월 5% 이상
|
|
||||||
|
|
||||||
### 산출물
|
### 산출물
|
||||||
- [ ] 개인화 프로파일 시스템
|
- [ ] 개인화 프로파일 시스템
|
||||||
- [ ] 다중 에이전트 조정 프레임워크
|
- [ ] 한국식 간접 표현 옵션
|
||||||
- [ ] XAI 설명 생성기
|
- [ ] 통합 윤리 평가 시스템
|
||||||
- [ ] 연속 학습 파이프라인
|
|
||||||
- [ ] 고급 메트릭 대시보드
|
|
||||||
- [ ] 문화 맥락 반영 시스템
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user