- 7-8월 초기 구축 문서 12개를 _archive/troubleshooting/2025_07-08_initial_setup/로 이동 - book/300_architecture/390_human_in_the_loop_intent_learning.md를 journey/research/intent_classification/로 이동 (개발 여정 문서) - 빈 폴더 제거 (journey/assets/*)
2.6 KiB
2.6 KiB
의도 분류 재학습 파이프라인 설계
작성일: 2025-11-17
목적: 라벨링된 데이터로 의도 분류기 재학습 및 개선 검증
1. 재학습 배치 스크립트 설계
1.1 입력 데이터
IntentReviewQueue에서status='confirmed'또는status='corrected'인 항목true_intent가 설정된 항목만 사용- 최소 라벨링 개수: intent별 5개 이상 (통계적 유의성)
1.2 재학습 대상 모델
-
Naive Bayes 분류기 (
app/services/intent_bayes.py)- 라벨링된 메시지로 vocabulary 및 intent별 통계 업데이트
- 기존 seed 데이터와 병합
-
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. 구현 순서
- 재학습 배치 스크립트 (TDD)
- 재학습 전후 측정 스크립트 (TDD)
- 쿼리 전략 구현 (TDD)
- 암묵적 피드백 수집 (TDD)
- 문서 업데이트
참고: 각 단계는 TDD 원칙에 따라 테스트 먼저 작성 후 구현