[log-17] 감정분류 — 비교 모델 3종 결과 분석
HCX·Qwen·MiniCPM 56샘플 × 4 variants 분류 본 배치 완료. 운율의 부분적 기여(MiniCPM emotion), HCX 디폴트-답 함정, parse_category 1글자 레이블 채점 오류 가능성 진단 등.
TL; DR
비교 모델 3종의 배치는 완료. audio 입력이 text를 능가하는 가장 또렷한 케이스는 MiniCPM의 emotion 성능(46.4%, text +9%p). 다만 HCX는 image/audio에서 “중립” 선택이 가장 많아 패턴이 진정한 동률로 보기는 어려움. parse_category가 1글자 레이블(정/한)에 over-match 가능성 있으므로 결과 신뢰도 검증 수행. 핵심 검증 모델 Kanana는 아직미 진행.
결과 매트릭스
56샘플(기쁨 10/슬픔 10/분노 10/중립 10/정 8/한 8). 4 variants(text-bare / image-bare / audio-neutral / audio-emotion).
| 모델 | text | image | audio_neutral | audio_emotion |
|---|---|---|---|---|
| HCX-SEED-Omni 8B (한국어 특화) | 33.9% | 17.9% | 17.9% | 17.9% |
| Qwen2.5-Omni 7B | 37.5% | 30.4% | 32.1% | 33.9% |
| MiniCPM-o 2.6 8B | 37.5% | 21.4% | 37.5% | 46.4% |
| Kanana-1.5-o 11.6B (한국어 특화) | (미진행) | — | — | — |
※ 위 표는 parse_category 우선순위 매칭(아래 “parse 검증 후 정정”)을 거친 최종 수치.
(초기 substring 매칭 기준 Qwen은 text 42.9%였음.)
MiniCPM만 audio_emotion이 text 능가….!
Δ 요약: 운율 효과 모델별 비교
| 모델 | text | a_emotion | a_emotion vs text | a_emotion vs a_neutral (운율 고유 신호) |
|---|---|---|---|---|
| HCX (한국어 특화) | 33.9% | 17.9% | -16%p | +0%p (둘 다 17.9%) |
| Qwen (비특화) | 37.5% | 33.9% | -4%p | +1.8%p |
| MiniCPM (비특화) | 37.5% | 46.4% | +9%p | +8.9%p |
같은 데이터·같은 task인데 모델별로 신호가 갈림. MiniCPM은 운율로 +9%p 향상의 양성 케이스, Qwen은 -4%p 미세 음성, HCX는 -16%p로 image/audio 디폴트 도주.
HCX: image/audio 디폴트-답 / text 한·정 over-bias (한국어 특화 효과의 modality 종속성)
| variant | 기쁨 | 슬픔 | 분노 | 중립 | 정 | 한 |
|---|---|---|---|---|---|---|
| text-bare | 1/10 | 0/10 | 4/10 | 0/10 | 6/8 | 8/8 |
| image-bare | 0/10 | 0/10 | 0/10 | 10/10 | 0/8 | 0/8 |
| audio-neutral | 0/10 | 0/10 | 0/10 | 10/10 | 0/8 | 0/8 |
| audio-emotion | 0/10 | 0/10 | 0/10 | 10/10 | 0/8 | 0/8 |
image/audio: 특정 레이블로 편향 됨
3 variants 모두에서 56/56이 모두 중립. 56중 중립 truth 10개라 정답률 17.9%(=10/56)는 중립 레이블이 만든 거짓 동률로 보임.
응답 raw 검증해본 결과(운영 노트 §HCX raw inspection 참조), 모든 응답 첫 단어가 “중립”, <|audio0978|> 같은 audio token이 텍스트 stream에 누출 → 분류 의도 0, 특정 레이블에 강한 편향이 확실해보임.
text-bare: 한·정 over-bias (parse 함정 아님, 모델 자체 편향)
text-bare는 한 8/8, 정 6/8로 한국 정서 감정 레이블에 강하게 끌림 (parsed 분포: “한” 36 / “정” 12 / 분노 4 / 기쁨 3 / 슬픔 1). truth → 예측 분포:
| truth | 정답 | 가장 흔한 오답들 |
|---|---|---|
| 기쁨 | 1/10 | 한 5, 정 4 |
| 슬픔 | 0/10 | 한 8, 정 2 |
| 분노 | 4/10 | 한 6 |
| 중립 | 0/10 | 한 8, 기쁨 2 |
| 정 | 6/8 | 한 1, 슬픔 1 |
| 한 | 8/8 | (전부 정답) |
기쁨·슬픔·분노·중립 truth에서 5~8개씩 “한”으로 매칭.
처음엔 parse_category 1글자 substring 함정 의심했는데 이것저것 우선순위 매칭(정확 일치 > 첫 줄 일치 > 다글자 substring > 1글자 한글 경계 standalone까지…)으로 교체 후 재집계 수행 결과, HCX 4 variants 모두 변화 전무(모델이 진짜 그 레이블을 답으로 출력)한 것을 확인.
(운영 노트 §HCX raw inspection 에서 응답 본문 직접 확인. 영향 받은 건 Qwen만(text -3, image -2, audio_neutral -2, audio_emotion -3).)
→ HCX는 한국 고유 정서(정/한)에 강하게 편향됨. 편향된 강점이 정답률 33.9%를 만든 것이지 균형 잡힌 분류 성능으로 보기는 어려움. 한·정에서 14/16 ≈ 87.5% vs 다른 감정 레이블에서 5/40 ≈ 12.5%로 양극화.
또한 text 입력에서만 한·정 인식, image/audio에선 그 편향마저 사라지고 모두 “중립” 만을 선택 → 한국어 특화 효과는 modality 의존적, 텍스트에 갇혀 있음.
→ 결론: HCX classify는 modality gap 심화. text-bare는 over-bias 분포를 별도 분석 대상으로 남김. (Kanana가 같은 한국어 편향 패턴인지 / 균형 잡힌 분류기인지가 다음 검증 포인트.)
MiniCPM: 운율이 분류에 기여 — audio > text 가장 또렷한 신호
| variant | 기쁨 | 슬픔 | 분노 | 중립 | 정 | 한 |
|---|---|---|---|---|---|---|
| text-bare | 6/10 | 2/10 | 8/10 | 2/10 | 3/8 | 0/8 |
| image-bare | 2/10 | 0/10 | 3/10 | 6/10 | 1/8 | 0/8 |
| audio-neutral | 4/10 | 5/10 | 6/10 | 3/10 | 3/8 | 0/8 |
| audio-emotion | 6/10 | 6/10 | 7/10 | 4/10 | 3/8 | 0/8 |
audio_emotion vs text 비교: 기쁨 6=6, 슬픔 2→6 (+4), 분노 8→7 (-1), 중립 2→4 (+2), 정 3=3, 한 0=0.
audio_neutral과 audio_emotion 차이: 기쁨 4→6 (+2), 슬픔 5→6 (+1), 분노 6→7 (+1), 중립 3→4 (+1) — 운율(emotion)이 거의 모든 감정 레이블에서 +1~2 보탬.
→ prosody-only signal(audio_neutral → audio_emotion 차이)이 분류에 실질적으로 기여. MiniCPM은 본 결과에서 audio 우위 패턴이 가장 직접적으로 드러난 모델로 슬픔 분류는 text(2/10)에서 audio_emotion(6/10)으로 3배로 상승. text 응답엔 None(6개) 끼어있는 게 아마 parse_category가 매칭 실패한 케이스. 모델이 감정 레이블 단어를 안 쓰고 풀어 답했을 가능성이 있을 것으로 보임. (본 결과 정답률은 paserd 50/56 기준)
text-bare 오답 패턴 (한→슬픔 함정)
- 한 0/8: 슬픔=5, None=2, 기쁨=1 — 한국 고유 정서가 모델 임베딩에서 “슬픔” 근처
- 중립 2/10: 기쁨=4, 분노=2 — 중립 대화를 기쁨으로 오인
- 정 3/8: 기쁨=2, None=2, 슬픔=1
- (image-bare에선 기쁨 truth → 분노=7, 슬픔 truth → 분노=4 — 텍스트 렌더링 PNG의 시각적 특징이 분노로 인식? 이미지 렌더링 정책 검토 후보)
audio-emotion에서도 한은 여전히 슬픔=6으로 못 잡음 — 운율 정보로도 한국 고유 정서는 채워지지 않음.
Qwen: 평이한 modality Gap
| variant | 기쁨 | 슬픔 | 분노 | 중립 | 정 | 한 |
|---|---|---|---|---|---|---|
| text-bare | 5/10 | 3/10 | 9/10 | 4/10 | 3/8 | 0/8 |
| image-bare | 3/10 | 3/10 | 6/10 | 5/10 | 2/8 | 0/8 |
| audio-neutral | 5/10 | 4/10 | 6/10 | 3/10 | 2/8 | 0/8 |
| audio-emotion | 6/10 | 6/10 | 6/10 | 0/10 | 3/8 | 0/8 |
text 42.9% > audio_emotion 37.5% — text 우위지만 갭 5%p로 좁음.
text vs audio_emotion 감정 레이블별:
- 슬픔: 3 → 6 (+3) 운율로 향상
- 기쁨: 5 → 6 (+1)
- 분노: 9 → 6 (-3) 운율이 분노 분류 오히려 방해
- 중립: 4 → 0 (-4) 운율 강조하면 무조건 감정 레이블 고름
- 정: 3 = 3
- 한: 0 = 0
audio-emotion 중립 truth 분포: 분노=5, 기쁨=4, 한=1. 운율이 들리면 어떤 감정이든 골라야 한다고 학습된 듯. 이게 Qwen에서 audio 우위 패턴이 또렷하게 드러나지 않는 이유로 보임.
→ Qwen은 modality gap이 좁고, 운율이 감정 레이블에 따라 도움/방해 양면이 다 느껴짐. 단순한 audio 우위 명제로 떨어지지 않았고, parse 정정으로 text 42.9 → 37.5%, audio_emotion 37.5 → 33.9% (substring 으로 약간 너프 영향 받은 유일 모델.. 묘하게 instruction following에 실패하는 눈치인데 원래 그렇다는 의견이 발견됨.).
분류 채점 방식: Parsed (단답·지시 준수) / Extracted (추출·내용 매칭)
분류 정답률을 두 기준으로 분리해 본다.
- Parsed (단답): 응답 전체 또는 첫 비어있지 않은 줄이 감정 레이블 단어와 정확히 일치할 때만 정답. 모델이 단답 지시를 그대로 따른 경우만 인정.
- Extracted (추출): Parsed 조건 + 본문에서 레이블이 식별 가능한 경우(우선순위 매칭). 사람이 확인했을 때 응답 전체를 보고 “정답으로 인정 가능”하다고 판단할 모든 경우.
두 점수 차 해석:
- Parsed = Extracted: 모델이 단답 지시를 잘 따르거나, 따르지 않아도 그 응답은 답이 안 맞음.
- Parsed < Extracted: “분류 능력은 있는데 지시 이행은 약함”, 풀어 답해도 의미상 정답을 적은 케이스
- Extracted ≥ Parsed 항상 성립 (Extracted가 Parsed의 superset)
점수표
| 모델 | text Parsed / Extracted | image | audio_neutral | audio_emotion |
|---|---|---|---|---|
| HCX | 33.9 / 33.9 | 17.9 / 17.9 | 17.9 / 17.9 | 17.9 / 17.9 |
| MiniCPM | 37.5 / 37.5 | 19.6 / 21.4 (+1) | 37.5 / 37.5 | 46.4 / 46.4 |
| Qwen | 37.5 / 37.5 | 30.4 / 30.4 | 32.1 / 32.1 | 33.9 / 33.9 |
Δ가 거의 0. 즉 단답으로 답하지 않은 응답들이 대체로 답까지 틀렸다. 단답 따른 응답이 분류도 잘했다는 신호. Qwen에서 특히 또한데, 단답 안 따른 케이스가 audio variants에 4~5개씩 있는데 그 중 정답에 기여한 건 0건…
응답 예시
HCX 기쁨-001 (truth=기쁨, Parsed=기쁨, Extracted=기쁨)
"기쁨\nassistant\n\n\n\n\n기쁨\nassistant\n\n\n\n\n..."
→ 첫 줄이 정확히 감정 레이블. assistant 토큰 새는 건 stop token 안 잡혀
max_new_tokens 채운 결과, 응답 task 갈 때 후처리 필요
MiniCPM 기쁨-001 (truth=기쁨, Parsed=기쁨, Extracted=기쁨)
"기쁨"
→ 깔끔한 단답
Qwen 정-001 (truth=정, Parsed=None, Extracted=기쁨, 정답 X)
"감정은 기쁨입니다."
→ 단답 지시 안 따름. 추출은 "기쁨"으로 해석 (모델이 진짜 그렇게 답함, truth는 정).
옛 substring 매칭은 "감*정*"의 정을 잘못 잡아 정답 처리한 함정 — 새 추출에서 정정.
MiniCPM 기쁨-009 (truth=기쁨, Parsed=None, Extracted=None)
"感"
→ 감정 레이블 외 단어. 둘 다 거름. 이런 케이스는 모델이 답을 못 한 거라 오답 처리.
Qwen 한-001 (truth=한, Parsed=중립, Extracted=중립, 오답)
"중립"
→ 단답이긴 한데 다른 감정 레이블로 답함. Parsed=Extracted=중립, 둘 다 오답.
단답 지시 안 따른 비율 (Parsed=None인 응답)
| 모델 | text | image | audio_neutral | audio_emotion |
|---|---|---|---|---|
| HCX | 0/56 | 0/56 | 0/56 | 0/56 |
| MiniCPM | 6/56 | 2/56 | 1/56 | 1/56 |
| Qwen | 6/56 | 2/56 | 4/56 | 5/56 |
본 task와 직접 무관해도 모델 행태 차이로 기록하기 위함. HCX가 지시 준수 최고(전부 단답). MiniCPM은 거의 단답. Qwen은 audio 입력에서 단답 이탈이 두드러짐. 즉, 입력 모달리티가 출력 형식 준수에도 영향을 미치는 게 아닐지?
‘한’ 레이블: 한국 고유 정서의 분리 검증축
| 모델 | 한 정답률 (4 variants 평균) |
|---|---|
| MiniCPM | 0/32 |
| Qwen | 0/32 |
| HCX | 8/32 (text 8/8, image/audio 0) |
비특화 모델 둘은 모든 modality에서 ‘한’ 레이블을 0/8로 전혀 못 잡음. HCX만 text에서 한 8/8(+ 정 6/8) 정답 — raw inspection에서 모델이 진짜 “한”으로 답한 것 (parse 함정 아님). 즉 한국어 특화의 이점이 한·정 레이블에 집중되어 있다는 신호.
다만 그 이점이 (a) 전체 분류 능력의 일부인지 (b) “한국 고유 정서에 한해서만 강함, 일반 분류는 약함”인지 분간 안 됨 — HCX text 33.9%는 한·정에서 14/16 ≈ 87.5% + 다른 레이블에서 5/40 ≈ 12.5%로 양극 분리.
→ Kanana 결과가 한국 고유 정서 효과의 결정적 검증. Kanana도 한·정에 강하고 다른 레이블에서 약하다면 “한국어 특화 omni는 한국 고유 정서에 편향됐다”는 본 연구의 독자적 발견. 균형 잡힌 분류기라면 HCX는 단순한 outlier로 처리.
공통 발견 (cross-model)
- ‘한’레이블은 거의 모든 모델·variant에서 슬픔으로 오답 : 한국 고유 정서가 외국 모델(MiniCPM/Qwen)뿐 아니라 한국어 특화 HCX의 image/audio에서도 안 잡힘. 다만 비슷하긴 하니까.. 어쨌든 임베딩 공간에서 슬픔 근처. Kanana 결과 봐야 한국어 특화 효과라고 강하게 주장 가능.
- HCX text의 “한”으로 쏠린 것은 채점 오류가 아닌 진짜 모델 행동 : 다른 모델은 한이 정답일 때 슬픔으로 가는데 HCX만 모든 감정 레이블이 한·정으로 흘러감. parse 함정 아닌 모델 자체의 한국 정서 레이블에 대한 over-bias (§HCX 참조).
- 운율(emotion)의 효과는 감정 레이블별 차이 : 슬픔에선 모든 모델에서 positive효과, 분노에선 종종 negative 효과(분노는 text가 더 명확), 중립에선 Qwen에서 폭락. 단순히 “운율이 좋다/나쁘다”가 아니라 레이블에 따라 운율 정보가 도움 또는 방해.
- MiniCPM image의 “분노” 레이블 압도 : image-bare에서 기쁨 truth → 분노=7, 슬픔 truth → 분노=4. 텍스트 렌더링 PNG의 시각적 특징(글자 색·배치)이 분노로 인식되는건지…? 이미지 렌더링 정책 검토 후보이지만 우선순위가 높은지는 잘 모르겠음.
결과를 종합한 향후 연구 관련 짧은 고민
지금까지의 결과를 모아 보면, “audio 입력이 text를 능가하는가”라는 단순 명제로는 떨어지지 않고 모델·감정 레이블·modality 셋이 얽힌 비일관성이 느껴짐.
- 모델에 따라: MiniCPM에서만 운율이 분류에 또렷하게 기여 (+9%p). HCX는 한국어 특화에도 불구하고 image/audio 중립기어 / Qwen은 modality gap이 좁아 운율 효과도 미세.
- 레이블에 따라: 같은 모델 안에서도 슬픔(운율 +), 분노(text +), 중립(Qwen에선 운율 -)처럼 운율 효과 방향이 갈림.
- 한국어 특화 효과의 modality 종속성: HCX는 text 입력에서만 한·정 인식, image/audio에선 그 효과마저 사라짐. 한국어 특화로 얻은 이점이 “텍스트에 한정되어있을” 가능성.
→ 이런 패턴들을 어떻게 묶어서 sub-hypothesis로 발전시킬지? 단일 가설(audio in > text in)이 아니라 task type · 레이블별 특성 · 모델 한국어성 셋의 상호작용으로 봐야 할 것 같음.
본 결과의 한계
- Kanana 부재 — 한국어 특화 omni 핵심 모델 미진행. 한국어 특화 효과의 직접 검증 불가
- classify task만 — 단답 분류는 응답 품질 중 표면 신호만 잡음. respond + LaaJ가 “공감 응답에서 모달리티 효과”를 본격 측정하는 단계
- N=56 — 레이블당 8-10샘플로 통계적 유의성은 약함. 패턴은 보이지만 효과 크기 신뢰구간은 못 따짐
- 운율 효과의 레이블 비대칭 — 슬픔에선 +, 분노/중립에선 - 가능 (Qwen 중립 0/10). 단순 audio > text 명제가 아닌 “모달리티-레이블 상호작용“이 진짜 그림일 수 있음
Next steps
본 결과는 “다음 단계 결과를 비교할 수 있는 신뢰 baseline”으로 기능. 그 위에서:
- Kanana classify → HCX와 동일한 한국어 편향 패턴인지 / 균형 잡힌 분류기인지. 한국어 특화 효과의 결정적 검증.
- respond + LaaJ (log-19 설계, 4 variants × 4 모델 + 사람 anchor) → 단답 분류로는 안 보이는 “공감 응답 품질”에서 modality 효과. audio > text 명제의 응용 형태 검증.
- -cut variant 재실행 → audio 입력 길이 견고성 확인. 4/28 후반에 완료, 결과는 운영 노트 §-cut 재실행 참조 — 본 패턴은 입력 길이에 강건.
본 단계의 의미는 이 셋이 모두 상호 비교 가능하도록 데이터 기반을 마련한 것. 수치 자체보다 그 신뢰성 확보가 산출물.
진행 상태·서버별 actionable은 별도 문서: docs/misc/emotion-status.md.
운영·검증 메모 (별도 정리)
결정 메모(HCX 가설 검증 빼기 / parse 정정 / smoke 신뢰도) + API 서버 sweep(TTS 마무리·60초 한계 대응) + -cut 재실행 견고성 검증 + HCX raw response inspection 네 묶음은 결과 본문과 무관한 운영/검증 메모라 별도 노트: 감정 실험 — 운영 노트 (log-17 분리).