Chain-of-Thought (CoT)
Chain-of-Thought (CoT)
한 줄 요약
AI에게 답만 요구하는 게 아니라 “단계별로 생각하는 과정”을 보여주게 하면 복잡한 문제를 더 잘 푼다는 추론 기법.
쉬운 설명
Chain-of-Thought(사고의 연쇄)는 “과정을 보여주면서 생각하기”이다.
쉬운 비유: 수학 문제 풀이
일반적인 방법 (Direct Answer):
질문: 철수는 사과 12개를 가지고 있었고, 3개를 먹고 5개를 더 받았습니다. 지금 몇 개?
AI: 14개
→ 답만 내고 끝
Chain-of-Thought:
질문: 철수는 사과 12개를 가지고 있었고, 3개를 먹고 5개를 더 받았습니다. 지금 몇 개?
AI:
1단계: 처음 사과는 12개였습니다.
2단계: 3개를 먹었으므로, 12 - 3 = 9개 남았습니다.
3단계: 5개를 더 받았으므로, 9 + 5 = 14개입니다.
답: 14개
→ 과정을 보여주면서 답을 냄
왜 CoT가 효과적인가?
- 중간 단계 검증: 어디서 틀렸는지 찾기 쉬움
- 복잡한 문제 해결: 한 번에 못 풀어도 단계별로 나누면 가능
- 신뢰성 향상: 과정이 맞으면 답도 맞을 확률 높음
- 인간과 유사: 우리도 어려운 문제는 단계별로 풀잖아요!
Few-shot CoT vs Zero-shot CoT:
Few-shot CoT: 예시를 먼저 보여줌
예시 1:
Q: 2 + 3 × 4는?
A: 먼저 곱셈: 3 × 4 = 12, 그 다음 덧셈: 2 + 12 = 14
예시 2:
Q: 100 - 50 ÷ 2는?
A: 먼저 나눗셈: 50 ÷ 2 = 25, 그 다음 뺄셈: 100 - 25 = 75
이제 풀어봐:
Q: 8 + 6 × 2는?
Zero-shot CoT: “단계별로 생각해봐”라고만 요청
Q: 8 + 6 × 2는? Let's think step by step.
A: 1단계: 곱셈 먼저... 2단계: 덧셈...
핵심 포인트
- 중간 추론 과정: 답만이 아닌 사고 과정 생성
- 성능 향상: 복잡한 추론 문제에서 20~50% 정확도 향상
- 디버깅 가능: 어느 단계에서 틀렸는지 파악 가능
- 신뢰성 증가: 과정이 논리적이면 답 신뢰도 상승
관련 개념
- GSM8K - CoT가 필수적인 수학 추론 벤치마크
- MMLU - 일부 어려운 과목에서 CoT 적용
- HumanEval - 코드 생성에서도 CoT 유사 방법 사용
- Curriculum Learning - CoT 단계 수로 난이도 측정 가능
R4 연구에서의 역할
CoT는 R4 연구의 D2 (추론 단계 수) 측정에 핵심적으로 사용된다.
D2 (추론 단계 수) 계산:
def compute_reasoning_steps(question, answer):
# GPT-4를 사용한 Chain-of-Thought 분해
prompt = f"""
Question: {question}
Answer: {answer}
Break down the reasoning into individual logical steps.
Output each step on a new line, numbered.
"""
cot = gpt4_generate(prompt)
steps = parse_numbered_steps(cot)
d2 = len(steps) # 단계 수가 난이도
return normalize(d2, max_steps=10)
난이도 분류 예시:
쉬운 문제 (1~2 단계):
Q: 5 + 3은?
CoT:
1단계: 5 + 3 = 8
답: 8
→ D2 = 1 (매우 쉬움)
중간 문제 (3~4 단계):
Q: 철수는 12개, 영희는 8개, 민수는 15개의 사탕을 가지고 있다. 평균은?
CoT:
1단계: 전체 개수 = 12 + 8 + 15 = 35개
2단계: 사람 수 = 3명
3단계: 평균 = 35 ÷ 3 = 11.67개
답: 11.67개
→ D2 = 3 (중간)
어려운 문제 (5~7 단계):
Q: 어떤 수의 2배에서 5를 빼면 15가 된다. 이 수에 3을 곱하면?
CoT:
1단계: x의 2배에서 5를 빼면 15 → 2x - 5 = 15
2단계: 양변에 5 더하기 → 2x = 20
3단계: 양변을 2로 나누기 → x = 10
4단계: 이 수에 3을 곱하기 → 10 × 3
5단계: 계산 → 30
답: 30
→ D2 = 5 (어려움)
다차원 난이도에서의 역할:
종합 난이도 = 0.3 × D1 (언어 복잡성)
+ 0.5 × D2 (추론 단계 수) ← 가장 높은 가중치!
+ 0.2 × D3 (도메인 지식)
왜 D2가 50%로 가장 높은가?
- 추론 능력이 LLM의 핵심 능력
- 단계 수가 많을수록 실질적으로 어려움
- 객관적 측정 가능 (CoT 분해 후 카운트)
ZPD Window 적용:
현재 모델이 3단계 문제까지 잘 풀음
→ ZPD 범위: 3~4단계 문제 선택
→ 1~2단계는 너무 쉬움 (제외)
→ 5단계 이상은 너무 어려움 (제외)
가설 H3b 검증:
가설 H3b: 추론 중심 태스크에서 ZPD-Adaptive 효과가 더 큼
추론 태스크 (GSM8K, MMLU):
- CoT 단계 수로 명확한 난이도 구분 가능
- ZPD Window 적용 효과적
- 효과 크기: Cohen's d > 1.5
생성 태스크 (HumanEval):
- CoT 단계 수 측정 모호 (여러 풀이 방법)
- ZPD Window 적용 제한적
- 효과 크기: Cohen's d ≈ 1.0
더 알아보기
- Wei, J., et al. (2022). Chain-of-Thought Prompting Elicits Reasoning in Large Language Models. NeurIPS 2022.
- Zero-shot CoT: “Let’s think step by step” 추가만으로 효과
- Self-Consistency: 여러 번 CoT 생성 후 다수결
- Tree of Thoughts (ToT): CoT를 트리 구조로 확장
- Program-aided Language Models (PAL): CoT를 코드로 생성
- Least-to-Most Prompting: 쉬운 것부터 단계적으로 CoT
- GPT-4 MMLU 점수: CoT 없음 70% → CoT 적용 86%