ChatGPT가 안 배우는데 똑똑해지는 이유? In-Context Learning 완벽 분석: Zero-shot부터 Tree-of-Thought까지!
핵심 요약
ChatGPT는 왜 추가 학습 없이도 새로운 문제를 척척 풀까요? 비밀은 In-Context Learning(ICL)에 있습니다. 놀라운 사실: 단순히 “Let’s think step by step”이라는 한 줄만 추가해도 수학 문제 정확도가 17.9% → 78.7%까지 급상승합니다! 이 포스팅에서는 Zero-shot, Few-shot, Chain-of-Thought(CoT), Tree-of-Thought(ToT), Self-Consistency까지 – LLM이 파라미터 업데이트 없이 똑똑해지는 마법의 원리를 완벽하게 분석합니다.
1. In-Context Learning이란? 추가 학습 없이 능력이 생기는 마법
1-1. 전통적 학습 vs In-Context Learning

전통적인 머신러닝에서 모델이 새로운 능력을 얻으려면:
- 대량의 학습 데이터 준비
- 수 시간~수 일간 학습 (파라미터 업데이트)
- 학습 완료 후 새 능력 획득
하지만 GPT-3 이후의 LLM은 다릅니다:
“프롬프트에 몇 가지 예시만 넣어줘도, 본 적 없는 태스크를 바로 수행한다!”
이것이 바로 In-Context Learning(ICL), 즉 맥락 내 학습입니다.
비유로 이해하기:
전통적 학습이 요리학원에 6개월 등록하는 것이라면, ICL은 레시피 한 장 보고 바로 따라 만드는 것입니다. 요리학원은 실력을 “몸에 익히지만”(파라미터 변경), 레시피는 그때그때 참고만 하죠(파라미터 불변).
1-2. ICL의 과학적 원리: 왜 작동하는가?
ICL이 어떻게 가능한 걸까요? 최신 연구에 따르면:
가설 1: 암묵적 Gradient Descent (메타 학습)
Transformer의 self-attention 메커니즘이 내부적으로 gradient descent를 흉내낸다는 연구 결과가 있습니다. 즉, 프롬프트의 예시를 보고 마치 미세 조정을 한 것처럼 행동합니다.
“Transformer attention은 다른 형태의 gradient descent이다. ICL은 forward computation을 통해 meta-gradient를 생성하고, 이것이 모델에 적용된다.”
— Why Can GPT Learn In-Context? 논문
가설 2: 지식 검색 (Knowledge Retrieval)
LLM은 사전 학습 중 이미 수많은 패턴을 학습해두었고, 프롬프트의 예시가 적절한 지식을 “활성화”하는 신호 역할을 합니다.
현실: 연구에 따르면 ICL은 이 두 메커니즘의 스펙트럼 위에서 작동합니다:
- 예시가 적을 때: Knowledge Retrieval이 우세
- 예시가 많을 때: Meta-Learning이 우세
1-3. ICL의 핵심 요소
효과적인 ICL을 위한 3가지 요소:
| 요소 | 설명 | 예시 |
|---|---|---|
| Demonstration | 태스크를 보여주는 예시들 | 입력-출력 쌍 |
| Template | 예시와 쿼리를 구조화하는 형식 | “질문: … 답변: …” |
| Instruction | 태스크에 대한 명시적 설명 | “다음 문장을 요약하세요” |
2. Zero-shot vs Few-shot: 예시의 힘
2-1. Zero-shot Learning: 예시 없이 도전
Zero-shot은 예시 없이 태스크 설명만으로 문제를 푸는 방식입니다.
예시:
프롬프트: “다음 문장의 감정이 긍정인지 부정인지 분류하세요: ‘이 영화 정말 재미있었어!'”
출력: “긍정”
장점:
- 예시 준비 불필요
- 토큰 절약
- 범용적
단점:
- 복잡한 태스크에서 성능 저하
- 모델이 의도를 잘못 이해할 수 있음
2-2. Few-shot Learning: 몇 가지 예시의 마법
Few-shot은 2~8개의 예시를 프롬프트에 포함시키는 방식입니다.

예시:
프롬프트:
문장: “이 카페 분위기 최고예요” → 긍정
문장: “음식이 너무 짜서 못 먹겠어요” → 부정
문장: “직원이 친절했어요” → 긍정문장: “배송이 너무 늦었어요” → ?
출력: “부정”
Few-shot의 효과:
| 태스크 | Zero-shot | Few-shot (8-shot) | 향상폭 |
|---|---|---|---|
| 감정 분석 | 76% | 89% | +13% |
| 번역 | 45% | 68% | +23% |
| 수학 문제 | 17% | 58% | +41% |
비유:
Zero-shot은 “요리해봐”라고 말하는 것, Few-shot은 “이렇게 만들면 돼”라며 완성된 요리 사진 3장을 보여주는 것입니다.
2-3. 예시 선택의 중요성
Few-shot의 성능은 예시 선택에 크게 좌우됩니다:
- 유사한 예시: 쿼리와 비슷한 예시가 성능 향상에 효과적
- 다양한 예시: 여러 유형을 커버하면 일반화 능력 향상
- 순서 영향: 마지막에 가까운 예시가 더 큰 영향을 미침
연구 결과: Self-Adaptive In-Context Learning은 예시 선택과 순서를 검색 문제로 접근하여 최적의 조합을 찾습니다.
3. Chain-of-Thought (CoT): 생각의 사슬로 추론력 폭발
3-1. CoT의 발견: 단순한 아이디어의 놀라운 효과
2022년, Google의 Wei et al.이 발표한 Chain-of-Thought Prompting은 LLM 추론 연구의 판도를 바꿨습니다.
핵심 아이디어:
“답만 바로 말하지 말고, 생각하는 과정을 단계별로 말해봐“

Standard Prompting:
Q: 철수가 사과 5개를 가지고 있었고, 영희에게 3개를 주고, 어머니께 2개를 받았습니다. 철수는 몇 개의 사과를 가지고 있나요?
A: 4개
Chain-of-Thought Prompting:
Q: (같은 문제)
A: 철수는 처음에 5개를 가지고 있었습니다. 영희에게 3개를 줬으니 5-3=2개가 남았습니다. 어머니께 2개를 받았으니 2+2=4개입니다.
3-2. CoT의 놀라운 성능 향상
GSM8K (초등학교 수학) 벤치마크 결과:
| 모델 | Standard | CoT | 향상폭 |
|---|---|---|---|
| GPT-3 175B | 17.9% | 58.0% | +40.1% |
| PaLM 540B | 17.9% | 58.1% | +40.2% |
| LaMDA 137B | 6.5% | 17.0% | +10.5% |
핵심 발견:
- CoT는 모델이 충분히 클 때 (100B 이상) 효과적
- 복잡한 문제에서 성능 향상이 더 큼 (GSM8K > 단순 문제)
- 작은 모델에서는 오히려 성능이 떨어질 수 있음
3-3. Zero-shot CoT: “Let’s think step by step”의 마법
Few-shot CoT는 예시를 만들어야 하는 번거로움이 있습니다. Zero-shot CoT는 이를 해결합니다:
프롬프트 끝에 “Let’s think step by step” 한 줄만 추가!
결과:
| 태스크 | Zero-shot | Zero-shot CoT | 향상폭 |
|---|---|---|---|
| MultiArith | 17.7% | 78.7% | +61% |
| GSM8K | 12.5% | 40.7% | +28.2% |
| AQUA-RAT | 22.4% | 33.5% | +11.1% |
놀라운 사실: 이 간단한 문장 하나가 태스크별 예시를 정성스럽게 만든 Few-shot과 비슷한 성능을 냅니다!
Zero-shot CoT가 작동하는 이유:
- LLM이 사전 학습 중 “step by step” 형식의 텍스트를 많이 학습했기 때문
- 이 프롬프트가 추론 모드를 활성화하는 신호 역할
3-4. CoT가 작동하는 원리
CoT는 왜 효과적일까요?
- 연산 자원 할당: 중간 단계를 출력함으로써 문제 해결에 더 많은 토큰(계산)을 사용
- 메모장 역할: 생성된 중간 단계가 다음 단계를 위한 맥락으로 작용
- 오류 국소화: 어느 단계에서 틀렸는지 진단 가능
- 복잡한 문제 분해: 한 번에 못 풀 문제를 여러 간단한 단계로 분해
비유:
CoT는 수학 시험에서 풀이 과정을 쓰는 것과 같습니다. 답만 적으면 실수하기 쉽지만, 풀이를 쓰면 스스로 검증하면서 풀 수 있죠!
4. Tree-of-Thought (ToT): 생각의 나무로 탐색하기
4-1. CoT의 한계: 한 방향으로만 생각하기
Chain-of-Thought의 문제점:
- 단일 경로: 한 번 잘못된 방향으로 가면 되돌아올 수 없음
- 탐색 부재: 여러 가능성을 비교하지 않음
비유:
CoT가 외줄 타기라면, 실수하면 떨어집니다. 우리에게 필요한 건 여러 갈래 길을 탐색하고, 막다른 길이면 되돌아오는 능력입니다.
4-2. Tree-of-Thought: 생각의 분기

Tree-of-Thought (ToT)는 2023년 Yao et al.이 제안한 기법으로:
- 분기 (Branching): 여러 가지 다음 단계를 동시에 생성
- 평가 (Evaluation): 각 분기가 목표에 얼마나 유망한지 점수 매김
- 탐색 (Search): BFS/DFS 알고리즘으로 최적 경로 탐색
- 가지치기 (Pruning): 유망하지 않은 경로는 버림
비유:
ToT는 체스를 두는 것과 같습니다. 한 수만 보는 게 아니라, 여러 수를 생각해보고, 상대 반응을 예측하고, 가장 유리한 수를 선택합니다.
4-3. ToT의 구성 요소
| 구성 요소 | 역할 | 구현 방법 |
|---|---|---|
| Thought Generator | 다양한 다음 단계 생성 | LLM에게 여러 아이디어 요청 |
| State Evaluator | 각 상태의 가능성 평가 | LLM이 스스로 점수 매김 |
| Search Algorithm | 최적 경로 탐색 | BFS, DFS, A* 등 |
ToT 프롬프트 예시:
“세 명의 다른 전문가들이 이 질문에 답하고 있다고 상상해보세요.
모든 전문가들은 자신의 생각 한 단계를 적어내고, 그것을 그룹과 공유합니다.
그런 다음 모든 전문가들은 다음 단계로 넘어갑니다.
만약 어떤 전문가가 자신이 틀렸다는 것을 깨닫게 되면 그들은 떠납니다.”
4-4. ToT 성능: 창의적 문제에서의 압도적 우위
Game of 24 (4개 숫자로 24 만들기) 태스크:
| 방법 | 성공률 |
|---|---|
| Standard Prompting | 7.3% |
| Chain-of-Thought | 4.0% |
| CoT + Self-Consistency | 9.0% |
| Tree-of-Thought | 74.0% |
놀라운 결과: ToT는 CoT 대비 18배 높은 성공률을 기록했습니다!
ToT가 효과적인 태스크:
- 퍼즐 풀기 (스도쿠, 24 게임)
- 창의적 글쓰기
- 코드 디버깅
- 복잡한 계획 수립
5. Self-Consistency와 Self-Correction: 고급 기법
5-1. Self-Consistency: 다수결의 지혜
Self-Consistency는 CoT의 확장으로, 여러 번 추론하고 다수결로 답을 선택합니다.

작동 방식:
- 같은 문제에 대해 여러 번 CoT 수행 (temperature 조절로 다양성 확보)
- 각 추론 경로에서 최종 답만 추출
- 가장 많이 나온 답을 선택 (다수결)
성능 향상:
| 데이터셋 | CoT | CoT + Self-Consistency | 향상폭 |
|---|---|---|---|
| GSM8K | 56.5% | 74.4% | +17.9% |
| SVAMP | 79.0% | 86.6% | +7.6% |
| AQuA | 35.8% | 48.3% | +12.5% |
비유:
Self-Consistency는 여러 명의 학생에게 같은 문제를 풀게 하고, 다수가 선택한 답을 정답으로 채택하는 것과 같습니다.
5-2. Self-Correction: 스스로 오류 수정
Self-Correction은 LLM이 자신의 출력을 검토하고 수정하는 기법입니다.
기본 프로세스:
- 초기 응답 생성
- 자기 비평: “이 답에 문제가 있는지 검토해줘”
- 수정된 응답 생성
- (필요시 반복)
주요 Self-Correction 기법:
| 기법 | 특징 |
|---|---|
| Reflexion | 언어적 피드백으로 자기 개선 |
| Self-Refine | 반복적 비평과 수정 |
| CRITIC | 외부 도구(검색, 코드 실행)로 검증 |
주의: 최근 연구에 따르면, 외부 피드백 없이 순수한 Self-Correction은 효과가 제한적입니다. 초기 프롬프트를 잘 설계하는 것이 더 중요할 수 있습니다.
5-3. 그 외 고급 기법들
| 기법 | 설명 | 특징 |
|---|---|---|
| Progressive-Hint Prompting | 힌트를 점진적으로 제공 | GSM8K 92% → 95.5% |
| Program-of-Thought (PoT) | 코드로 추론 | 수학 문제에서 CoT 능가 |
| Graph-of-Thought (GoT) | 그래프 구조로 사고 확장 | ToT의 일반화 |
| ReAct | 추론과 행동을 번갈아 수행 | 도구 사용 에이전트 |
6. 각 기법별 성능 비교와 실전 활용
6-1. 종합 성능 비교

GSM8K (수학 추론) 기준 성능 비교:
| 기법 | 정확도 | 상대 비용 | 복잡도 |
|---|---|---|---|
| Zero-shot | ~17% | 낮음 | 낮음 |
| Few-shot (8-shot) | ~58% | 중간 | 중간 |
| Zero-shot CoT | ~41% | 낮음 | 낮음 |
| Few-shot CoT | ~58% | 중간 | 중간 |
| CoT + Self-Consistency | ~74% | 높음 | 중간 |
| Tree-of-Thought | ~74%* | 매우 높음 | 높음 |
핵심 인사이트:
- 비용 대비 효율: Zero-shot CoT가 최고 (한 줄 추가로 +24%)
- 최고 성능: Self-Consistency + CoT 조합
- 창의적 문제: ToT가 압도적
6-2. 실전 선택 가이드
상황별 추천 기법:
| 상황 | 추천 기법 | 이유 |
|---|---|---|
| 빠른 프로토타이핑 | Zero-shot CoT | 설정 간단, 효과 즉각적 |
| 정확도 중요 | CoT + Self-Consistency | 다수결로 오류 감소 |
| 복잡한 계획/퍼즐 | Tree-of-Thought | 탐색과 백트래킹 필요 |
| 비용 제한 | Few-shot (2~4개) | 토큰 절약하면서 효과적 |
| 코드/수학 | Program-of-Thought | 계산 정확도 보장 |
6-3. 프롬프트 템플릿 모음
Zero-shot CoT (범용):
[질문]
Let’s think step by step.
Few-shot CoT (수학):
Q: 철수가 사과 5개를 가지고 있었고…
A: 먼저 철수의 사과 수를 계산합니다… 따라서 답은 4개입니다.Q: [새 질문]
A:
ToT 간이 버전:
세 명의 전문가가 이 문제를 풀고 있습니다.
각자 자신의 추론 단계를 공유하고, 틀린 전문가는 떠납니다.[문제]
7. 정리: In-Context Learning의 미래
7-1. 핵심 요약

✅ In-Context Learning: 파라미터 업데이트 없이 프롬프트만으로 새 능력 획득
✅ Zero-shot/Few-shot: 예시의 유무와 개수로 구분, Few-shot이 일반적으로 우수
✅ Chain-of-Thought: “단계별로 생각하기”로 수학 정확도 17% → 58%
✅ Zero-shot CoT: “Let’s think step by step” 한 줄로 +24% 성능 향상
✅ Self-Consistency: 여러 번 추론 후 다수결, 추가 +18% 향상
✅ Tree-of-Thought: 여러 경로 탐색, 창의적 문제에서 CoT의 18배 성능
7-2. ICL의 한계와 미래
현재 한계:
- 컨텍스트 길이 제한 (예시 수 제한)
- 작은 모델에서는 효과 제한적
- 예시/프롬프트에 민감 (취약성)
미래 방향:
- In-Context Vectors (ICV): 예시를 벡터로 압축하여 컨텍스트 제한 극복
- Many-shot ICL: 긴 컨텍스트 모델에서 수백 개 예시 활용
- Reasoning Models: o1, Claude 3.5 같은 추론 특화 모델
FAQ: 자주 묻는 질문
Q1. CoT를 쓰면 항상 성능이 좋아지나요?
A. 아닙니다. 단순한 문제에서는 오히려 성능이 떨어질 수 있습니다. 또한 모델 크기가 100B 미만이면 효과가 제한적입니다. 복잡한 추론이 필요한 문제에서 가장 효과적입니다.
Q2. Few-shot 예시는 몇 개가 적당한가요?
A. 일반적으로 2~8개가 권장됩니다. 연구에 따르면 예시가 100개를 넘어가면 추가 효과가 미미합니다. 컨텍스트 길이와 비용을 고려해 4~6개가 실용적입니다.
Q3. Self-Consistency는 비용이 너무 많이 드는 것 아닌가요?
A. 맞습니다. 5~10배의 API 호출이 필요합니다. 높은 정확도가 중요한 경우에만 사용하고, 일반적으로는 Zero-shot CoT로 충분합니다. 비용 대비 효과를 항상 고려하세요.
Q4. ToT와 CoT 중 언제 무엇을 써야 하나요?
A. CoT: 단계별 추론이 필요한 대부분의 문제 (수학, 논리, 분석)
ToT: 여러 가능성을 탐색해야 하는 문제 (퍼즐, 창의적 글쓰기, 계획 수립)
Q5. ICL과 Fine-tuning 중 어떤 게 더 좋나요?
A. 상황에 따라 다릅니다:
- ICL: 빠른 실험, 다양한 태스크, 적은 데이터
- Fine-tuning: 특정 태스크 최적화, 일관된 스타일, 대량 처리
Fine-tuning 완벽 가이드를 참고하세요.
외부 참고 자료
ICL과 프롬프트 엔지니어링을 더 깊게 배우고 싶다면:
- Chain-of-Thought 원 논문 (Google) – CoT의 시작
- Tree of Thoughts 논문 – ToT 기법 상세
- Prompting Guide – 프롬프트 기법 종합 가이드
- Self-Consistency 논문 – 다수결 기법 상세
- OpenAI Prompt Engineering Guide – 공식 가이드
정리: 이 글에서 배운 것
✅ In-Context Learning은 LLM이 프롬프트만으로 새 능력을 획득하는 메커니즘
✅ Zero-shot은 예시 없이, Few-shot은 예시와 함께 – 예시가 많을수록 효과적
✅ Chain-of-Thought는 “단계별 사고”로 복잡한 추론 문제 정확도를 3배 이상 향상
✅ Zero-shot CoT는 “Let’s think step by step” 한 줄로 대부분의 효과 획득
✅ Self-Consistency는 다수결로, ToT는 탐색으로 추가 성능 향상
✅ 태스크와 비용에 맞게 적절한 기법 선택이 핵심
다음 포스팅에서는 “RAG vs Fine-tuning: LLM 커스터마이징의 두 가지 길”에 대해 자세히 알아봅니다. 당신의 데이터로 AI를 맞춤화하는 최적의 방법을 비교해드릴게요!
관련 포스팅:
