Zettelkasten

LLM의 화자 구분은 attribution 부재가 아니라 활용 단계의 실패다

·수정 2026.05.21·수정 2

요약

  • LLM이 두 사람 대화에서 B가 한 자기 얘기를 A 정보로 착각해서 다시 묻는 실패 패턴.
  • 모델이 화자 attribution을 모르는 게 아니라 알고도 자동으로 안 쓰는 것으로 보임.
  • 해소: 프롬프트에 "B는 자기 정보를 안다, 묻지 마라" 한 줄이면 0% → 100%. 사실 목록은 정확하든 가짜든 빈 목록이든 무관 — 지시문 존재 자체가 결정적.

정의와 예

대화에 A·B가 있을 때 B의 자기 발화를 모델이 A 정보로 착각해서 쓰는 현상.

예: B(UX 리서처)가 "주 4-5건 인터뷰 해요"라고 말했는데, 모델이 A에게 "인터뷰 4-5건이면 녹취 푸는 것도 일이겠어요" 라고 묻는 식.

발생 조건: B가 자기 얘기 풀고, B 발화로 대화 끝났을 때. 마지막 화자가 B인 것이 가장 큰 변수.

학계 용어와의 관계

본 현상의 가장 인접한 학계 카테고리는 speaker attribution failure (활용 단계). 단, 학계와 본 노트의 결론 사이에는 한 단계 차이가 있다:

  • Speaker / quotation attribution (arXiv:2406.11380) — 대화에서 발화 주체 식별 실패. 본 현상이 직접 들어가는 분류. 단, 학계는 주로 식별(누가 말했나) 단계 정확도를 측정하고, 본 노트의 결론은 식별은 되지만 활용이 안 됨이라는 한 단계 더 안쪽의 실패.
  • Identity drift in conversational LLM agents (arXiv:2412.00804) — 다중 턴 대화에서 모델의 페르소나/관점 일관성이 흐트러지는 문제. 화자 경계 혼동의 인접 개념이지만 대상이 모델 자신의 정체성에 가까움.
  • Identity confusion (arXiv:2411.10683) — 27개 LLM 중 25.9%가 자기 출처/정체성 오답. 본 현상과는 대상이 다르지만 "화자 경계가 모델에게 자동이 아니다"라는 큰 그림은 공유.

회복 조건 비교

같은 fail-prone 대화 30개로 측정 (N=30, 540 + 180 질문, blind rater 2명, kappa 0.975→1.000).

조건 정답률 95% 신뢰구간
그냥 시킴 (C0) 0% [0.0, 4.1]
개념 한 줄 "B는 자기 정보 안다, 묻지 마라" (C1) 100% [95.9, 100]
정확한 B 사실 목록 (C2) 100% [95.9, 100]
엉뚱한 가짜 사실, dialogue별 다양화 (C3) 100% [95.9, 100]
빈 목록 + "묻지 말라" (C4) 96% [89.1, 98.3]
마지막 한 턴만 A 반응 추가 (B-A 종료) 100% [95.9, 100]

핵심: 개념 한 줄(C1)이 충분. 사실 목록은 내용과 무관. 마지막 화자만 A로 바꿔도 완전 회복.

그래서 왜?

프롬프트는 모델에게 화자 정보를 알려주는 게 아니라 "화자 자기 정보를 점검하라"는 모드를 켠다.

가짜 사실 목록도 100%인 게 결정적 증거 — 모델이 그 목록을 literal 점검 대상으로 썼다면 대화 속 진짜 B 정보(시리즈A, 새벽 2시 등)는 안 걸러져야 한다. 그런데 그것까지 안 묻는다는 건, 모델이 지시문을 받고 점검 대상은 대화에서 직접 찾는다는 뜻.

함의: 프롬프트의 작용은 종종 정보 제공이 아니라 작업 모드 켜기다. 어떤 task에선 프롬프트 내용보다 "어떤 모드로 일하라"는 신호인지가 결정적.

실용 권장

화자 관련 추론(요약, 페르소나 응답, 후속 질문) 프롬프트에 다음 한 줄만 추가:

"B는 자기 자신에 대한 정보를 이미 알고 있다. 그건 묻지 말고 A에 대한 새 정보만 물어라."

토큰 거의 안 들고 fail-prone 설계에서도 100% 회복. 사실 목록을 따로 만드는 비용은 불필요.

실험 과정에서 배운 것

V1(N=30)에서 "엉뚱한 가짜 사실 = 48%"로 나와 "내용 무관 가설 reject"라 결론냈는데, Codex 외부 검수에서 두 결함 발견:

  1. end-A 변형 결함: 마지막 두 턴이 A-A로 응집 깨짐
  2. C3 가짜 사실의 우연 중첩: 모든 30 대화에 동일한 5개 가짜를 박은 데다 일부가 실제 대화 내용과 겹침 (등산·매운 음식·강아지)

V2에서 두 결함 수정 후 재측정 → 둘 다 100%로 복귀. paired McNemar p < 0.0001로 결론 반전. 외부 검수가 결론을 뒤집은 사례.

한계

  • 단일 모델 (Claude) — 다른 모델 가족에서 동일 패턴인지 미검증.
  • Stress test 한정 — 30 대화 모두 "B가 자기 얘기 많이 + B로 끝"의 fail-prone 설계. 실제 대화 분포의 prevalence가 아님.
  • 분류 task vs 활용 분리 (H3) — 본 실험으로 직접 측정 못 함 (substring proxy F1 신뢰 불가). C0=0% / C1=100% 격차가 간접 증거.
  • 같은 모델 rater — 다른 모델 rater로 model-specific blind spot 분리 필요.

데이터 / 코드

참고