상위: 05_00_MOC


컨텍스트 부패의 발생 메커니즘 — 어텐션 구조적 한계와 인지 부하

컨텍스트 부패(Context Rot)는 단순히 “입력이 길어서 느려지는” 문제가 아니다. 과제 난이도를 똑같이 통제한 조건에서도 입력이 길어질수록 성능이 비균질적으로(non-uniformly) 무너지는 구조적 실패다. 이 노트는 그 실패가 왜 발생하는지를 다섯 가지 메커니즘으로 나눠 들여다본다.


0. 왜 메커니즘을 알아야 하는가

컨텍스트 부패의 실무적 처방(처방·컨텍스트 부패 대응전략)은 증상 완화에 그치기 쉽다. 근본 메커니즘을 이해해야 비로소 다음이 가능해진다.

  • 처방의 한계를 정확히 예측한다. 어떤 조건에서 어떤 완화 전략이 듣지 않는지 가린다.
  • 새로운 아키텍처 변화를 평가한다. “1M 토큰 지원” 같은 변화가 부패를 실제로 해소하는지 판별한다.
  • 벤치마크를 제대로 해석한다. NIAH 만점이 왜 실제 능력과 어긋나는지 설명한다.

아래 다섯 메커니즘은 서로 독립적이지 않다. 실제 장문 컨텍스트에서는 여러 겹으로 작동하며 서로를 악화시킨다.


메커니즘 1 — 어텐션 헤드의 구조적 한계: 리터럴 매칭 부재 시 신호 희석

핵심 개념: Induction Head

트랜스포머 어텐션의 일부 헤드는 induction head로 기능한다(Olsson et al., 2022). Induction head는 다음 패턴을 구현한다.

[A][B] ... [A] → [B]

앞서 나온 토큰 쌍을 기억해 두었다가 같은 첫 토큰이 다시 등장하면 두 번째 토큰을 예측하는 식이다. in-context learning을 떠받치는 핵심 메커니즘의 하나로 꼽힌다.

“Induction heads implement a simple algorithm to complete token sequences like [A][B] … [A] → [B].” — Olsson et al. (2022), “In-context learning and induction heads”

이 기제의 핵심 전제는 표면적 반복, 곧 리터럴 매칭(literal/lexical match)이다. 질문과 답변이 어휘 수준에서 같은 단어를 공유할 때 induction head는 제대로 작동한다.

NoLiMa의 발견: 리터럴 매칭 없으면 신호가 희석된다

NoLiMa(Non-Literal Matching) 벤치마크(Modarressi et al., ICML 2025, arXiv:2502.05167)는 바로 이 전제를 정면으로 겨냥해 설계됐다.

설계 원칙은 이렇다.

  • 질문-답변 쌍의 ROUGE R-1 점수가 0.069로, 어휘 중복이 사실상 없다.
  • 기존 NIAH는 0.905, RULER는 0.809로 대비된다.
  • 모델이 오직 의미적 연상(semantic association)으로만 needle을 찾도록 구성했다.
graph LR
    A["NIAH<br/>ROUGE-R1: 0.905<br/>리터럴 매칭 높음"] -->|"벤치마크 포화<br/>거의 만점"| B["SOTA 모델들"]
    C["NoLiMa<br/>ROUGE-R1: 0.069<br/>의미 연상 필요"] -->|"32K에서<br/>11/13 모델 ≤50%"| B
    D["RULER<br/>ROUGE-R1: 0.809<br/>중간"] -->|"32K+ 17모델 중<br/>절반만 유지"| B

결과(Table 3, 13개 모델, 32K 토큰):

모델단기 기준(base)32K 성능하락율
GPT-4o99.3%69.7%-29.6%p
Claude 3.5 Sonnet87.5%29.8%-57.7%p
Llama 3.3 70B97.3%42.7%-54.6%p
Llama 3.1 405B94.7%38.0%-56.7%p
Command R+90.9%7.4%-83.5%p
GPT-4.1 (1M 지원)97.0%79.8%-17.2%p
Gemini 2.0 Flash16.4%(128K)극단적 하락

13개 모델 가운데 11개가 32K에서 base score의 절반 이하로 떨어졌다.

“Our analysis suggests these declines stem from the increased difficulty the attention mechanism faces in longer contexts when literal matches are absent, making it harder to retrieve relevant information.” — Modarressi et al. (2025)

메커니즘 요약

리터럴 매칭이 없으면 다음 일이 벌어진다. 쿼리 벡터(Q)는 키 벡터(K)와 의미적으로만 연관된 needle 토큰을 찾아내야 한다. 그런데 컨텍스트가 길어질수록 무관한 토큰들이 attention score를 흩뜨리고, 의미는 비슷하되 정답이 아닌 토큰이 오히려 더 높은 어텐션 점수를 받기도 한다. 그 결과 정작 needle의 신호는 희석(dilution)된다.

이것이 단순히 “어렵기 때문”이 아니라 구조적 실패인 까닭은 분명하다. 짧은 컨텍스트라면 같은 모델이 같은 과제를 무난히 처리한다. 길이가 늘어난다는 사실 자체가 어텐션 분포를 왜곡하는 것이다.


메커니즘 2 — U자형 위치 편향: 중간이 사라진다

Lost in the Middle 현상

Liu et al.(2024, TACL 2024, arXiv:2307.03172)은 “Lost in the Middle” 연구에서 관련 정보의 위치가 성능을 결정적으로 좌우한다는 사실을 체계화했다.

graph TD
    A["컨텍스트 시작부"] --> B["높은 성능<br/>(Primacy Bias)"]
    C["컨텍스트 중간부"] --> D["최저 성능<br/>급격한 하락"]
    E["컨텍스트 끝부분"] --> F["높은 성능<br/>(Recency Bias)"]
    B --> G["U자형 곡선"]
    D --> G
    F --> G

핵심 패턴은 세 갈래다.

  • Primacy Bias(초두 편향): 입력 앞쪽 정보에 가중치가 과도하게 실린다.
  • Recency Bias(최신 편향): 입력 끝쪽 정보에 가중치가 과도하게 실린다.
  • 중간 위치 성능 급락: GPT-3.5-Turbo, Llama, MPT-30B 모두에서 확인됐다.

“Performance is often highest when relevant information occurs at the beginning or end of the input context, and significantly degrades when models must access relevant information in the middle.” — Liu et al. (2023)

실험 과제는 멀티문서 질의응답(multi-document question answering)과 키-값 검색(key-value retrieval) 두 가지였고, 검증 모델은 GPT-3.5-Turbo, Llama 1/2, MPT-30B였다.

어텐션 아키텍처의 관점

U자형이 왜 생기는지에 대해서는 대체로 세 갈래의 해석이 통용된다.

  • 위치 인코딩의 특성. RoPE(Rotary Position Embedding) 같은 인코딩은 가까운 위치끼리의 관계를 강화하는 경향이 있다. 그래서 시작과 끝은 각각 “앞쪽 전부”와 “뒤쪽 전부”에 어텐션으로 닿기에 구조적으로 유리하다.
  • KV 캐시 접근 패턴. 추론 최적화 구현 상당수가 최근 토큰(끝부분)에 더 빠르게 접근한다.
  • Primacy의 근거. 첫 토큰들은 이후 모든 레이어에서 어텐션을 받으며 표현이 차곡차곡 정제된다.

실무적 함의

이 메커니즘이 처방·컨텍스트 부패 대응전략에서 말하는 위치 설계 원칙의 근거다. 중요한 지시(시스템 프롬프트)는 앞에 두고, RAG 검색 결과는 프롬프트 직전(끝부분)에 붙이며, 핵심 정보를 긴 컨텍스트의 한가운데에 묻어서는 안 된다.


메커니즘 3 — 길이 자체가 병목: 완벽한 검색에서도 저하가 지속된다

Du et al. (2025)의 실증

가장 강력한 증거는 Du et al.(2025, Findings of EMNLP 2025, arXiv:2510.05381)에서 나온다. 논문 제목 자체가 메커니즘을 곧장 선언한다. “Context Length Alone Hurts LLM Performance Despite Perfect Retrieval.”

실험 조건은 다음처럼 엄격하게 통제했다.

조건설명결과
완벽한 검색(perfect retrieval)관련 정보 100% 포함, 검색 오차 없음성능 저하 지속: 13.9%~85%
공백 대체(whitespace replacement)비관련 토큰 → 공백 문자로 교체여전히 성능 저하
완전 마스킹(full masking)비관련 토큰 완전 제거, 관련 토큰만 존재성능 저하 지속
관련 정보 직전 배치답 직전에 증거 문서 배치저하 방지 실패
flowchart LR
    A["일반 조건<br/>비관련 콘텐츠 포함"] -->|13.9%~85% 저하| E["성능 저하"]
    B["완벽한 검색<br/>관련 정보 100%"] -->|여전히 저하| E
    C["공백 대체<br/>잡음 제거"] -->|여전히 저하| E
    D["완전 마스킹<br/>관련 토큰만 존재"] -->|여전히 저하| E
    E --> F["결론: 길이 자체가<br/>근본 병목"]

이 결과의 함의는 무겁다.

비관련 콘텐츠의 잡음(noise)을 제거해도 성능 저하는 가시지 않는다. 부패는 “무관한 내용이 모델을 혼란시키는” 문제가 아니라는 뜻이다. 입력 토큰 수 자체가 처리 병목을 만든다.

제안된 완화 전략과 한계

Du et al.은 이 발견을 토대로 증거 암송(evidence recitation) 기법을 제안한다.

프롬프트 구조:
1. "먼저 이 질문에 관련된 증거를 문서에서 찾아 그대로 인용하라"
2. "이제 인용한 증거를 바탕으로 문제를 해결하라"

효과는 RULER 벤치마크에서 GPT-4o 기준 최대 4% 향상이다.

다만 한계가 뚜렷하다. 4%는 통계적으로 유의하긴 해도 부패를 실질적으로 “해소”하지는 못한다. 근본 원인을 비켜 가는 우회로일 뿐이다. 게다가 기법 자체가 출력 토큰 수를 늘려 비용과 지연을 키운다.

왜 마스킹해도 저하가 지속되는가

논문은 확정적 해석을 내놓지 않는다. 다만 다음과 같은 설명이 가능하다.

  • 위치 인코딩(positional encoding) 자체의 영향. 토큰이 몇 번째에 있는지가 어텐션 계산에 작용한다. 내용이 공백으로 바뀌어도 위치 정보는 그대로 남는다.
  • 어텐션 헤드 수 대비 토큰 수 비율. 처리해야 할 위치가 많아질수록 토큰마다 돌아가는 어텐션 용량이 희석된다.
  • 레이어 깊이별 누적 효과. 트랜스포머 각 레이어에서 생기는 작은 위치 오차가 쌓여 간다.

메커니즘 4 — 검색+추론 동시 수행의 인지 부하

단일 호출에서의 이중 과제 문제

Chroma Research(2025)의 LongMemEval 실험은 검색(retrieval)과 추론(reasoning)을 한 컨텍스트 안에서 동시에 처리하는 일이 그 자체로 별도의 병목임을 보여준다.

실험 설계는 이렇다.

  • 데이터는 LongMemEval_s의 knowledge update, temporal reasoning, multi-session 카테고리에서 뽑은 306개 프롬프트다.
  • focused 조건은 관련 정보만 추려 넣은 입력(약 300 토큰)이다. 모델은 추론만 한다.
  • full 조건은 전체 대화 이력을 그대로 담은 입력(약 113K 토큰)이다. 모델은 검색과 추론을 함께 한다.

결과는 18개 모델 전부에서 예외 없이 focused > full이었다.

실제 실패 사례 (Claude Sonnet 4, full prompt 조건)

질문: “How many days passed between the day I attended the gardening workshop and the day I planted the tomato saplings?”

정답: 6일 (두 날짜 모두 113K 토큰 컨텍스트 내에 존재)

모델 출력:

“I cannot determine the number of days between the gardening workshop and planting the tomato saplings because the specific dates for these events are not provided in the chat history.”

날짜 정보가 컨텍스트 안에 분명히 있는데도 모델은 그것을 “찾지 못했다”고 판단한 것이다. 날짜추론 실패 같은 구체적 사례로 이어지는 대목이다.

인지 부하 모델로 이해하기

graph TD
    A["단기 컨텍스트<br/>(focused)"] -->|"추론만 수행"| B["높은 성능"]
    C["장기 컨텍스트<br/>(full)"] -->|"검색 수행"| D["관련 정보 위치 파악<br/>(어텐션 자원 소모)"]
    D -->|"남은 어텐션으로"| E["추론 수행"]
    E -->|"어텐션 자원 부족"| F["낮은 성능"]
    G["병목"] --> D
    G --> E

이중 과제 병목은 실무에서 이렇게 작동한다. RAG 파이프라인의 검색 품질이 아무리 좋아도 “검색된 문서 + 원래 질문 + 전체 이력”을 한꺼번에 밀어 넣으면 부패는 그대로 발생한다. 해결 방향은 검색과 추론을 별도 호출로 분리하는 것, 곧 focused 입력 원칙이다. 이는 멀티 에이전트 서브에이전트 패턴(06 해결전략)의 근거 가운데 하나이기도 하다.


메커니즘 5 — 헤이스택 구조의 역설: 논리적 일관성이 성능을 낮춘다

Chroma의 역직관적 발견

Chroma Research(2025)는 haystack 안의 문장 순서를 조작하는 실험을 했다.

  • Original 조건은 원본 문서의 자연스러운 논리 흐름을 그대로 둔다(PG essays, arXiv 논문).
  • Shuffled 조건은 같은 문장들을 무작위 순서로 뒤섞는다.

결과는 18개 모델 전부에서 일관되게 Shuffled > Original이었다.

“Models perform better on shuffled haystacks than on logically structured ones.” — Chroma Research (2025)

왜 논리적 구조가 성능을 낮추는가?

Chroma 보고서는 이를 연구 범위 밖이라고 못 박으며 확정적 설명을 내놓지 않는다.

“We also do not explain the mechanisms behind this performance degradation. Understanding these effects would require a deeper investigation into mechanistic interpretability, which is beyond the scope of this report.”

아직 검증되지 않은, 현재 떠올릴 수 있는 가설은 다음과 같다.

  • 의미적 흐름이 어텐션을 끌어당긴다. 논리적으로 이어진 문장 시퀀스는 어텐션을 그 흐름을 따라가게 만든다. 그러다 보면 needle과 무관하더라도 논리적으로 연결된 토큰들이 더 높은 attention score를 받기도 한다.
  • 구조적 패턴이 또 하나의 디스트랙터로 작용한다. 에세이의 단락 구조나 논문의 섹션 경계가 모델에게 “이 구조 어딘가에 답이 있다”는 헛신호를 줄 수 있다.
  • Shuffled의 이점도 있다. 무작위 순서에서는 어텐션이 특정 흐름에 고착되지 않아 전체 컨텍스트를 더 고르게 훑는다.

이 메커니즘은 해석 가능성 연구(mechanistic interpretability)가 아직 풀지 못한 과제다. NoLiMa의 distractor 실험과도 맞닿아 있다. 의미가 비슷한 비관련 문장 하나만 끼워 넣어도 GPT-4o의 effective length가 8K에서 1K로 곤두박질치는 현상과 같은 계열의 문제다.


메커니즘 6 (보완) — 어텐션은 부재(Absence)에 attend할 수 없다

AbsenceBench의 시사점

Fu et al.(2025, arXiv:2506.11440)의 AbsenceBench는 컨텍스트 부패 메커니즘에 새로운 차원을 더한다. 이 연구의 초점은 “존재하는 정보를 찾기”가 아니라 “없는 정보를 알아채기”다.

핵심 발견은 이렇다.

“Transformer attention mechanisms cannot easily attend to ‘gaps’ in documents since these absences don’t correspond to any specific keys that can be attended to.”

어텐션의 계산 방식:

Attention(Q, K, V) = softmax(QK^T / √d_k) · V

이 수식에서 부재(absence)는 어떤 K(Key)에도 대응하지 않는다. 문서에 없는 정보는 애초에 Key 벡터로 존재하지 않으니, 쿼리가 아무리 그것을 “찾으려” 해도 수학적으로 attend할 길이 없다.

결과를 보면, Claude-3.7-Sonnet은 5K 토큰 조건에서 69.6% F1-score에 그쳤다. 비교적 짧은 5K 토큰에서도 실패한다는 것은 부패가 극단적 장문에만 국한되지 않음을 말해 준다. 테스트는 수치 시퀀스(numerical sequences), 시(poetry), GitHub Pull Request 세 도메인에서 이뤄졌다.

컨텍스트 부패와의 연결

이 메커니즘은 부패의 탐지 실패 측면을 설명해 준다.

모델이 관련 정보를 못 찾는 이유 하나는, 그 정보가 실제로 없는 것인지 아니면 컨텍스트 어딘가에 있는데 어텐션이 못 짚는 것인지를 모델 스스로 구별하지 못한다는 데 있다.

이는 Claude의 abstention(답변 거부) 현상과 이어진다. Chroma 실험에서 Claude Opus 4와 Sonnet 4는 full 컨텍스트 조건에서 abstention이 급증했다. “불확실하다”고 판단하는 임계치가 낮아지는 셈인데, 정작 정보는 컨텍스트 안에 들어 있다.

AbsenceBench의 발견은 이 문제가 학습(fine-tuning)만으로는 간단히 풀리지 않을 수 있음을 시사한다. 어텐션 아키텍처 자체의 수학적 한계에 가깝기 때문이다.


아키텍처 원인과 완화

위 여섯 메커니즘이 “무엇이 관찰되는가”를 기술한다면, 그 아래에는 어텐션 아키텍처의 물리적 구조 두 가지가 깔려 있다. attention sink와 RoPE 위치 인코딩이다. 여기서는 부패(Context Rot)를 시간축과 누적의 관점에서, 즉 컨텍스트가 길어지고 토큰이 쌓일수록 이 두 구조가 어떻게 신호를 갉아먹는지를 본다. 같은 두 구조를 단일 시점의 위치 편향 각도에서 풀어낸 분석은 02_03-메커니즘-위치-편향-u자형에 있다. 본 노트는 누적·시간 관점을, 02_03은 위치 분포 관점을 맡는다.

Attention sink — 첫 토큰으로 새는 질량이 쌓인다. Xiao et al.(2023, “Efficient Streaming Language Models with Attention Sinks”, arXiv:2309.17453)은 트랜스포머가 의미와 무관하게 시퀀스 초반의 소수 토큰, 특히 첫 토큰에 어텐션 질량을 과도하게, 그것도 고정적으로 쏟아붓는 attention sink 현상을 보고했다. softmax는 모든 위치에 확률 질량을 나눠야 하므로, 마땅히 attend할 곳이 없으면 모델은 남는 질량을 sink 토큰에 “버린다”. 시간축 관점에서 이 현상이 부패로 이어지는 경로는 분명하다. 컨텍스트가 길어질수록 더 많은 쿼리 스텝이 같은 소수 sink로 질량을 흘려보내고, 그만큼 정작 needle 토큰에 돌아갈 어텐션 예산은 누적적으로 줄어든다. 메커니즘 1(신호 희석)과 메커니즘 3(길이 자체 병목)이 마스킹 후에도 사라지지 않는 이유, 곧 내용을 지워도 위치 수가 남는 한 질량 분배 구조는 그대로라는 점을 아키텍처 수준에서 뒷받침한다.

RoPE — 상대 위치 거리에 따른 감쇠가 장거리 신호를 약화시킨다. Rotary Position Embedding(RoPE; Su et al., 2021/2023, arXiv:2104.09864)은 쿼리·키 벡터를 위치에 비례해 회전시켜 상대 거리를 어텐션 점수에 실어 보낸다. 그 부수 효과로, 멀리 떨어진 토큰 쌍의 내적이 평균적으로 약해지는 장거리 감쇠(long-term decay) 경향이 생긴다. 누적 관점에서 보면 답을 생성하는 끝부분 쿼리에서 멀수록, 즉 초·중반 증거일수록 위치 거리에 따른 감쇠를 더 세게 받고, 컨텍스트가 길어질수록 “멀어진” 증거의 비중이 커진다. 이 효과가 메커니즘 2의 U자형 편향 중 중간부 급락과 맞물리면서, 길이가 늘수록 회수 가능한 유효 구간(effective context)이 명목 윈도우보다 훨씬 빠르게 좁아진다.

완화의 층위와 한계. 두 구조 모두 프롬프트 설계만으로는 걷어 낼 수 없는, 모델 내부의 물리적 성질이다. 아키텍처 차원의 완화는 추론·학습 레벨의 개입으로 이뤄진다. StreamingLLM의 sink token 보존 방식은 초기 토큰의 KV를 캐시에 상시 유지해 스트리밍 시 분포 붕괴를 막고, RoPE 주파수 스케일링은 NTK-aware나 YaRN 등으로 학습 윈도우 밖을 외삽할 때 감쇠 곡선을 완만하게 편다. 그러나 어디까지나 완화일 뿐 부패의 해소는 아니다. 실무 레벨에서는 이 누적 침식을 전제로, 증거를 끝부분에 배치하고(메커니즘 2 처방) 검색·추론을 분리하는(06 해결전략) 운영 설계로 대응하는 편이 현실적이다. 결국 attention sink와 RoPE 감쇠는 “긴 입력을 넣었으니 자연히 느려진다”가 아니라, 토큰이 쌓이는 과정 자체가 어텐션 예산과 장거리 신호를 누적적으로 갉아먹는 시간축 메커니즘이라는 점이 핵심이다.


메커니즘 통합 도식

graph TD
    subgraph INPUT["입력 조건"]
        L["긴 컨텍스트"]
        NL["리터럴 매칭 없음"]
        MID["중간 위치 정보"]
        BOTH["검색+추론 동시"]
        STRUCT["논리적 구조"]
        ABS["부재 정보"]
    end

    subgraph MECH["메커니즘"]
        M1["어텐션 신호 희석<br/>(Induction Head 한계)"]
        M2["U자형 위치 편향<br/>(Primacy/Recency)"]
        M3["길이 자체 병목<br/>(마스킹해도 저하)"]
        M4["이중 과제 부하<br/>(검색+추론)"]
        M5["구조적 어텐션 유인<br/>(Shuffled > Original)"]
        M6["부재 attend 불가<br/>(Key 벡터 없음)"]
    end

    subgraph OUT["결과"]
        R1["Needle 검색 실패"]
        R2["정보 망각"]
        R3["Abstention 급증"]
        R4["환각 증가"]
    end

    L --> M1 & M3 & M4
    NL --> M1
    MID --> M2
    BOTH --> M4
    STRUCT --> M5
    ABS --> M6

    M1 --> R1
    M2 --> R2
    M3 --> R1 & R2
    M4 --> R3 & R1
    M5 --> R1
    M6 --> R3 & R2

5개 메커니즘 비교표

#메커니즘근거 논문핵심 조작 변수완화 가능성
1Induction head 신호 희석NoLiMa (Modarressi, 2025)리터럴 매칭 유무부분적 — CoT 도움, 완전 해소 불가
2U자형 위치 편향Liu et al. (2023)관련 정보 위치실무적 — 위치 설계로 완화
3길이 자체 병목Du et al. (2025)비관련 콘텐츠 유무 독립적어려움 — 아키텍처 수준 문제
4이중 과제 부하Chroma (2025)focused vs. full가능 — 호출 분리로 해소
5구조적 어텐션 유인Chroma (2025)문장 순서 구조미확정 — 해석가능성 연구 필요
6부재 attend 불가Fu et al. (2025)정보 존재/부재어려움 — 수학적 아키텍처 한계

미해결 논쟁점

  1. 구조가 성능을 낮추는 정확한 이유. Shuffled > Original을 일으키는 mechanistic interpretability 차원의 원인은 아직 확정되지 않았다. 어텐션 헤드 단위 분석이 필요하다.

  2. 길이 자체 병목의 정확한 경로. 마스킹 조건에서도 저하가 이어지는 까닭이 위치 인코딩의 문제인지, 레이어 누적 오차인지, KV 캐시 용량 압박인지가 아직 갈라지지 않았다.

  3. Abstention은 미덕인가 결함인가. 컨텍스트 안에 정보가 있는데도 모른다고 답하는 Claude의 행동은 환각 방지와 사용성 저하 사이의 트레이드오프다. 도메인마다 최적 전략이 다르다.

  4. 창 크기 확장이 메커니즘을 해소하는가. Du et al.의 마스킹 실험은 단순한 창 확장이 해법이 아님을 시사한다. GPT-4.1이 내세우는 1M에 견줘 NoLiMa effective length가 16K에 그치는 것이 단적인 증거다.

  5. Thinking mode(확장 추론)의 실질적 효과. o1 스타일 reasoning이 부패를 얼마나 완화하느냐의 문제다. NoLiMa-Hard 32K에서 GPT-o1이 31.1%에 머물러, 여전히 부족하다.


관련 노트


참고문헌