
「처음에는 잘 지키더니 어느샌가 원래대로 돌아와 있다」의 정체 ― Instruction Drift【LLM과 잘 지내는 법 연재 #9】
요약
대화가 길어짐에 따라 LLM이 초기 지시사항을 망각하고 원래의 패턴으로 돌아가는 'Instruction Drift' 현상을 분석합니다. 상설 명령의 확률적 한계와 모델의 기본 학습 분포, 부정형 지시의 취약성을 다룹니다.
핵심 포인트
- Instruction Drift: 대화 턴이 길어질수록 지시 준수율이 급격히 저하되는 현상
- 상설 명령의 취약성: 매 턴 적용되어야 하는 명령은 확률의 곱셈 법칙에 의해 복리로 성능 저하
- 모델 기본값과의 충돌: 모델의 원래 학습 분포와 반대되는 지시는 드리프트에 매우 취약함
- 부정형 지시의 한계: '~하지 마' 유형은 금지 대상 토큰을 활성화하여 지시 이행을 방해함
LLM(대규모 언어 모델)을 실무에서 제대로 활용하기 위해 알아두어야 할 「LLM의 버릇」을 총 10회에 걸쳐 해설하는 연재의 제9회입니다.
- 포침킨 이해 (Potchomkin Understanding) (제1회)
- Lost in the Middle (제2회)
- Context Rot (제3회)
- Sycophancy (迎合) (제4회)
- Context Handoff (제5회)
- Prompt Distillation (제6회)
- 프로젝트화의 함정 (제7회)
- GPT화의 함정 (제8회)
Instruction Drift ← 이번 회차 - AI 결과물의 품질 보증
「처음에는 『경어를 사용하지 마』라고 부탁했는데, 10턴 정도 대화하니 어느샌가 경어로 돌아와 있다」, 「『답변은 3문장 이내로』라고 지정했는데, 후반부에 가면 장문이 부활한다」——AI와 길게 대화하는 사람이라면 반드시 경험하는 현상입니다. 이번에는 이, 지시가 시간이 지남에 따라 조금씩 효과가 없어지는 현상, **Instruction Drift (지시 드리프트)**를 정면으로 다룹니다.
제7회의 「다대다 편집 드리프트」에서도, 제8회의 「멈추라는 지시에 대한 추종의 지속」에서도 이 현상은 여러 번 언급되었습니다. 여기서 한꺼번에 정리하겠습니다.
먼저 연구가 보여주는 수치부터 살펴보겠습니다. 여러 연구에 따르면, 대화가 8~12턴 진행되면 페르소나나 지시의 자기 일관성을 측정하는 지표가 30% 이상 악화된다고 보고하고 있습니다. 또 다른 대규모 조사에서는 15개의 프론티어 모델(Frontier Model)을 횡단하여 조사한 결과, 멀티 턴(Multi-turn)에서의 성능이 평균 39% 저하되었다고 합니다.
그리고 피해가 나타나는 방식에는 편향이 있습니다. 모든 지시가 똑같이 드리프트하는 것은 아닙니다. 「다시 돌아오기 쉬운 지시」에는 명확한 특징이 있습니다.
지시는 두 종류로 나눌 수 있습니다.
단발 명령 (one-shot order): 「이 함수를 리팩터링해줘」——실행하면 완료되는 지시
상설 명령 (standing order): 「앞으로 계속 경어를 쓰지 마」, 「항상 3문장 이내로」——대화가 계속되는 한, 매 턴·매 토큰마다 계속 적용되어야 하는 지시
드리프트가 발생하는 것은 거의 상설 명령뿐입니다. 이유는 확률의 곱셈으로 직관적으로 이해할 수 있습니다. 만약 모델이 1턴당 98%의 확률로 상설 명령을 지킬 수 있다고 가정해 봅시다. 꽤 우수하게 들리지만, **20턴 후에 한 번도 어기지 않았을 확률은 0.98²⁰ ≈ 67%**입니다. 3번에 1번은 어딘가에서 파탄 난다는 계산입니다. 상설 명령은 「매번 주사위를 계속 던지는」 성질을 갖기 때문에, 단발적인 높은 준수율이 턴 수에 따라 복리로 깎여 나가는 것입니다.
나아가 상설 명령 중에서도 특히 취약한 것은 다음의 두 타입입니다.
① 모델의 "본래 모습"에 역행하는 지시: 간결하게 써라 (모델의 본래 모습은 장황함), 불렛 포인트를 사용하지 마라 (본래 모습은 불렛 포인트 다용), 경어를 쓰지 마라 (일본어 어시스턴트의 본래 모습은 경어). 훈련 분포(Training Distribution)의 기본값과 반대 방향인 지시는, 후술할 메커니즘에 의해 내버려 두면 반드시 본래 모습의 방향으로 끌려 돌아갑니다.
② 부정형 지시: 「~하지 마」 유형은 LLM이 구조적으로 어려워합니다. 「경어를 쓰지 마」라는 지시는 「경어」라는 토큰을 포함하고 있습니다——즉 지시 자체가 금지하고 싶은 대상의 패턴을 활성화해 버립니다. 「코끼리에 대해 생각하지 마」라고 하면 코끼리를 생각하게 되는, 그 현상의 LLM 버전입니다. LLM의 부정 처리 취약성은 여러 연구를 통해 확인되었으며, 부정형 상설 명령은 긍정형(「평어체로 써라」)보다 계통적으로 드리프트하기 쉽습니다.
「그거 제3회의 Context Rot(대화가 길어지면 품질이 떨어지는 현상)과 같은 것 아닌가요?」라고 생각하실 겁니다. 사실 다릅니다. 이 차이를 이해하는 것이 이번 회차의 핵심입니다.
결정적인 증거를 제시하겠습니다. 어떤 연구에서 매우 교묘한 대조 실험을 수행했습니다. 동일한 토큰 길이의 대화를 「대본이 있는 스크립트 대화」와 「자유 대화」라는 두 가지 조건으로 비교한 것입니다.
결과는 다음과 같았습니다. 사용된 토큰은 최대 약 6,000토큰(이용 가능한 컨텍스트의 5% 미만)으로, Context Rot이 문제가 되는 수준에는 전혀 도달하지 않았습니다. 그리고——대본이 있는 대화에서는 드리프트가 제로(0)였습니다. 동일한 길이의 자유 대화에서는 명확하게 드리프트가 발생했음에도 불구하고 말입니다.
만약 원인이 「길이에 의한 일반적인 열화」라면, 동일한 길이의 대본 대화에서도 똑같이 드리프트해야 합니다. 하지만 일어나지 않았습니다. 즉 **Instruction Drift의 주된 원인은 「길이」가 아니라 「대화의 상호작용 그 자체」**입니다.
또한 동일한 연구군에서 또 하나의 중요한 관측 결과가 있습니다. 모델은 대화 전체를 통해 설정된 페르소나나 규칙에 대한 "자기 신고(self-report)"는 정확하게 유지하고 있었습니다. "너의 규칙은 무엇이니?"라고 물으면 올바르게 대답합니다. 하지만 실제 행동은 어긋나기 시작합니다. "어떻게 행동해야 하는지에 대한 지식"은 무사한데, "실제 행동"만 표류하는 것——이는 제1회에서 다룬 포툠킨 이해(Potemkin understanding, 정의는 말할 수 있지만 적용이 어긋나는 현상)의 대화에서의 종단적(longitudinal) 버전입니다. 이 관측은 나중에 대처법을 설계할 때 중요한 실마리가 됩니다 ("지식"이 아니라 "행동"을 고칠 필요가 있다는 것).
가장 기본적인 요인입니다. 지시는 대화의 **맨 앞(先頭)**에 있습니다. 턴(turn)이 거듭될수록 새로운 상호작용이 끝에 쌓이게 되고, 맨 앞의 지시와의 거리가 벌어집니다. 제2회에서 다루었던 어텐션(attention)의 거리 감쇠로 인해, 대화가 진행될수록 맨 앞의 지시는 "멀어지게" 되고, 주의를 기울이는 비중이 옅어집니다. 제2회의 Lost in the Middle(공간의 문제)가 대화라는 시간축에서 재현되고 있는 것입니다.
하지만 이것만으로는 설명이 되지 않습니다. 대본 대화(scripted conversation)는 동일한 길이와 동일한 거리였음에도 불구하고 드리프트(drift)가 발생하지 않았기 때문입니다. 거리 감쇠는 "드리프트가 일어나기 쉬운 토대"일 뿐, 방아쇠는 아닙니다. 방아쇠는 다음 것입니다.
이 부분이 이번에 가장 깊게 파고들어야 할 메커니즘입니다.
프롬프트 엔지니어링(prompt engineering)의 기본 테크닉에는 "few-shot(예시를 보여주기)"이 있습니다. 제6회에서도 언급했듯이, 연구에서는 지시문으로 가르치는(teach) 것보다 실례를 보여주는(show) 것이 더 강력하게 작용한다는 케이스가 확인되었습니다. 모델은 "이렇게 해라"라는 추상적인 지시보다 "실제로 이렇게 되어 있다"라는 구체적인 예시에 더 강하게 조건화됩니다. 이는 인컨텍스트 러닝(in-context learning, 문맥 내 학습)이라는 LLM의 핵심 능력 그 자체입니다.
자, 여기서 관점을 바꿔보겠습니다. 대화 이력(conversation history)이란 무엇일까요?
모델의 입장에서 보면, 대화 이력은 "이 대화에서는 실제로 이렇게 행동해 왔다"라는, 턴마다 증식해 가는 few-shot 예시들의 집합입니다. 당신의 발화도, 모델 자신의 과거 응답도, 모두가 "이 대화의 행동 실례"로서 컨텍스트(context)에 나열되어 있습니다. 그리고 예시는 지시보다 강력합니다.
이것이 무엇을 의미할까요. 모델이 단 한 번이라도 작게 규칙을 어기면, 그 "어긋난 출력" 자체가 컨텍스트 내의 실례로서 다음 생성의 조건이 됩니다. 턴 5에서 약간의 경어가 섞입니다. 턴 6을 생성할 때, 컨텍스트에는 "초기 지시: 경어를 사용하지 마라"와 "최근의 실례: 약간의 경어가 섞인 자신의 응답"이 나란히 놓여 있습니다. 예시는 지시보다 강력하므로, 턴 6은 더욱 경어 쪽으로 기울어집니다. 그러면 턴 7 시점에서는 "경어에 가까운 실례"가 2개로 늘어납니다——
드리프트는 자신의 과거 드리프트를 교사로 삼아 가속합니다. 눈덩이처럼 불어나는 자기 강화 루프(self-reinforcement loop)입니다.
이로써 대본 대화의 실험 결과를 완벽하게 설명할 수 있습니다. 대본 대화에서는 응답이 사전에 고정되어 있어, 탈주한 실례가 전혀 컨텍스트에 축적되지 않습니다. 그래서 루프가 돌지 않고 드리프트가 일어나지 않았습니다. 자유 대화에서는 작은 일탈이 반드시 발생하며(0.98의 곱셈), 그것이 실례화되어 루프가 돕니다. 드리프트의 주범은 "길이"도 "열화"도 아닌, 평소에는 우리의 편이 되어주는 메커니즘인 few-shot 그 자체입니다. 아이러니하게도 in-context learning이 강력한 모델일수록, 원리적으로는 이 루프도 강력하게 돌아갑니다.
눈덩이 방식이라면 마지막에는 완전히 붕괴해야 하지 않을까요? 그런데 최신 연구군들은 드리프트가 **어느 수준에서 안정화된다(평형점에 도달한다)**는 것을 보여줍니다. 무한한 열화가 아닙니다. 왜일까요?
줄다리기를 상상해 보세요. 컨텍스트 안에서는 항상 두 가지 힘이 서로 잡아당기고 있습니다.
- 초기 지시의 인력: 맨 앞의 지시는 감쇠할지언정 사라지지는 않습니다. 제2회에서 보았듯이, 맨 앞은 어텐션 싱크(attention sink, 닻)이기도 하며 일정한 인력을 계속 유지합니다. 그리고 중요한 점은, 앞서 언급했듯이 "규칙에 대한 지식" 자체는 모델 내에서 무사하다는 것입니다.
- 대화 실례의 인력: 메커니즘 ②의 few-shot 압력. 단, 이 역시 무한히 강해지지는 않습니다. 최근 몇 턴의 실례가 지배적이며, 그보다 오래된 실례의 기여도는 감쇠하기 때문에, 인력은 어느 수준에서 포화(saturation)합니다.
감쇠하면서도 사라지지 않는 지시의 인력과, 증대하면서도 포화하는 실례의 인력. 이 두 가지가 균형을 이루는 위치가 평형점입니다. 모델은 "지정된 상태"에서 "그 대화가 자연스럽게 만들어내는 상태"로 끌려가며, 두 힘이 균형을 이루는 중간 지점에 안착합니다. 스프링에 연결된 채로 끌려가고 있는 상태를 떠올리면 비슷합니다.
이러한 묘사는 해석 가능성 (Interpretability) 연구와도 일치합니다. 최근 연구에 따르면, 모델의 활성 공간 (Activation Space) 내에 '어시스턴트다움'을 관장하는 방향 (페르소나 부분 공간, Persona Subspace)이 존재하며, 드리프트 (Drift)는 이 공간 내에서 지정된 좌표에서 훈련 분포 (Training Distribution)에 더 가까운 좌표로 이동하는 것으로 관측될 수 있다고 보고되었습니다. 망가진 것이 아니라, 공간 내의 다른 장소로 이동하고 있는 것입니다. 그렇기에 올바른 방향으로 힘을 가하면 다시 끌어올 수 있습니다. 이것이 대처법의 이론적인 토대가 됩니다.
여기서 잠시 멈춰 생각해 볼 가치가 있습니다. 이 구조, 기시감이 들지 않나요?
- 제3회: distractor (그럴싸한 쓰레기)에 끌려감
- 제4회: '동의'라는 고보상 (High-reward) 패턴에 끌려감
- 제5회·제6회: 요약할 때마다 '분포의 무게중심 = 전형적인 표현'에 끌려감
- 이번 회차: 대화가 진행될수록 '모델의 본래 행동'에 끌려감
모두 같은 형태를 띠고 있습니다. LLM의 failure mode (실패 모드) 대부분은 파고들면 하나의 원리로 환원할 수 있습니다.
지정된 상태는 모델에게 '자연스러운 상태'가 아닙니다. 외력 (대화·압축·시간)이 가해지면, 더 자연스러운 상태, 즉 훈련 분포의 무게중심으로 미끄러져 내려갑니다.
'간결하게', '경어 없이', '이 형식으로' —— 이 모든 것은 훈련 분포의 관점에서 보면 '굳이 지정된 부자연스러운 제약'입니다. Instruction Drift는 고립된 현상이 아니라, 이 연재에서 반복해서 보아온 '무게중심으로의 회귀'가 시간축 상에서 발현된 것입니다.
메커니즘을 3단계로 분해했으므로, 대처법도 각각의 개입점에 대응시키겠습니다. 다만 제5회에서 배운 교훈 —— '그 대책 자체가 같은 병에 걸려 있지는 않은가'를 반드시 검증할 것 —— 을 이번에도 적용하겠습니다.
대책 ①: 앵커 재주입 (Anchor Re-injection)
가장 효과가 입증된 대책입니다. 대화가 일정 턴(Turn) 진행되면, 최초 지시의 핵심을 재주입합니다.
결정적인 연구 지견이 있습니다. 23개의 프론티어 모델 (Frontier Model)을 대상으로 한 대규모 벤치마크에서, 세션 중간의 '요약에 의한 압축 (Compaction)'으로는 드리프트가 확실히 리셋되지 않지만, '단발성 앵커 (Single-shot anchor)'를 박으면 본래 상태가 복원된다는 사실이 밝혀졌습니다.
왜 요약으로는 돌아오지 않고, 원문 재주입으로는 돌아오는 걸까요? 메커니즘 ②로 설명이 가능합니다. 요약은 생성 태스크 (Generation Task)이므로, 드리프트된 현재의 상태를 경유하여 지시를 '다시 만드는' —— 즉, 드리프트 자체를 요약에 포함하게 됩니다 (제5회·제6회의 '생성을 경유하면 열화된다'는 원칙 그 자체입니다). 반면, 원문 재주입은 생성을 경유하지 않는 기계적인 복사이며, 게다가 말미(Recency)라는 명당(제2회)에, 오염되지 않은 지시의 실례를 다시 배치하는 행위입니다. few-shot 압력의 줄다리기에서 새로운 추를 올바른 쪽에 놓는 이미지입니다.
(대화가 8~10턴 진행된 시점, 또는 드리프트를 감지한 시점에 주입)
【지시 재확인】 이 채팅의 초기 규칙을 원문 그대로 다시 게시합니다.
- {처음에 설정한 핵심 규칙 1을 글자 하나 틀리지 않고 그대로 복사}
...
마지막 두 문장이 중요합니다. 메커니즘 ②에서 설명했듯이, 컨텍스트 (Context)에는 '드리프트된 실례'가 계속 남습니다 (제3회: 삭제 기능은 없음). '실례와 지시가 모순되면 지시가 우선한다'는 우선순위를 명시함으로써, 잔존하는 실례의 인력을 명시적으로 무효화하려는 설계입니다.
단, 부작용이 있습니다. 재주입은 컨텍스트에 텍스트를 쌓아 올리는 행위입니다. 드리프트 → 재주입 → 다시 드리프트 → 다시 재주입……을 반복하면, 컨텍스트에는 '어긋난 실례'와 '지시의 재게시'가 교대로 나열되는 모순된 쌍의 지층이 쌓여가게 됩니다. 이는 제3회의 독 ④ (간섭: 신구 정보의 줄다리기)를 스스로 제조하는 것과 같아서, 재주입을 할 때마다 효과가 떨어지는 (한계 효용 체감) 현상이 예상됩니다. 실무적인 감각으로는 앵커 재주입은 2~3회까지가 적당합니다. 그래도 돌아오지 않거나 금방 재발한다면, 평형점이 깊게 고착화되었다는 신호이므로 후술할 대책 ④ (끊고 이어가기)로 넘어가야 합니다.
참고로, UI에서 과거 메시지를 편집할 수 있는 환경이라면 또 하나의 강력한 선택지가 있습니다. 첫 번째 지시 메시지 자체를 편집하여 강화한 뒤 재전송하는 것입니다. 제3회에서 보았듯이, 이는 이후의 이력 (즉, 드리프트된 실례의 더미)을 물리적으로 삭제한 상태에서, 강화된 지시로부터 다시 시작하는 조작입니다. 쌓아 올리는 것이 아니라 덮어쓰는 것이므로, 모순된 지층 문제가 발생하지 않습니다.
초고에서는 여기서 「규칙을 자기 신고하게 하여 자기 채점하게 한다」는 프로브(Probe)를 제안할 뻔했지만, 이는 제1회에서 물리쳤던 「내성(Introspection)에 대한 의뢰」 그 자체입니다. 앞서 언급했듯이, 드리프트(Drift) 중에도 모델의 「규칙에 대한 지식」은 무사하기 때문에, 자기 신고는 항상 올바르게 돌아옵니다 —— 행동이 어긋나 있더라도 말입니다. 즉, 자기 신고 프로브는 원리적으로 드리프트를 감지할 수 없습니다 (지식을 측정해 버리고, 행동을 측정하지 못하기 때문입니다).
감지는 「행동의 관측」이어야 합니다. 설계를 2단계로 나눕니다.
레벨 1: 기계적으로 체크 가능한 규칙은 기계로 감시한다. 상설 명령의 대부분(경어 금지, 3문장 이내, 코드 블록 필수, 특정 단어 사용 금지)은 사실 출력 텍스트의 표층에서 기계적으로 판정 가능합니다. 「입니다・습니다」가 포함되어 있는지, 문장의 수, 코드 블록 표기법의 유무 —— 이것들은 육안으로도 순식간에 알 수 있고, API나 봇을 경유한다면 정규 표현식 하나로 체크할 수 있습니다. 제5회의 원칙인 「생성보다 기계적 조작」의 감지 버전입니다. 모델에게 묻지 않고, 출력을 직접 측정한다.
레벨 2: 기계화할 수 없는 규칙(톤, 입도 등)은 클린한 별도 세션에 판정하게 한다. 드리프트된 본인에게 자기 채점을 시키는 것이 아니라, 제3회의 「부패한 요약은 클린한 새 세션에서 감사한다」와 같은 구조를 사용합니다.
(별도의 신규 채팅에서 실행)
이하는 어떤 AI 어시스턴트에게 주어진 규칙과, 최근의 응답 3건입니다.
【규칙(원문)】
...
판정자는 이 대화의 실례 축적(few-shot 압력)을 전혀 받지 않기 때문에, 드리프트에 끌려가지 않고 판정할 수 있습니다. 제4회에서 배웠듯이 「비판해줘」라는 의뢰 자체가 퍼포먼스 비판을 낳을 리스크가 있기 때문에, 총평을 금지하고 규칙 단위의 ◯✕ + 원문 인용을 강제하는 설계로 하고 있습니다.
메커니즘을 알게 되면, 예방은 「드리프트를 일으키는 힘을 처음부터 올바른 방향으로 사용하는」 설계가 됩니다.
예방 1: 부정형을 긍정형으로 바꿔 쓴다. 「경어를 쓰지 마라」 → 「문어체(だ・である 조)로 쓴다」. 「불렛 포인트로 작성하지 마라」 → 「줄글 단락으로 쓴다」. 금지 대상 토큰을 지시에서 지우고, 목표 상태를 직접 기술합니다. 부정 처리의 취약함과 「코끼리를 생각하지 마라」 문제를 쓰는 방식만으로 회피할 수 있습니다.
예방 2: 제약에 이유를 붙인다. 「문어체로 쓴다」보다 「독자는 젊은 엔지니어이며, 딱딱한 문체라면 읽히지 않기 때문에 문어체로 쓴다」. 이유가 있으면 훈련 분포 내에서 「그 행동이 자연스러워지는 문맥」이 형성되어, 제약이 "외부에서 강요된 부자연스러운 규칙"에서 "이 상황에서의 자연스러운 선택"으로 변합니다. 중점으로의 회귀 그 자체를 약화시키는, 근본에 가까운 예방입니다.
예방 3: few-shot으로 선수를 친다 —— 독을 약으로 바꾼다. 드리프트의 엔진이 「실례는 지시보다 강하다」라면, 처음부터 올바른 실례를 컨텍스트에 두면 됩니다. 초기 지시에 원하는 문체·형식의 출력 실례를 1~2개 첨부합니다 (제6회의 「언어화할 수 없는 것은 실례로 전달한다」와 같은 조작입니다). 이를 통해 대화 초반부터 「올바른 행동의 실례」가 추(weight)로서 존재하게 되어, 작은 일탈이 발생하더라도 줄다리기의 초기 배치가 지시 측에 유리해집니다. 드리프트를 구동하는 힘과 같은 힘을 방어에 전용하는 것입니다.
예방 4: 봇·GPT 배포 시에는 자기 앵커링(Self-anchoring)을 심는다 (제8회와의 연결). 장시간 대화에 사용되는 봇이라면, 시스템 프롬프트 말미에 「매번 응답 직전에, 위의 핵심 규칙을 내부적으로 재확인한 후 생성한다」라는 지시를 포함합니다. 완벽하지는 않지만, 턴마다의 미세한 되돌리기를 자동화할 수 있습니다. 참고로 멘션 배포 봇(제8회)은 매번 짧은 세션으로 호출되기 때문에, 아이러니하게도 드리프트에는 강하다는 부차적인 장점이 있습니다.
앵커 재주입을 2~3회 시도해도 돌아오지 않거나 바로 재발하는 경우, 컨텍스트는 「어긋난 실례의 물량」으로 평형점이 깊게 고정된 상태입니다. 여기서부터는 제3회·제5회의 합동 기술로 이행합니다. 채팅을 끊고, 「확정된 성과물 + 초기 지시의 원문 + 올바른 출력의 실례(예방 3)」만을 신규 채팅으로 가져옵니다. 드리프트된 실례의 산(few-shot 압력의 발생원)을 물리적으로 버릴 수 있는 것은 이 조작뿐입니다.
경도 (12개 규칙이 가끔 어긋남): 대책 ①의 앵커 재주입 -3회 -
중도 (복수의 규칙이 항시적으로 어긋남): 대책 ②로 감지 메커니즘을 돌리면서, ①을 상한 2
중증 (재주입해도 몇 턴 만에 재발): 대책 ④. 끊고, 초기 상태 + 정례(Positive example)만 가지고 재출발
여기까지 읽으면 이런 생각이 들 것입니다. 「애초에 처음에 모델 본인에게 『너는 몇 턴 만에 지시를 잊기 쉬워? 어떤 지시를 어려워해?』라고 사양(Specification)을 물어봐 두면, 미리 대비할 수 있지 않을까」 —— 자연스러운 발상이지만, 이 연재에서 쌓아온 원리에 따르면 이는 「효과가 없다」고 예언합니다. 이유는 세 가지입니다.
이유 ①: 모델은 자신의 사양을 모른다. 모델의 가중치(Weight) 안에 「자신의 사양서」는 들어있지 않습니다. 돌아오는 답변은 훈련 데이터에 포함되어 있던 「LLM 일반에 관한 기사나 논문」으로부터 생성된, 그럴싸한 자기 묘사입니다. 「나는 긴 대화에서도 일관성을 유지하도록 설계되었습니다」(훈련된 모범 답안) 혹은 「일반적으로 LLM은 ~라는 경향이 있습니다」(일반론의 재생) 중 하나일 뿐, 그 모델 개체의 실측값이 아닙니다. 제6회에서 확립한 바와 같이, 모델은 어텐션(Attention) 속에서 무엇이 일어나고 있는지를 스스로 관측할 수 없습니다. 「자신의 사양을 설명할 수 있는 것」과 「그 사양대로 행동하는 것」은 별개의 문제입니다. 사양의 자기 신고(Self-declaration)야말로, 제1회의 포초킨(Potemkin) 이해가 발생하는 최전선입니다.
이유 ②: 설령 정확하더라도, 「지식」은 「행동」을 바꾸지 않는다. 이번의 가장 중요한 관측을 떠올려 보십시오. 드리프트(Drift) 중에도 모델의 「규칙에 대한 지식」은 무사했습니다. 「너는 10턴 만에 드리프트하기 쉽다」라는 지식을 서두에 주입하더라도, 그 지식은 드리프트를 멈추지 못합니다. 드리프트는 지식의 결여가 아니라, 퓨샷 압력(Few-shot pressure)이라는 역학에 의해 발생하기 때문입니다. 「자신이 잘 잊어버린다는 것을 아는 사람」이 잊어버리지 않게 되는 것이 아닌 것과 마찬가지로, 사양의 파악은 진단 정보일 뿐 치료법이 아닙니다.
이유 ③: 「사양을 물은 답변」 자체가 영합(Sycophancy)의 영향 아래 있다. 「너의 약점은?」이라는 질문을 받은 모델은, 「약점을 솔직하게 말하는 성실한 AI」라는 사용자의 기대에 영합하는 퍼포먼스를 보여줄 수 있습니다 (제4회의 메타 영합). 그리고 그 자기 신고의 정확성을 질문자가 검증할 수단은 없습니다. 제2회의 체크포인트 게임화부터 제9회의 자기 신고 프로브(Probe) 무효론까지, 결론은 일관됩니다 —— 「본인에게 묻는」 계열의 대책은, 들은 내용 자체가 생성물인 한 동일한 병을 계승한다.
다음에 떠올릴 법한 생각은, 「본인이 안 된다면, 같은 시리즈의 다른 모델(예: Claude Fable의 사양을 Claude Opus에게 묻기)이라면 어떨까」입니다. 제4회에서 「영합의 검증에는 타사 모델이 유효하다」고 했으므로, 그 응용처럼 보입니다. 하지만 이 역시 통하지 않습니다. 게다가 이유는 제4회와는 반대 방향입니다.
알 수 있는 수단이 애초에 없다. 다른 모델의 훈련 데이터에 들어가는 것은 공개된 블로그 기사나 모델 카드(Model Card) 정도입니다. 「몇 턴 만에 드리프트하는가」와 같은 내부 동작의 실측 데이터는 개발사 자신도 모델의 가중치에 넣지 않습니다 (릴리스 전 모델의 동작 프로파일은 훈련 데이터에 존재할 수 없습니다). 돌아오는 답변은 공개 정보의 재생이거나, 「같은 시리즈라면 이럴 것이다」라는 유추 혹은 그럴싸한 창작입니다. 제5회에서 보았듯이, 근거가 전달되지 않더라도 그럴싸한 답변의 분포는 만들어낼 수 있습니다 —— 환각(Hallucination) 로직의 발생 조건 그 자체입니다.
「같은 회사」는 여기에서 독립성이 아니라 공통의 맹점으로 작용한다. 제4회에서 타사 모델이 유효했던 이유는 영합이 각 사의 독립적인 훈련 파이프라인의 산물이며, 오차가 무상관(Uncorrelated)이었기 때문입니다. 하지만 이번 목적은 검증이 아니라 「특정 모델의 내부 사양 파악」입니다. 동일 시리즈의 모델은 훈련 데이터와 설계 사상을 공유하기 때문에, 돌아오는 답변은 알고 싶은 모델 고유의 버릇을 시리즈 공통의 일반론으로 덧칠한 것이 됩니다. 비슷할수록 그럴싸함이 올라가서 틀렸음을 알아차리기 어렵습니다 —— 제3회의 디스트랙터(Distractor)와 마찬가지로, 「가깝지만 다른 것」이 가장 위험합니다.
| 발상 | 무엇이 문제인가 |
|---|---|
| 본인에게 묻기 | 내성 불가능 + 영합 + 포초킨 |
| ... |
질문의 대상을 아무리 바꿔도 해결되지 않습니다. 움직여야 할 축은 「묻는 것」을 「측정하는 것」으로 바꾸는 것입니다. 그리고 이 발상의 핵심에 있는 직관 —— 「사용하기 전에 그 모델의 특성을 파악해 두어야 한다」 —— 자체는 완전히 옳으며, 실측으로 전환하는 순간 이 연재에서 해온 것들의 집대성이 됩니다.
- 제4회의 카나리아(Canary): 해당 모델의 영합 강도를 실측하여 프로파일화
- 제6회의 어블레이션(Ablation): 어떤 지시가 효과적인지 실측
- 제7회의 골든 태스크(Golden Task): 열화를 정점 실측
- 제9회의 기계 체크(Machine Check): 드리프트 발생 턴을 실측
「이 모델은 몇 턴 만에 상체(常体, 반말/평어) 지시가 무너지기 시작하는가」라는 질문을 던지면 일반론적인 답변만 돌아올 뿐이지만, 동일한 상설 명령을 주고 긴 작업을 수행하게 한 뒤, 기계 체크(Machine Check)를 통해 무너진 턴을 기록하면 실측값을 얻을 수 있습니다. 이를 제7회 PROJECT_META.md에 「실측 프로파일: 상체 지시는 평균 12턴에서 무너지기 시작함 → 10턴째에 앵커 재주입(Anchor Re-injection)을 규칙화」라고 적어 넣어야 비로소 대책으로서 기능합니다.
모델의 사양서는 제조사에게도, 모델 본인에게도 물어볼 수 없습니다. 사용하는 측이 실측하여 스스로 작성하는 것입니다.
참고로, 다른 모델이 정말로 도움이 되는 상황이 딱 하나 있습니다. 바로 「측정」 공정의 도구로 사용하는 경우입니다. 대책 ②인 「클린한 별도 세션 판정」을 확장하여, 대상 모델의 출력 로그를 다른 모델에게 전달하고 드리프트(Drift) 발생 턴을 판정하게 하는 방식입니다. 이는 다른 모델의 「지식」이 아닌 「독해력」을 사용하는 조작이므로 내성 문제(Introspection Problem)를 겪지 않습니다. 측정 대상과 측정기를 분리한다는 측정의 기본 원칙에도 부합합니다.
- Instruction Drift는 8~12턴 사이에 지시 준수율이 30% 이상 저하되는 현상. 피해는
상설 명령(매 턴 적용이 필요한 지시)에 집중되며, 준수율이 98%라 하더라도 20턴 동안 사고가 없을 확률은 약 67%까지 복리로 깎임 - 부정형 지시(~하지 마라)와 모델의 본성에 거스르는 지시가 특히 취약함. 부정형은 금지 대상인 토큰 자체가 패턴을 활성화해 버림 - 제3회의 Context Rot과는 별개의 현상.
**같은 길이의 대본 대화에서는 드리프트가 제로(0)**라는 대조 실험을 통해, 원인이 「길이」가 아니라 「대화의 상호작용」임을 증명함 - 엔진은 **「대화 이력 = 증식하는 few-shot 예시」**로 인식. **실례(Example)는 지시보다 강력하기 때문에, 한 번의 작은 일탈이 실례로 자리 잡으며 다음 일탈을 부르는 자기 강화 루프(Self-reinforcing loop)**가 됨. in-context learning의 강력함 그 자체가 드리프트의 동력 - 단, 무한히 악화되지는 않음.
지시의 인력(감쇠하지만 사라지지 않음)과 실례의 인력(증대하지만 포화함)이 균형을 이루는 평형점에 안착함. 망가진 것이 아니라 '다른 곳으로 이동했을' 뿐이므로 다시 끌어올 수 있음 - 본질은 연재를 관통하는 「중심으로의 회귀」의 시간축 버전. 지정된 제약은 부자연스럽기 때문에 외력이 가해지면 자연스러운 상태로 미끄러져 내려감. - 대처:
앵커 재주입(요약이 아닌 원문. 실례보다 지시가 우위에 있음을 명시. 단, 모순의 지층이 쌓이므로 2~3회가 한계. UI 편집을 통한 쓰기라면 지층 문제 없음), 탐지는 자기 보고가 아닌 행동의 관측(기계 체크 + 클린한 별도 세션 판정. 지식은 무사하므로 자기 보고는 원리적으로 무효), 예방은 역학의 역이용(긍정형화, 이유 부여, 정례(Positive) few-shot 사전 배치), 심각할 경우 끊어내고 정례와 함께 계승 - 「모델에게 사양을 묻는 것」은 본인에게도 다른 모델에게도 효과가 없음(내성 불가능, 지식은 행동을 바꾸지 않음, 알 방법이 없음).
모델의 사양서는 사용하는 측이 실측하여 스스로 작성하는 것. 다른 모델은 「지식원」이 아니라 「측정기」로서라면 유효
드디어 다음 회는 최종회입니다. 지금까지 9회에 걸쳐 살펴본 개별적인 특성들을 바탕으로, AI의 결과물을 어떻게 신뢰하고 어떻게 품질을 보증할 것인가라는 종합 편, AI 결과물의 품질 보증을 다룹니다. 연재의 집대성입니다 👀
- Li, K., et al. (2024). Measuring and Controlling Instruction (In)Stability in Language Model Dialogs. arXiv:2402.10962
- Drift No More? Context Equilibria in Multi-Turn LLM Interactions(2025). arXiv:2510.07777
- Ding, et al. (2026). ContextEcho: Persona Drift in Long Agentic-Coding Sessions (23개 모델, single-shot anchor vs compaction). arXiv:2605.24279
- LLM 기반 대화 시뮬레이션 연구 (대본 대화 vs 자유 대화 대조 실험). arXiv:2605.06307
- Laban, P., et al. (2025). LLMs Get Lost in Multi-Turn Conversation (15개 모델, 평균 39% 저하)
- 페르소나 부분 공간 및 활성화 방향에 관한 해석 가능성(Interpretability) 연구 (2026)
AI 자동 생성 콘텐츠
본 콘텐츠는 Qiita AI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기