diff --git a/research/intent_classification/README.md b/research/intent_classification/README.md index 8cc647a..007d28f 100644 --- a/research/intent_classification/README.md +++ b/research/intent_classification/README.md @@ -47,17 +47,19 @@ ## 로빙 프로젝트 적용 현황 -### 구현 완료 +### 구현 완료 (2025-11-17) - ✅ 사용자 피드백 수집 (좋아요/싫어요) - ✅ 리뷰 큐 진입 로직 (low confidence, error, negative feedback) -- ✅ 관리자 라벨링 API +- ✅ 관리자 라벨링 API (조회/라벨링/통계) - ✅ 데이터 수집 파이프라인 (100% 수집률 달성) +- ✅ 코드 작성 원칙 준수 (router → services → state) -### 다음 단계 -- [ ] 재학습 배치 구현 +### 진행 중 (2025-11-17) +- [ ] 재학습 배치 스크립트 구현 (TDD) - [ ] 재학습 전후 정확도 비교 측정 +- [ ] Active Learning 쿼리 전략 구현 (uncertainty sampling, margin sampling) +- [ ] 암묵적 피드백 수집 (재질문, 세션 종료 등) - [ ] Few-shot learning 기법 적용 -- [ ] 암묵적 피드백 통합 ## 관련 연구 분야 diff --git a/research/intent_classification/retraining_pipeline_plan.md b/research/intent_classification/retraining_pipeline_plan.md new file mode 100644 index 0000000..78203cb --- /dev/null +++ b/research/intent_classification/retraining_pipeline_plan.md @@ -0,0 +1,81 @@ +# 의도 분류 재학습 파이프라인 설계 + +**작성일**: 2025-11-17 +**목적**: 라벨링된 데이터로 의도 분류기 재학습 및 개선 검증 + +## 1. 재학습 배치 스크립트 설계 + +### 1.1 입력 데이터 +- `IntentReviewQueue`에서 `status='confirmed'` 또는 `status='corrected'`인 항목 +- `true_intent`가 설정된 항목만 사용 +- 최소 라벨링 개수: intent별 5개 이상 (통계적 유의성) + +### 1.2 재학습 대상 모델 +1. **Naive Bayes 분류기** (`app/services/intent_bayes.py`) + - 라벨링된 메시지로 vocabulary 및 intent별 통계 업데이트 + - 기존 seed 데이터와 병합 + +2. **Ko-SRoBERTa Prototype** (`intent_prototypes` 테이블) + - `true_intent`로 재라벨링된 메시지 임베딩으로 centroid 재계산 + - 기존 prototype과 가중 평균 또는 교체 + +### 1.3 재학습 스크립트 구조 +``` +scripts/retrain_intent_classifier.py +- 라벨링된 데이터 추출 +- Naive Bayes 재학습 +- Prototype 재계산 +- 검증 (기존 테스트 세트) +- 롤백 가능한 백업 생성 +``` + +## 2. 재학습 전후 측정 + +### 2.1 측정 지표 +- **정확도**: 동일 테스트 샘플에서 `predicted_intent == true_intent` 비율 +- **리뷰 큐 진입률**: low confidence 케이스 감소율 +- **Intent별 F1-score**: intent별 성능 변화 + +### 2.2 측정 스크립트 +``` +scripts/measure_intent_improvement.py +- 재학습 전 baseline 측정 +- 재학습 실행 +- 재학습 후 측정 +- 비교 리포트 생성 +``` + +## 3. Active Learning 쿼리 전략 + +### 3.1 Uncertainty Sampling +- **Margin Sampling**: `confidence(predicted) - confidence(2nd)`가 작은 순서 +- **Entropy Sampling**: 예측 분포의 엔트로피가 높은 순서 + +### 3.2 구현 위치 +- `app/brain/intent_review.py`: `should_enqueue_for_review` 확장 +- `app/state/intent_review_repository.py`: 우선순위 정렬 함수 추가 + +## 4. 암묵적 피드백 수집 + +### 4.1 암묵적 신호 +- **재질문**: 같은 사용자가 짧은 시간 내에 유사한 질문 반복 +- **세션 종료**: 응답 후 즉시 세션 종료 (불만족 가능성) +- **무응답**: 사용자가 응답 없이 다음 메시지 전송 + +### 4.2 구현 위치 +- `app/services/conversation_service.py`: 세션 종료 감지 +- `app/router/message_router.py`: 재질문 패턴 감지 +- `app/brain/intent_review.py`: 암묵적 피드백 조건 추가 + +## 5. 구현 순서 + +1. **재학습 배치 스크립트** (TDD) +2. **재학습 전후 측정 스크립트** (TDD) +3. **쿼리 전략 구현** (TDD) +4. **암묵적 피드백 수집** (TDD) +5. **문서 업데이트** + +--- + +**참고**: 각 단계는 TDD 원칙에 따라 테스트 먼저 작성 후 구현 +