논문은 21%에서 97%의 급증을 보고했습니다. 저의 재현 결과는 +2%였습니다.
요약
Google Research의 'Prompt Repetition Improves Non-Reasoning LLMs' 논문을 바탕으로 프롬프트 반복 효과를 소규모 재현 실험했습니다. 실험 결과, 논문이 주장한 급격한 성능 향상 대신 2%의 미미한 차이만을 확인하며 트랜스포머 어텐션 메커니즘에 대한 통찰을 얻었습니다.
핵심 포인트
- 프롬프트 반복이 비추론 모델의 성능을 높인다는 논문의 주장을 재현 실험함
- MMLU 데이터셋과 Llama-3.1-8b 모델을 사용하여 실험을 설계함
- 실제 실험 결과는 논문의 수치와 달리 59%에서 61%로 미미한 향상에 그침
- 결과적 격차를 통해 트랜스포머 어텐션 구조에 대한 분석적 접근 시도
요약 (TL;DR): 저는 "Prompt Repetition Improves Non-Reasoning LLMs" 논문에 대한 소규모 재현 실험을 수행했습니다: 100개의 MMLU 질문, 하나의 비추론 (non-reasoning) 모델, 프롬프트를 한 번 전송했을 때와 두 번 전송했을 때를 비교했습니다. 기준점(Baseline)은 59%, 반복 시 61%였습니다. 아마도 통계적으로 유의미하지는 않았을 것이며, 바로 그 점이 흥미로운 부분이었습니다. 논문의 헤드라인 수치와 저의 +2% 사이의 격차는 기법 자체보다 트랜스포머 어텐션 (transformer attention)에 대해 더 많은 것을 가르쳐 주었습니다.
왜 이것을 시도했는가
그 주장은 농담처럼 들립니다: 프롬프트를 두 번 붙여넣기만 하면 비추론 (non-reasoning) LLM의 성능이 향상된다니 말입니다. 사고의 사슬 (chain-of-thought), 미세 조정 (fine-tuning), 추가 지침도 없습니다. Google Research의 논문인 Prompt Repetition Improves Non-Reasoning LLMs는 Gemini, GPT, Claude, 그리고 Deepseek 모델을 7개의 벤치마크를 통해 테스트했으며, 반복 기법이 70개의 모델-벤치마크 조합 중 손실 없이 47개에서 승리했음을 발견했습니다. 여기에는 모델이 긴 목록에서 하나의 항목을 추출해야 하는 NameIndex와 같은 긴 문맥 (long-context) 작업에서 21%에서 97%에 달하는 큰 향상이 포함되었습니다.
이렇게 저렴한 트릭은 재현 (replication)해 볼 가치가 있으며, 저는 두 가지를 알고 싶었습니다. 이것이 일반적인 짧은 질문에서도 나타나는가? 그리고 만약 그렇다면, 왜 텍스트를 복제하는 것이 트랜스포머 (transformer) 내부에서 무언가를 변화시키는가?
설정 (The setup)
저는 의도적으로 규모를 작게 유지하고 가능한 모든 것을 고정했습니다:
- 데이터셋 (Dataset): MMLU 과학 및 수학 과목(고등학교 및 대학교 수학, 물리학, 화학, 생물학, 추상 대수학, 천문학)에서 샘플링한 100개의 객관식 질문. 4개의 선택지, 1개의 정답. 데이터셋은 고정된 시드 (seed)를 사용하여 한 번 구축되었으며
questions.json으로 동결되어 두 조건 모두 동일한 질문을 보게 했습니다. - 모델 (Model): Groq API를 통한
llama-3.1-8b-instant. 논문이 다루는 대상인 작고 빠르며 진정으로 비추론 (non-reasoning)적인 모델입니다. - 조건 (Conditions): 기준점 (baseline) 조건은 "Answer with one letter."와 함께 질문을 한 번 보냅니다. 반복 (repetition) 조건은 정확히 동일한 블록을 두 번 (n = 2) 보내며, 그 외 다른 것은 변경되지 않습니다.
baseline # repetition (n = 2)
<Question> <Question>
A. ... A. ...
...
결과 (Results)
| 방법 (Method) | 정답 (Correct) | 정확도 (Accuracy) |
|---|---|---|
| Baseline (n = 1) | 59 / 100 | 59% |
| Repeated prompt (n = 2) | 61 / 100 | 61% |
정답이 두 개 더 늘어났습니다. 이것을 승리라고 부르기 전에, 솔직한 검증을 해보겠습니다. 동일한 질문에 대한 정답/오답 쌍(paired correct/incorrect outcomes)을 비교할 때 적절한 테스트는 맥네마 검정 (McNemar's test)이며, 이는 두 조건이 일치하지 않는 질문들만을 살펴봅니다. 100개의 질문과 이토록 작은 변동폭을 고려할 때, 이 개선은 통계적으로 유의미하지 (statistically significant) 않을 가능성이 높습니다. 저는 효과가 있다고 주장하는 것이 아니라, 100개의 질문이 보여준 결과를 보고하는 것입니다.
따라서 이번 재현은 가능한 한 가장 만족스럽지 못한 방식으로 "성공"했습니다. 즉, 양(+)의 방향성을 보이긴 했으나, 그 자체만으로는 신뢰하기에 너무 작았습니다. 유익했던 부분은 논문의 수치는 그렇게 큰데 왜 여기서는 효과가 작게 나타나야만 하는지를 파악한 것이었습니다.
왜 나의 효과는 작고 논문의 효과는 컸는가
논문의 극적인 이득은 긴 문맥 검색 (long-context retrieval) 작업에서 비롯됩니다. 모델에게 50개의 이름 목록을 주고 25번째 이름을 묻는다면, 어텐션 (attention)은 수백 개의 토큰에 걸쳐 위치를 유지해야 합니다. 어텐션 가중치 (attention weight)가 긴 시퀀스 전체에 얇게 퍼지면서 단일 토큰에 대한 신호가 희석되고, 모델은 이를 놓치게 됩니다. 프롬프트를 반복하면 모든 중요한 토큰의 두 번째 복사본이 문맥 (context)에 들어가게 되어, 정답과 관련된 토큰에 어텐션이 가해질 확률이 두 배로 높아집니다. 어텐션을 압박하는 작업에서 이러한 구제 조치는 매우 큰 가치를 가집니다.
반면 제가 사용한 질문들은 짧았습니다. 4지 선다형 객관식 문제 (MCQ)는 어텐션을 거의 압박하지 않으며, 모델은 이미 모든 것을 명확하게 볼 수 있습니다. 반복은 원래 약하지 않았던 신호를 증폭시킬 뿐이므로, 얻을 수 있는 여유 공간 (headroom)이 많지 않습니다. 효과 크기 (effect size)는 이 기법 자체의 속성이 아니라, 해당 작업이 어텐션을 얼마나 갈구하느냐에 따른 속성입니다. 이것이 실제 핵심 결론이며, 또한 검증 가능한 예측이기도 합니다. 이 실험을 긴 문맥 질문으로 다시 수행한다면 그 격차는 벌어질 것입니다.
왜 반복이 무언가를 변화시키는가
이 부분은 제가 단순히 다이어그램을 보며 고개를 끄덕이는 대신, 어텐션 (Attention)에 대해 실제로 읽어보게 만든 지점입니다.
모델이 정답 토큰을 예측할 때, 어텐션은 모든 프롬프트 토큰에 걸쳐 분산됩니다. 핵심 개념이 예를 들어 0.07의 가중치를 받을 수 있습니다. 프롬프트가 반복되면 각 복사본은 0.05와 0.04를 받을 수 있지만, 결합된 신호는 이전보다 더 강력합니다. 모델의 어떤 것도 변하지 않았습니다. 입력이 단지 메커니즘에 동일한 정보를 찾을 수 있는 두 번의 기회를 주었을 뿐입니다.
KV 캐시 (KV cache) 관점에서도 같은 이야기를 합니다. 추론 (Inference) 동안 모든 프롬프트 토큰의 키 (Key) 및 값 (Value) 벡터는 캐시에 저장되며, 반복은 관련 벡터의 두 복사본을 그곳에 넣습니다. 대상이 두 번 존재할 때 어텐션에 의한 검색 (Retrieval)은 더 신뢰할 수 있게 됩니다. 프롬프트 반복은 모델 외부에서 수행하는 신호 증폭 (Signal amplification)이며, 이는 프롬프트 엔지니어링 (Prompt engineering)이 왜 작동하는지에 대한 훌륭한 한 줄 설명이기도 합니다.
논문 자체는 제가 고려하지 못했던 프레임워크인 인과적 마스킹 (Causal masking)을 추가합니다. 인과적 LLM (Causal LLM)에서 토큰은 뒤쪽으로만 어텐션을 줄 수 있으므로, 질문의 앞부분에 있는 토큰은 그 뒤에 오는 토큰들을 결코 볼 수 없습니다. 프롬프트의 두 번째 복사본에서는 모든 토큰이 효과적으로 자신의 뒤에 전체 쿼리 (Query)를 갖게 됩니다. 반복은 단방향 어텐션 (One-directional attention)을 위한 가장 저렴한 해결책입니다.
한계점, 솔직하게
- 100개의 질문은 적은 양이며, 헤드라인 결과는 노이즈 범위 내에 있습니다.
- 짧은 객관식 문제 (MCQs)만 다루었으며, 이전 섹션에서 주장했듯 이는 이 기술이 적용되기 가장 어려운 사례입니다.
- 하나의 모델, 하나의 반복 계수 (n = 2)만을 사용했습니다.
다음에 실행해 볼 것
제가 가장 궁금해하는 순서대로 정리한 명백한 후속 연구들은 다음과 같습니다: 논문의 NameIndex 설정처럼 예측 결과 효과가 클 것으로 보이는 긴 문맥 (Long-context) 작업, 수익 체감이 발생하는 지점을 찾기 위한 반복 계수 n = 3에서 5 사이의 실험, 그리고 두 기술 모두 정확도를 얻기 위해 추가 토큰을 소비한다는 점에서 동일한 고정 데이터셋에 대한 생각의 사슬 (Chain-of-thought)과의 비교입니다.
데이터셋 빌더, 노트북, 그리고 질문별 원본 CSV가 포함된 리포지토리 (Repo):
CoffeeAurCode / Prompt-Repetition-Improves-Non-Reasoning-LLMs
저는 “Prompt Repetition Improves Non-Reasoning LLMs” 논문을 재현하려고 시도했습니다.
Prompt Repetition Improves Non-Reasoning LLMs
소규모 재현 연구 (A Small Replication Study)
이 리포지토리(Repository)는 다음 논문의 핵심 아이디어를 재현하는 소규모 실험을 포함하고 있습니다:
Prompt Repetition Improves Non-Reasoning LLMs
이 실험의 목표는 **프롬프트 반복 (Prompt Repetition)**이 커스텀 객관식 (Multiple-choice) 데이터셋에서의 정확도를 향상시키는지 이해하고, 왜 이토록 단순한 트릭이 트랜스포머 (Transformer)의 동작에 영향을 미칠 수 있는지 탐구하는 것이었습니다.
이 프로젝트의 목적은 큰 성능 향상을 달성하는 데 집중하기보다, 프롬프트 반복의 메커니즘을 조사하고 이것이 트랜스포머 어텐션 (Transformer Attention)에 대해 무엇을 드러내는지 이해하는 것이었습니다.
동기 (Motivation)
최근 연구에 따르면 프롬프트를 여러 번 반복하는 것이 특정 작업에서 비추론형 LLM (Non-reasoning LLMs)의 성능을 크게 향상시킬 수 있음이 밝혀졌습니다.
논문에서 보고된 개선 사례: NameIndex와 같이 긴 컨텍스트 추론 (Long context reasoning)을 요구하는 작업에서 정확도가 21% -> 97%로 향상됨
이는 흥미로운 질문들을 던집니다:
- 왜 프롬프트 반복이 도움이 되는가?
- 단순한 객관식 (MCQ) 작업에서도 작동하는가?
- 이것이 무엇에 대해 알려주는가...
만약 실제 컨텍스트 길이 (Context length)가 있는 어떤 대상에 대해 프롬프트 반복을 실행해 보셨다면, 효과가 나타났는지 그리고 그 효과가 얼마나 컸는지 알고 싶습니다. 또한, 트릭 자체 외에 +2%의 차이를 설명할 수 있는 설정상의 결함을 발견하신다면, 그것이 바로 제가 기대하는 종류의 의견입니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기