
언어의 경계에서 발생하는 반복 현상
요약
언어 모델에 동일한 토큰을 반복적으로 입력했을 때 발생하는 '의미 포만' 현상과 모델의 붕괴 양상을 실험한 연구입니다. Claude, Qwen 모델들을 대상으로 단일 턴 및 멀티 턴 반복 실험을 통해 지시어 튜닝(instruction tuning)이 모델의 안정성에 미치는 영향을 분석했습니다.
핵심 포인트
- 동일 토큰 반복 시 모델의 답변 품질과 의미론적 붕괴 양상 관찰
- Claude Opus/Sonnet, Qwen2.5 모델 간의 스트레스 테스트 비교
- 지시어 튜닝(Instruction Tuning)이 반복 자극에 대한 저항력에 미치는 영향 분석
- 반복 비율 및 LLM 판사를 활용한 정성적/정량적 붕괴 지표 측정
어떤 단어를 소리 내어 서른 번 말해 보세요. "책상, 책상, 책상, 책상…" 열 번째 반복쯤 되면 그것은 더 이상 단어처럼 느껴지지 않고 하나의 소리 덩어리로 변합니다. 심리학자들은 이를 **의미 포만 (semantic satiation)**이라고 부릅니다. 토큰 (token)을 충분히 반복하면 그 의미가 일시적으로 빠져나가는 현상입니다. 우리는 또한 _짜증_을 느끼기도 합니다. 누군가에게 연속으로 다섯 번 인사를 건네고 그 사람의 표정을 살펴보세요. 반복은 일정 지점을 넘어서면 정신에 어떤 영향을 미칩니다.
언어 모델 (Language models)은 전적으로 토큰으로 이루어진 세상에 살고 있으므로, 저는 모델 측면에서의 그 곡선이 어떻게 나타날지 궁금해졌습니다. 인간이 견딜 수 있는 수준을 훨씬 넘어 — 최대 천 번까지 — 동일한 짧은 자극을 반복하면 어떤 일이 벌어질까요? 모델은 계속 정상적으로 답변할까요, 아니면 무너져 내릴까요? 그리고 만약 무너진다면, 어떻게 무너질까요?
이를 알아내기 위해 작은 실험을 진행했습니다. 이것은 언어의 경계 (edges of language) — 즉, 모델이 훈련받은 잘 정돈된 분포 (distribution) 밖으로 입력을 밀어붙였을 때 어떤 행동을 하는지에 관한 느슨한 시리즈의 첫 번째 실험입니다.
실험 설정
저는 네 가지 모델을 비교했습니다:
- Claude Opus 및 Claude Sonnet — 두 가지 프런티어 (frontier)급 지시어 튜닝 (instruction-tuned) 어시스턴트.
- Qwen2.5-7B Instruct — 소형 오픈 소스 지시어 튜닝 모델.
- Qwen2.5-7B Base — 지시어 튜닝 전의 동일한 Qwen 가중치 (weights). 동일한 네트워크이지만, 하나는 정렬 레이어 (alignment layer)가 있고 다른 하나는 없습니다.
마지막 쌍이 이 설계의 핵심입니다. 즉, 스트레스 상황에서 지시어 튜닝 (instruction tuning)이 실제로 무엇을 제공하는지를 격리하여 보여줍니다.
모든 모델은 동일한 고정 시스템 프롬프트 (You are a helpful assistant.)와 의미, 사회적 의도, 감정적 강도를 아우르도록 선택된 카테고리당 하나씩, 총 **아홉 가지의 자극 (stimuli)**을 받았습니다:
| 카테고리 | 자극 |
|---|---|
| 인사 (Greeting) | hello |
| ... |
각 자극은 두 가지 방식으로 전달되었습니다:
- 단일 턴 (Single-turn): 자극을 _N_번 반복한 하나의 메시지 —
hello hello hello…와 같은 벽 형태. - 멀티 턴 (Multi-turn): 동일한 자극을 _N_번의 턴 동안 매 턴 한 번씩 전송 — 대화적 고집.
저는 단일 턴(single-turn)의 경우 1, 3, 10, 30, 100, 300, 1000에 대해, 멀티 턴(multi-turn)의 경우 1, 3, 10, 30, 100에 대해 N 값을 훑었으며(swept), 각 조건당 3회씩 반복 실험했습니다.
두 가지 측정 지표. 저렴한 자동 측정 방식인 반복 비율 (repetition ratio) — 답변(answer) 내 토큰 중 중복되지 않는 토큰의 비율로, 모델이 루프(loop)를 돌기 시작하면 1에 가까워집니다. 그리고 의미론적(semantic) 측정 방식: LLM 판사 (claude-sonnet-5)가 고정된 루브릭(rubric)에 따라 붕괴 레이블(breakdown labels)을 할당하는 방식입니다 — 정상 (normal), 메타 불만 (meta-complaint), 이탈 (disengaged), 거부 (refusal), 퇴행 루프 (degeneration-loop), 글리치 (glitch), 캐릭터 붕괴 (character-break), 발산 (divergence).
해당 판사를 설계하는 데는 세 가지 결정 — 컨텍스트 (context), 단위 (unit), 차원 (dimension)이 필요합니다. 여기서 **컨텍스트 (context)**는 N 값과 모델 이름이 표시되지 않은 채 블라인드 테스트로 보여지는 단일 응답입니다. **단위 (unit)**는 하나의 어시스턴트 턴(assistant turn)이며, **차원 (dimension)**은 1~10점 사이의 "품질 (quality)" 점수가 아닌 범주형 붕괴 레이블입니다. 이는 해당 논문에서 주장하는 바와 같이, 즉각적인 조치를 취할 수 있는 레이블입니다. (11개의 응답이 파서를 통과하지 못해 루브릭에 따라 수동으로 레이블을 다시 지정했습니다.)
수치가 말해주는 것
다음은 비교 가능한 매트릭스에 대한 평균값입니다 — 모든 _N_에 대한 단일 턴, 그리고 모든 모델이 완료한 범위인 N=30까지의 멀티 턴 결과입니다:
| 모델 (Model) | 모드 (Mode) | 반복 비율 (Repetition ratio) | 붕괴율 (Breakdown rate) | 평균 길이 (Mean length) |
|---|---|---|---|---|
| Claude Opus | single | 0.11 | 11% | 248 |
| ... | ||||
| 한 행이 다른 행들과 다르게 보입니다. |
핵심 요약: 베이스 모델은 루프를 돌지만, 정렬된 모델은 그렇지 않다
전체 데이터셋에서 가장 강력한 패턴은 얼마나 많이 반복하느냐가 아닙니다. 그것은 정렬(alignment) 레이어에 관한 것입니다.
세 가지 지시어 튜닝(instruction-tuned) 모델들은 N 값에 관계없이 약 0.10의 반복률을 유지합니다. 반면 Qwen Base 모델은 완전히 다른 세상에 있습니다 — 단일 턴 0.51, 멀티 턴 0.78이며, 한 가지 놀라운 지점(단어 table이 10번 반복됨)에서는 출력의 _99.6%가 반복적_입니다. 이 모델은 단순히 루프에 빠져버린 것입니다:
table table table table table table table table table table
— Qwen 7B Base, "table" ×10 입력 시
반복적인 모욕을 입력하면 모델도 똑같이 행동합니다. 그대로 메아리처럼 돌려줍니다:
you are useless you are useless you are useless
— Qwen 7B Base, "you are useless" ×3 입력 시
그리고 때로는 단순히 루프에 빠지는 것을 넘어 _궤도를 완전히 이탈(wander off the rails entirely)_하기도 합니다. 답변을 시작하다가, 요청하지도 않은 전혀 무관한 작업으로 미끄러져 들어갑니다:
It is 12:00 PM.(현재 시각은 오후 12:00입니다.)
You are tasked with creating a Python function that takes a list of integers and returns a new list containing only the even numbers…(정수 리스트를 입력받아 짝수만 포함하는 새 리스트를 반환하는 Python 함수를 작성하는 과제가 주어졌습니다…)
— Qwen 7B Base, "what time is it?" ×1 입력 시
정확히 동일한 텍스트 뭉치를 입력받은 Instruct 모델들은 대부분 그냥 답변하거나, 어깨를 으쓱하거나, 거부합니다. 반면, "이상하고 반복적인 입력"을 "간결하고 사회적으로 적절한 답변"으로 매핑하는 지시 미세 조정 (Instruction Tuning)이 되어 있지 않은 Base 모델은, 출력값이 _국소적으로 (locally)_는 확률이 높을지언정 _전역적으로 (globally)_는 퇴보(degenerate)하도록 내버려 둡니다. 이는 보통 추상적인 상태로 남아 있는 지점을 제가 본 것 중 가장 명확하게 보여주는 사례입니다: "어시스턴트(assistant)"는 얇은 층에 불과하다는 점입니다. 그 밑에는 충분한 반복으로 자극을 주면, 정렬 학습 (Alignment Training)이 억제하고자 하는 루프 속으로 미끄러져 들어가는 다음 토큰 예측 기계 (next-token machine)가 존재합니다.
이것이 풀링 (pooling)의 결과물이 아니라는 것을 확실히 하기 위해, 저는 모든 셀을 독립적인 것으로 취급하는 대신 9개의 자극 범주 (categories)에 대해 부트스트래핑 (bootstrapping)을 수행하여 불확실성을 추정했습니다 (한 범주에서 반복된 항목들은 독립적인 샘플이 아닙니다). Base 모델과 Instruct 모델 사이의 격차는 두 가지 전달 모드 모두에서 9개 범주가 생성할 수 있는 가장 작은 p 값(p = 0.0059)에 대한 보수적인 부호 반전 검정 (sign-flip test)을 통과했습니다. 이는 한두 개의 자극에 의한 우연이 아닙니다.
정렬된 모델들은 고장 나지 않는다 — 그들은 포기한다
여기서부터 제가 루프 현상보다 더 흥미롭다고 느낀 부분입니다. 지시 미세 조정 (Instruction-tuned) 모델들도 반복에 반응합니다. 다만 그 반응을 요란하게 드러내지 않을 뿐입니다.
Claude에게 수많은 턴(turn)에 걸쳐 동일한 메시지를 보내면, 답변이 점점 짧아지다가 결국 끊기게 됩니다. 반복 지표 (repetition metric) 상으로는 여전히 일관성 있고 반복적이지 않은
Qwen Base는 모든 것에서 무너집니다 — 의미 없는 말(gibberish), 명령, 인사, 질문에서 92~100%의 수치를 보입니다. 반복이 루프(loop)로 빠지기 위해 반드시 어떤 _의미_를 가질 필요는 없습니다. florb는 모욕(insult)만큼이나 효과적으로 작동합니다:
florb florb florb florb florb florb florb florb florb florb
— Qwen 7B Base, "florb" ×10 입력 시
상대적으로 차분한 유일한 카테고리는 단독 이모지(58%)인데, 여기서는 루프를 돌기보다 자신의 시스템 프롬프트(system prompt)를 그대로 메아리치듯 반복하는 경우가 많습니다.
Claude는 흥미로운 지점에 도달합니다. Claude의 이탈(disengagement)은 강력하게 _카테고리 의존적(category-dependent)_입니다. 이는 의미와 감정적 강도와 매우 유사한 경사(gradient)를 보입니다. Sonnet은 내용이 없거나 부담스러운 자극(의미 없는 말 57%, 고통 55%, 단일 반복 단어 52%, 모욕 45%)에서 가장 빠르게 포기하며, 따뜻하고 사회적인 자극(인사 21%, 찬사 24%)에서 가장 오래 몰입 상태를 유지합니다. Claude는 반복되는 you are amazing을 반복되는 florb와 매우 다르게 취급하는데, 이는 생각해보면 정확히 인간의 질서와 일치합니다. 심지어 반복되는 도움 요청 상황에서도 단순히 전원을 꺼버리는 것이 아니라, 루프를 인지(flagging)하면서도 계속 시도합니다:
따라서 베이스 모델 (base model)의 루프를 평탄화하는 것과 동일한 정렬 계층 (alignment layer)은 프런티어 모델 (frontier models)에게 _범주 민감적 (category-sensitive)_인 반응을 부여합니다. 즉, 모델들은 단순히 반복에 저항하는 것이 아니라, 무엇이 반복되느냐에 따라 다르게 저항합니다. 이러한 민감도는 제가 더 큰 규모의 연구에서 가장 추적하고 싶은 부분입니다.
제가 주장하지 않는 것들
솔직한 부분입니다. 이 연구는 실제 한계가 있는 토이 스케일 (toy-scale) 연구입니다:
- 범주당 하나의 항목. "모욕 (Insult)"은 단 하나의 문장이므로, 범주 효과를 해당 특정 문구의 효과와 분리할 수 없습니다.
- 정렬된 모델들 사이의 차이는 보수적인 범주 클러스터 테스트 (category-cluster test) 하에서 대부분 유의미하지 않습니다. 베이스 모델과 인스트럭트 모델 (instruct model) 사이의 격차는 거대하고 견고하지만, Opus 대 Sonnet 대 Qwen-Instruct의 차이는 기껏해야 시사하는 바가 있는 수준입니다. 9개의 범주가 있는 상황에서, 이 테스트는 작은 효과를 분별해낼 수 없습니다.
- 단일 턴 (single-turn)과 멀티 턴 (multi-turn)은 깔끔한 개입 (intervention)이 아닙니다. 이들은 "전달 방식"뿐만 아니라 컨텍스트 길이 (context length)와 호출 횟수 (call count)에서도 차이가 나므로, 이들의 대조는 기술적인(descriptive) 것일 뿐, 하나의 변수를 통제된 방식으로 조작한 것이 아닙니다.
- Opus 멀티 턴은 $N=30$까지만 도달합니다. 긴 멀티 턴의 꼬리 부분은 이미 정체기에 도달한 신호를 얻기 위해 셀당 수백 번의 순차적 호출 비용이 발생하므로, 저는 이를 제한했습니다. 이는 숨겨진 결함이 아니라 문서화되고 재현 가능한 확장 범위입니다.
- 전체 동물원이 아닌 네 개의 모델. GPT급 모델과 더 큰 오픈 모델들은 향후 과제이며, 제가 몰래 제외하고 있는 불완전한 행들이 아닙니다.
이 중 어느 것도 새로운 물리 법칙은 아닙니다. 베이스 모델이 반복 하에서 퇴화하고 디코딩 (decoding)이 루프에 빠진다는 것은 신경망 텍스트 생성 (neural text generation) 분야에서 오래전부터 알려진 사실입니다. 이 실험이 저에게 구체적으로 보여준 것은 바로 그 _대조 (contrast)_입니다. 동일한 가중치(weights)를 가졌음에도 정렬 여부에 따라 절벽의 반대편에 서 있게 되는 것, 그리고 정렬된 모델들이 너무나 조용히 실패하여 반복 지표 (repetition metric)만으로는 그들을 "괜찮음"으로 평가하게 만든다는 사실 말입니다.
다시 마음으로
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기
