검색
← 모듈 로드맵

생각의 사슬 프롬프팅 (Chain-of-Thought)

논문 · 입문자 · Jason Wei 외 8명 · 2022 · arXiv

원제 · Chain-of-Thought Prompting Elicits Reasoning in Large Language Models

예시에 풀이 과정을 넣기만 해도 큰 언어 모델의 추론 성능이 크게 오른다는 논문

먼저 알아야 할 것

대형 언어 모델퓨샷 프롬프팅탐욕적 디코딩

다루는 내용

생각의 사슬(CoT) 프롬프팅은 퓨샷 예시를 '질문 → 중간 풀이 문장 → 답'으로 바꿔, 모델이 풀이를 먼저 쓰고 답을 내게 하는 학습 없는 방법입니다. PaLM 540B는 예시 8개로 GSM8K 정확도가 17.9%에서 56.9%로 올라 미세조정한 이전 최고(55%)를 넘었고, StrategyQA 등 상식 · 기호 추론에서도 좋아졌습니다. 수식만 쓰기 · 점만 찍기 · 답 뒤에 풀이 쓰기는 효과가 없어 자연어로 순서대로 추론하는 것이 핵심이며, 약 1,000억 파라미터 이상에서만 나타나는 창발 능력입니다.

초록

저자가 쓴 초록을 옮긴 것입니다.

우리는 생각의 사슬, 즉 일련의 중간 추론 단계를 생성하는 것이 대형 언어 모델의 복잡한 추론 능력을 어떻게 크게 높이는지 탐구합니다. 특히 충분히 큰 언어 모델에서는 생각의 사슬 프롬프팅이라는 간단한 방법, 곧 프롬프트의 예시로 생각의 사슬 시연 몇 개를 제공하는 방법을 통해 이런 추론 능력이 자연스럽게 나타남을 보입니다. 세 가지 대형 언어 모델에 대한 실험에서 생각의 사슬 프롬프팅은 산술, 상식, 기호 추론 과제 전반에서 성능을 높였습니다. 경험적 향상은 놀라울 정도일 수 있습니다. 예를 들어 5,400억 파라미터 언어 모델에 생각의 사슬 예시 8개만으로 프롬프팅하면, 수학 서술형 문제 벤치마크 GSM8K에서 최고 정확도를 달성해 검증기를 붙여 미세조정한 GPT-3까지 넘어섭니다.

해설

생각의 사슬 프롬프팅 (Chain-of-Thought)

프롬프트의 예시에 답만 쓰지 않고 '풀이 과정'을 문장으로 적어 주기만 해도, 충분히 큰 언어 모델이 스스로 단계별 풀이를 써 내며 수학 · 상식 · 기호 추론 문제를 훨씬 잘 푼다는 것을 보인 Google의 논문입니다. 예시 8개만으로 PaLM 540B가 GSM8K에서 당시 최고 기록을 넘었고, 오늘날 "단계별로 생각해 보자"류 프롬프트의 출발점이 됐습니다.

항목내용
원제Chain-of-Thought Prompting Elicits Reasoning in Large Language Models
저자Jason Wei 외 8명 (Google Research, Brain Team)
발표2022 · NeurIPS 2022 · arXiv 2201.11903
트랙 · 수준LLM 활용·에이전트 · 기초
먼저 알면 좋은 것대형 언어 모델, 퓨샷 프롬프팅(예시 몇 개를 주고 따라 하게 하기), 탐욕적 디코딩

들어가기 전에

이 해설은 아래 내용을 안다고 보고 씁니다. 처음이라면 먼저 읽고 오면 수식과 손계산을 훨씬 쉽게 따라올 수 있습니다.

한눈에 보기

  • 일반 퓨샷 프롬프팅과 생각의 사슬(CoT) 프롬프팅 의 차이를 예시로 정확히 압니다.
  • CoT가 왜 효과가 있는지 — '계산 시간', '수식만', '답 뒤에 풀이' 같은 대조 실험으로 무엇이 진짜 원인인지 — 를 이해합니다.
  • CoT가 모델이 충분히 클 때만 효과가 나는 '창발 능력'이라는 점과 그 실무적 의미를 압니다.
  • 업무 프롬프트에 CoT를 어떻게 넣을지 손으로 만들어 봅니다.

초록 (번역)

우리는 생각의 사슬, 즉 일련의 중간 추론 단계를 생성하는 것이 대형 언어 모델의 복잡한 추론 능력을 어떻게 크게 높이는지 탐구합니다. 특히 충분히 큰 언어 모델에서는 생각의 사슬 프롬프팅이라는 간단한 방법, 곧 프롬프트의 예시로 생각의 사슬 시연 몇 개를 제공하는 방법을 통해 이런 추론 능력이 자연스럽게 나타남을 보입니다. 세 가지 대형 언어 모델에 대한 실험에서 생각의 사슬 프롬프팅은 산술, 상식, 기호 추론 과제 전반에서 성능을 높였습니다. 경험적 향상은 놀라울 정도일 수 있습니다. 예를 들어 5,400억 파라미터 언어 모델에 생각의 사슬 예시 8개만으로 프롬프팅하면, 수학 서술형 문제 벤치마크 GSM8K에서 최고 정확도를 달성해 검증기를 붙여 미세조정한 GPT-3까지 넘어섭니다.

무엇을 풀었나

언어 모델을 키우면 많은 과제에서 성능이 좋아졌지만, 여러 단계를 거쳐야 하는 추론 (수학 서술형 문제, 상식 추론, 기호 조작)은 크기만 키워서는 잘 오르지 않았습니다.

그 전에 쓰이던 방법은 두 가지였는데 각자 한계가 있었습니다.

  1. 풀이(rationale)를 붙여 학습 · 미세조정: 자연어 풀이를 만들게 하면 산술 추론에 도움이 됐지만, 질 좋은 풀이를 대량으로 만드는 비용이 큽니다.
  2. 일반 퓨샷 프롬프팅: 질문-답 예시 몇 개만 주는 방식은 학습이 필요 없지만, 추론 과제에서는 성능이 낮고 모델을 키워도 크게 나아지지 않았습니다.

이 논문은 둘의 장점을 합칩니다. 학습 없이, 프롬프트 예시에 '입력 → 생각의 사슬 → 답' 세 쌍을 넣는 것 입니다.

핵심 아이디어

mermaid
flowchart LR
  E["예시 8개: 질문 → 풀이 문장 → 답"] --> P[프롬프트]
  Q[새 질문] --> P
  P --> M[대형 언어 모델 · 탐욕적 디코딩]
  M --> C[모델이 쓴 생각의 사슬]
  C --> A["'The answer is …' 최종 답"]

1. 생각의 사슬 프롬프팅이란

직관. 수학 문제집의 예제에 답만 적혀 있으면 학생은 답을 찍는 법을 배웁니다. 예제에 풀이가 적혀 있으면 학생도 풀이를 쓰며 답을 찾습니다. 언어 모델도 예시의 '형식'을 따라 하므로, 예시에 풀이를 넣으면 풀이를 써 냅니다.

단계별 설명.

  1. 문제 유형에 맞는 예시 몇 개(논문은 대부분 8개)를 고릅니다.
  2. 각 예시에 질문 · 중간 추론 문장 · 최종 답 을 적습니다.
  3. 그 뒤에 새 질문을 붙여 모델에 넣습니다.
  4. 모델은 예시처럼 풀이를 먼저 쓰고 마지막에 답을 냅니다.

논문의 예 (그림 1).

  • 일반 프롬프팅 예시: "Q: 로저는 테니스공 5개가 있다. 공 3개짜리 캔을 2개 더 산다. 이제 몇 개인가? A: 답은 11."
  • CoT 예시: "A: 로저는 공 5개로 시작했다. 3개짜리 캔 2개는 6개다. 5 + 6 = 11. 답은 11."
  • 이렇게 예시를 바꾸면, 일반 프롬프팅에서 틀리던 새 문제(급식실 사과 23개 문제)를 모델이 "23 − 20 = 3, 3 + 6 = 9, 답은 9"라고 풀어 맞힙니다.

수식 (설명용 정리, 논문에 식은 없음). 일반 프롬프팅은 예시 EE와 질문 xx에서 바로 답 yy를 생성합니다. CoT는 중간 풀이 cc를 먼저 생성한 뒤 답을 냅니다.

일반: y∼pθ(y∣E,x),CoT: c∼pθ(c∣E′,x),  y∼pθ(y∣E′,x,c)\text{일반: } y \sim p_\theta(y \mid E, x), \qquad \text{CoT: } c \sim p_\theta(c \mid E', x),\ \ y \sim p_\theta(y \mid E', x, c)
기호뜻
EE(질문, 답) 예시 묶음
E′E'(질문, 풀이, 답) 예시 묶음
xx새 질문
cc모델이 생성한 생각의 사슬(중간 추론 문장들)
yy최종 답
pθp_\theta언어 모델(파라미터 θ\theta는 바꾸지 않음)

숫자로 해 보기 (설명용 예시). "회의실 의자가 12개 있다. 회의 3개에 각각 4명이 더 온다. 의자가 몇 개 더 필요한가? (원래 참석자 10명)"

  • 일반 프롬프팅이면 모델이 곧바로 숫자 하나를 내놓아 틀리기 쉽습니다.
  • CoT라면: "원래 10명. 회의 3개 × 4명 = 12명 추가. 총 22명. 의자 12개이므로 22 − 12 = 10개 더 필요. 답은 10." 각 단계가 짧고 검증 가능해, 틀렸다면 어느 단계에서 틀렸는지 보입니다.

2. CoT가 좋은 네 가지 이유 (논문 정리)

  1. 문제를 단계로 쪼갭니다. 단계가 많은 문제일수록 더 많은 계산(토큰)을 쓸 수 있습니다.
  2. 해석할 창을 줍니다. 모델이 어떻게 답에 이르렀는지 보이고, 어디서 틀렸는지 고칠 기회를 줍니다(다만 모델 내부 계산을 완전히 설명하는 것은 아니라고 덧붙입니다).
  3. 범용입니다. 수학, 상식, 기호 조작 등 사람이 말로 풀 수 있는 과제라면 원칙적으로 적용할 수 있습니다.
  4. 쉽게 씁니다. 기성 대형 모델에 예시만 바꿔 넣으면 됩니다.

3. 무엇이 진짜 원인인가: 대조 실험

직관. "풀이를 쓰게 하니 좋아졌다"고 해도, 그 이유가 풀이의 '내용' 때문인지 그냥 '토큰을 더 써서'인지 가려야 합니다.

LaMDA 137B · PaLM 540B로 세 가지 변형을 비교했습니다.

  • 수식만(equation only): 답 전에 수식만 쓰게 함 → GSM8K에서는 별 도움이 안 됐습니다. 문제 의미가 복잡해 자연어 단계 없이 바로 수식으로 옮기기 어렵다는 뜻입니다. 한두 단계짜리 쉬운 문제에서는 도움이 됐습니다.
  • 계산량만(variable compute only): 풀이에 필요한 글자 수만큼 점(…)만 찍게 함 → 기본 프롬프팅과 비슷했습니다. 토큰을 더 쓰는 것 자체가 원인은 아닙니다.
  • 답 뒤에 풀이(CoT after answer): 답을 먼저 쓰고 풀이를 나중에 쓰게 함 → 기본과 비슷했습니다. 사전학습 지식을 '불러오는' 효과만으로는 설명되지 않고, 순서대로 추론하는 것 자체가 중요하다는 뜻입니다.

또 예시를 다른 사람이 쓰거나, 짧은 문체로 바꾸거나, GSM8K 학습 세트에서 무작위로 뽑아도 CoT가 일반 프롬프팅보다 일관되게 나았습니다(주석자 간 편차는 있음).

4. 모델이 커야 나타나는 '창발 능력'

직관. 작은 모델에게 풀이를 쓰게 하면 그럴듯한 문장은 쓰지만 논리가 엉망이라 오히려 점수가 떨어집니다. 어느 크기 이상이 되어야 풀이가 '진짜 풀이'가 됩니다.

  • 논문은 CoT가 작은 모델에는 효과가 없고, 약 1,000억 파라미터 이상 에서야 이득이 난다고 봅니다.
  • 문제가 어려울수록 이득이 큽니다. 기준 성능이 가장 낮은 GSM8K에서 가장 큰 GPT · PaLM의 성능이 두 배 넘게 올랐고, 한 단계짜리 쉬운 문제(MAWPS의 SingleOp)에서는 이득이 거의 없거나 마이너스였습니다.

5. 업무 프롬프트에 써 보기 (해설용 예시)

직관. 논문의 방식은 그대로 업무에 옮길 수 있습니다. 예시 하나에 '판단 과정'을 짧은 문장 여러 개로 적고, 마지막 줄에 결론을 한 형식으로 고정합니다.

단계별 설명.

  1. 실제로 자주 나오는 질문 유형 2~3개를 고릅니다.
  2. 각 예시에 사람이 실제로 생각하는 순서대로 2~4문장 풀이를 씁니다.
  3. 마지막 줄을 "답:"처럼 고정해 자동으로 결과를 뽑기 쉽게 합니다.
  4. 새 질문을 붙이고, 결과의 풀이를 검토해 어느 단계에서 틀리는지 봅니다.

숫자로 해 보기. 출장비 정산 질문 "2박 3일 출장, 숙박비 한도 1박 10만 원, 실제 숙박비 1박 12만 원. 환급액은?"에 대한 예시 풀이:

  • "숙박은 2박이다. 한도는 1박 10만 원이므로 한도 합계는 20만 원이다. 실제 숙박비는 24만 원이다. 한도까지만 환급하므로 20만 원이다. 답: 20만 원." 이런 예시를 주면 비슷한 정산 질문에서도 모델이 '박 수 → 한도 합계 → 실제 비용 → 둘 중 작은 값' 순서를 따라 하게 됩니다. 단, 논문 결과대로 작은 모델에서는 오히려 나빠질 수 있으니, 쓰는 모델에서 일반 프롬프팅과 직접 비교해 봐야 합니다.

결과

산술 추론 (정확도 %, 예시 8개, 일반 → CoT)

모델GSM8KSVAMPASDivAQuAMAWPS
이전 최고 (미세조정)5557.475.337.988.4
UL2 20B4.1 → 4.410.1 → 12.516.0 → 16.920.5 → 23.616.6 → 19.1
LaMDA 137B6.5 → 14.329.5 → 37.540.1 → 46.625.5 → 20.643.2 → 57.9
GPT-3 175B (text-davinci-002)15.6 → 46.965.7 → 68.970.3 → 71.324.8 → 35.872.7 → 87.1
Codex (code-davinci-002)19.7 → 63.169.9 → 76.474.0 → 80.429.5 → 45.378.7 → 92.6
PaLM 540B17.9 → 56.969.4 → 79.072.1 → 73.925.2 → 35.879.2 → 93.3
  • PaLM 540B + CoT는 GSM8K에서 56.9로, 검증기를 붙여 미세조정한 GPT-3(이전 최고 55)를 넘었습니다.
  • 풀이 속 계산을 외부 계산기로 고치면 PaLM 540B의 GSM8K가 58.6으로 조금 더 올랐습니다.

상식 추론 (일부)

  • PaLM 540B + CoT가 StrategyQA에서 75.6%로 이전 최고(69.4%)를 넘었고, 스포츠 이해에서 84%의 일반 스포츠 애호가보다 높은 95.4%를 냈습니다. CSQA에서는 이득이 작았습니다.

기호 추론: 마지막 글자 이어 붙이기 · 동전 뒤집기 상태 추적에서 PaLM 540B + CoT는 학습 예시와 같은 길이의 문제를 거의 100% 풀었고, 예시보다 긴 문제로도 어느 정도 일반화했습니다.

오류 분석 (LaMDA 137B, GSM8K): 정답을 낸 50개 중 2개를 빼면 풀이도 논리 · 수학적으로 맞았습니다. 틀린 50개 중 46%는 계산 실수나 기호 매핑 오류 같은 작은 실수를 빼면 거의 맞는 풀이였습니다.

왜 중요한가 · 이후 영향

  • '프롬프트로 추론을 끌어낸다'는 분야를 열었습니다. 같은 해 나온 자기 일관성(Self-Consistency)은 CoT 풀이를 여러 번 뽑아 다수결을 하고, 생각의 나무(ToT)는 풀이를 나무처럼 탐색합니다. ReAct는 CoT의 추론과 도구 사용을 번갈아 합니다.
  • 업무 프롬프트의 기본기 가 됐습니다. 계산 · 판단 근거가 필요한 업무(견적, 일정, 정책 해석)에서 "풀이를 먼저 쓰고 답을 마지막 줄에" 같은 형식은 정확도와 검토 가능성을 함께 높입니다.
  • 추론 특화 모델로 이어집니다. 생각을 길게 쓰는 것이 추론 성능에 중요하다는 관찰은, 이후 추론 과정을 강화학습으로 기르는 모델들(강좌의 GRPO 장 등)의 배경이 됩니다.

한계 · 주의할 점

  • 풀이가 그럴듯해도 틀릴 수 있습니다. 논문도 생성된 생각의 사슬이 사실적이거나 올바르다는 보장이 없다고 밝힙니다. 정답을 우연히 맞힌 엉터리 풀이도 있었습니다.
  • 모델 크기에 의존합니다. 작은 모델에서는 오히려 성능이 떨어질 수 있습니다. 작은 모델을 쓰는 업무 자동화라면 꼭 직접 비교해야 합니다.
  • 신경망이 실제로 '추론'하는지는 열린 질문 이라고 논문은 조심스럽게 말합니다.
  • 예시를 손으로 만들어야 하고, 예시 작성자에 따라 성능 편차가 있습니다.
  • 출력이 길어져 토큰 비용과 지연이 늘어납니다. 논문도 CoT가 큰 모델에서만 나타나 실제 서비스에 쓰기에 비용이 크다는 점을 한계로 꼽고, 작은 모델에서 추론을 끌어내는 연구가 필요하다고 말합니다.

스스로 점검

  1. 일반 퓨샷 프롬프팅과 CoT 프롬프팅의 차이는 무엇인가요?

    일반 프롬프팅은 예시에 질문과 답만 주고, CoT는 질문 · 중간 풀이 · 답 세 가지를 줘 모델이 풀이를 먼저 쓰게 합니다.

  2. '점만 찍게 한' 실험이 기본과 비슷했다는 것은 무엇을 뜻하나요?

    단순히 토큰(계산)을 더 쓰는 것이 원인이 아니라, 자연어로 중간 단계를 표현하는 것 자체가 효과의 원인이라는 뜻입니다.

  3. PaLM 540B의 GSM8K 정확도는 CoT로 얼마나 바뀌었나요?

    17.9%에서 56.9%로 39.0%p 올랐고, 이전 최고(55%)를 넘었습니다.

용어 정리

용어쉬운 뜻
생각의 사슬(chain of thought)답에 이르는 중간 추론 단계를 자연어로 적은 것
퓨샷 프롬프팅(few-shot prompting)프롬프트에 예시 몇 개를 넣어 따라 하게 하는 방법
예시(exemplar)프롬프트에 넣는 시범 문제와 답
창발 능력(emergent ability)작은 모델에는 없다가 일정 규모 이상에서 나타나는 능력
탐욕적 디코딩(greedy decoding)매 단계 확률이 가장 높은 토큰을 고르는 생성 방식
GSM8K초등 수준의 여러 단계 수학 서술형 문제 벤치마크
산술 · 상식 · 기호 추론계산 문제 · 세상 상식 판단 · 규칙에 따른 기호 조작
절제 실험(ablation)구성 요소를 하나씩 바꾸거나 빼서 효과의 원인을 찾는 실험
검증기(verifier)생성된 풀이가 맞는지 판정하도록 학습한 모델
탐욕적 디코딩(greedy decoding)매 단계 확률이 가장 높은 토큰 하나만 골라 이어 쓰는 생성 방식

이어서 읽을 것

다음에 볼 것

이 글을 이해했다면 이어서 보면 좋은 항목입니다.

출처

AI 원리부터 이해하기 · LLM 활용·에이전트 모듈

LLM 활용·에이전트 모듈 학습

이 글은 LLM 활용·에이전트 모듈의 학습 자료입니다. 전체 19개 자료 중 3번째입니다.

AI 기초 과정은 현재 진도 저장을 지원하지 않습니다.

출처·원문

원문 보기

요약만

arXiv (논문별 상이)

arXiv 2201.11903