검색
← 모듈 로드맵

자기 일관성으로 생각의 사슬 추론 높이기 (Self-Consistency)

논문 · 준전문가 · Xuezhi Wang 외 7명 · 2022 · arXiv

원제 · Self-Consistency Improves Chain of Thought Reasoning in Language Models

생각의 사슬을 여러 번 샘플링해 가장 많이 나온 답을 고르는 단순한 디코딩 방법

먼저 알아야 할 것

생각의 사슬 프롬프팅탐욕적 디코딩 · 샘플링다수결조건부 확률

다루는 내용

자기 일관성은 생각의 사슬 프롬프팅의 탐욕적 디코딩 대신 풀이를 여러 개(논문은 40개) 샘플링하고, 각 풀이의 최종 답을 다수결해 가장 일관된 답을 고릅니다. 맞는 풀이는 다양해도 같은 답에 모인다는 직관에 기반하며, 추가 학습 · 보조 모델 없이 PaLM-540B의 GSM8K를 56.5%에서 74.4%로, GPT-3(code-davinci-002)를 60.1%에서 78.0%로 올렸습니다. 확률 가중보다 단순 다수결이 비슷하거나 나았고, 빔 서치 · 확률 재순위 · 프롬프트 앙상블보다 좋았으며, 비용은 늘지만 5~10개 경로로도 대부분의 이득을 얻습니다.

초록

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

사전학습된 대형 언어 모델과 결합한 생각의 사슬 프롬프팅은 복잡한 추론 과제에서 고무적인 결과를 냈습니다. 이 논문에서는 생각의 사슬 프롬프팅에서 쓰이던 단순한 탐욕적 디코딩을 대체하는 새로운 디코딩 전략, 자기 일관성을 제안합니다. 이 방법은 먼저 탐욕적인 경로 하나만 취하는 대신 다양한 추론 경로들을 샘플링하고, 샘플링한 추론 경로들을 주변화해 가장 일관된 답을 고릅니다. 자기 일관성은 복잡한 추론 문제가 대개 하나의 정답에 이르는 여러 가지 사고방식을 허용한다는 직관을 활용합니다. 폭넓은 실험 평가에서, 자기 일관성은 GSM8K(+17.9%), SVAMP(+11.0%), AQuA(+12.2%), StrategyQA(+6.4%), ARC-challenge(+3.9%)를 포함한 대표적인 산술 · 상식 추론 벤치마크에서 생각의 사슬 프롬프팅의 성능을 눈에 띄게 높였습니다.

해설

자기 일관성으로 생각의 사슬 추론 높이기 (Self-Consistency)

생각의 사슬(CoT) 풀이를 한 번만 뽑지 말고 여러 번(예: 40번) 다르게 뽑은 뒤, 가장 많이 나온 답을 고르자 는 아주 단순한 디코딩 방법입니다. 추가 학습 · 별도 모델 없이 GSM8K에서 PaLM-540B 정확도를 17.9%p 올리는 등 산술 · 상식 추론 전반에서 큰 향상을 냈습니다.

항목내용
원제Self-Consistency Improves Chain of Thought Reasoning in Language Models
저자Xuezhi Wang 외 7명 (Google Research, Brain Team)
발표2022 · ICLR 2023 · arXiv 2203.11171
트랙 · 수준LLM 활용·에이전트 · 중급
먼저 알면 좋은 것생각의 사슬 프롬프팅, 탐욕적 디코딩 vs 샘플링(온도 · top-k), 다수결, 조건부 확률

들어가기 전에

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

한눈에 보기

  • 탐욕적 디코딩(가장 확률 높은 토큰만 고르기)이 추론에서 왜 손해일 수 있는지 알게 됩니다.
  • 샘플링 → 답 추출 → 다수결 3단계의 자기 일관성(self-consistency)을 손계산으로 이해합니다.
  • 다수결 대신 확률로 가중하는 방법들과 비교해, 왜 '그냥 다수결'이 잘 통했는지 압니다.
  • 경로 수 · 비용 · 효과의 관계를 보고 실무에서 몇 번 뽑으면 될지 판단할 수 있습니다.

초록 (번역)

사전학습된 대형 언어 모델과 결합한 생각의 사슬 프롬프팅은 복잡한 추론 과제에서 고무적인 결과를 냈습니다. 이 논문에서는 생각의 사슬 프롬프팅에서 쓰이던 단순한 탐욕적 디코딩을 대체하는 새로운 디코딩 전략, 자기 일관성을 제안합니다. 이 방법은 먼저 탐욕적인 경로 하나만 취하는 대신 다양한 추론 경로들을 샘플링하고, 샘플링한 추론 경로들을 주변화해 가장 일관된 답을 고릅니다. 자기 일관성은 복잡한 추론 문제가 대개 하나의 정답에 이르는 여러 가지 사고방식을 허용한다는 직관을 활용합니다. 폭넓은 실험 평가에서, 자기 일관성은 GSM8K(+17.9%), SVAMP(+11.0%), AQuA(+12.2%), StrategyQA(+6.4%), ARC-challenge(+3.9%)를 포함한 대표적인 산술 · 상식 추론 벤치마크에서 생각의 사슬 프롬프팅의 성능을 눈에 띄게 높였습니다.

무엇을 풀었나

생각의 사슬 프롬프팅은 모델이 풀이를 쓰게 해 추론 성능을 크게 올렸지만, 풀이를 탐욕적 디코딩(greedy decoding) 으로 딱 한 번만 생성했습니다. 매 단계 가장 확률 높은 토큰만 고르는 방식입니다. 논문은 이 방식이 반복적이고 국소 최적에 빠지기 쉽다고 지적합니다. 첫 몇 단계에서 실수하면 끝까지 그 길로 갑니다.

이전에 성능을 높이던 방법은 대부분 추가 학습 이 필요했습니다. 풀이를 판정하는 검증기(verifier)를 따로 학습하거나, 사람 주석으로 재순위기를 학습하는 식입니다.

이 논문의 질문은 이것입니다. 추가 학습 없이, 디코딩 방법만 바꿔서 추론을 더 정확하게 할 수 있을까?

핵심 아이디어

mermaid
flowchart LR
  P[CoT 예시 + 질문] --> S1[샘플링 경로 1]
  P --> S2[샘플링 경로 2]
  P --> SN[샘플링 경로 40]
  S1 --> A1["'The answer is' 뒤 답 추출"]
  S2 --> A2[답 추출]
  SN --> AN[답 추출]
  A1 --> V[다수결: 가장 많이 나온 답]
  A2 --> V
  AN --> V
  V --> F[최종 답]

1. 직관: 맞는 풀이는 여러 길이어도 같은 답에 모인다

직관. 어려운 문제를 여러 사람이 서로 다른 방법으로 풀었는데 대부분 같은 답이 나왔다면, 그 답을 더 믿게 됩니다. 틀린 풀이는 저마다 다르게 틀리기 때문에 같은 오답으로 모이기 어렵습니다.

논문은 이것을 가설로 세웁니다. 올바른 추론 과정은 다양하더라도 최종 답에서 더 잘 일치하고, 틀린 과정은 그렇지 않다. 사람의 경험과도 같습니다. 여러 사고방식이 같은 답에 이르면 그 답에 더 확신을 갖습니다.

2. 방법: 샘플링 → 답 추출 → 다수결

단계별 설명.

  1. 생각의 사슬 예시(산술은 사람이 쓴 8개)로 프롬프트를 만듭니다.
  2. 탐욕적 디코딩 대신 샘플링 으로 풀이를 여러 개 만듭니다. 논문은 실행마다 40개를 뽑았습니다. 설정 예: PaLM-540B는 온도 T=0.7T = 0.7, top-k=40k = 40 / UL2 · LaMDA는 T=0.5T = 0.5, k=40k = 40 / GPT-3는 T=0.7T = 0.7(top-kk 없음).
  3. 각 풀이에서 "The answer is" 뒤의 답을 꺼냅니다(산술은 첫 숫자, 상식은 그 뒤 문자열 전체).
  4. 가장 많이 나온 답을 최종 답으로 고릅니다. 풀이(경로)를 '주변화해 없앤다'고 표현합니다.

수식.

a^=arg⁡max⁡a∑i=1m1(ai=a)\hat{a} = \arg\max_{a} \sum_{i=1}^{m} \mathbb{1}(a_i = a)
기호뜻
mm샘플링한 풀이(경로) 수
rir_i, aia_iii번째 풀이와 그 최종 답
1(⋅)\mathbb{1}(\cdot)조건이 맞으면 1, 아니면 0
a^\hat{a}가장 많이 나온 답

숫자로 해 보기 (논문 그림 1의 문제를 바탕으로 한 설명용 예시). "재닛의 오리는 하루에 달걀 16개를 낳는다. 아침에 3개를 먹고, 머핀에 4개를 쓴다. 나머지를 개당 2달러에 판다. 하루에 얼마를 버나?"

  • 경로 1: 16−3−4=916 - 3 - 4 = 9, 9×2=189 \times 2 = 18 → 18달러
  • 경로 2: "3개를 먹고 4개로 머핀을 만드니 3×4=123 \times 4 = 12 … 16−12=416 - 12 = 4, 4×2=84 \times 2 = 8" → 8달러 (틀린 풀이)
  • 경로 3: "남는 달걀 16−7=916 - 7 = 9개, 9×2=189 \times 2 = 18" → 18달러

5개를 뽑아 답이 (18, 8, 18, 18, 26)이면 18이 3표로 최종 답입니다. 탐욕적 디코딩이 하필 경로 2 같은 풀이를 냈다면 틀렸겠지만, 여러 경로의 '합의'가 오류를 걸러 냅니다.

왜 이렇게 했나. 추론 과제는 답이 정해져 있어 그동안 탐욕적 디코딩을 주로 썼습니다. 하지만 논문은 답이 고정돼 있어도 풀이 과정에 다양성을 주는 것이 큰 도움이 된다 는 점을 발견했습니다. 열린 글쓰기에서 쓰던 샘플링을 추론에 가져온 셈입니다. 또 추가 학습 · 보조 모델 · 사람 주석이 전혀 필요 없고, 여러 모델을 학습시켜 합치는 일반 앙상블과 달리 모델 하나로 하는 '자기 앙상블' 입니다.

3. 다수결 vs 확률 가중

직관. 투표할 때 '한 사람 한 표'로 셀지, '자신감이 큰 사람에게 표를 더 줄지'의 문제입니다.

각 풀이에 모델이 매긴 확률 P(ri,ai∣프롬프트,질문)P(r_i, a_i \mid \text{프롬프트}, \text{질문})로 가중할 수도 있습니다. 길이에 따라 확률이 작아지는 것을 보정하려고 토큰 수로 정규화하는 방법도 있습니다.

P(ri,ai∣prompt,question)=exp⁡ ⁣(1K∑k=1Klog⁡P(tk∣prompt,question,t1,…,tk−1))P(r_i, a_i \mid \text{prompt}, \text{question}) = \exp\!\left(\frac{1}{K} \sum_{k=1}^{K} \log P(t_k \mid \text{prompt}, \text{question}, t_1, \dots, t_{k-1})\right)
기호뜻
tkt_k풀이 · 답의 kk번째 토큰
KK풀이 · 답의 전체 토큰 수

숫자로 해 보기 (설명용). 풀이 3개의 정규화 확률이 (0.31, 0.29, 0.30)이고 답이 (18, 8, 18)이라면, 가중 합은 18: 0.61, 8: 0.29로 다수결과 같은 결론입니다. 논문도 정규화 확률들이 서로 매우 비슷해서, 모델이 맞는 풀이와 틀린 풀이를 '비슷하게 그럴듯하다'고 본다는 것을 확인했습니다.

PaLM-540B 비교 (정확도 %)

집계 방법GSM8KMultiArithAQuASVAMPCSQAARC-c
탐욕적 디코딩56.594.735.879.079.085.2
가중 평균(정규화)22.159.715.740.552.151.7
가중 합(정규화)74.199.348.086.880.788.7
다수결(가중 없음)74.499.348.386.680.788.7

다수결이 정규화 가중 합과 거의 같았습니다. 논문은 이것이 모델의 확률이 잘 보정돼 있지 않다는 뜻이며, 그래서 이전 연구들이 별도 재순위기를 학습했던 것이라고 설명합니다.

4. 실무에서 써 보기 (해설용 예시)

직관. 중요한 계산이나 판정을 맡길 때, 같은 질문을 몇 번 다시 물어 답이 흔들리는지 보는 것만으로도 믿을 만한지 가늠할 수 있습니다.

단계별 설명.

  1. 답이 짧고 비교 가능한 형식(숫자 · 선택지 · 예/아니오)이 되도록 프롬프트 마지막 줄을 "답:"으로 고정합니다.
  2. 온도를 0보다 크게(논문 설정은 0.5~0.7) 해서 같은 질문을 mm번 보냅니다.
  3. 답만 모아 개수를 셉니다. 가장 많은 답을 고르고, 그 비율을 '합의도'로 함께 기록합니다.
  4. 합의도가 낮으면(예: 절반 미만) 사람이 확인하거나 검색 같은 다른 방법으로 넘깁니다. ReAct가 바로 이 규칙을 썼습니다.

숫자로 해 보기 (비용 계산, 설명용). 질문 하나의 풀이가 평균 300토큰이라면, 탐욕적 디코딩은 300토큰, 경로 5개는 1,500토큰, 40개는 12,000토큰입니다. 논문이 권하듯 5~10개로 시작하면 비용은 5~10배에 머물면서 이득의 대부분을 얻을 수 있습니다. 하루 1,000건을 처리한다면 경로 5개 기준 하루 150만 토큰이 필요하다는 식으로 미리 계산해 둘 수 있습니다.

결과

산술 추론 (정확도 %, CoT 탐욕적 디코딩 → 자기 일관성)

모델GSM8KSVAMPAQuAMultiArithASDiv
UL2-20B4.1 → 7.312.6 → 19.423.6 → 26.910.7 → 15.016.9 → 21.5
LaMDA-137B17.1 → 27.738.9 → 53.317.7 → 26.851.8 → 75.749.0 → 58.2
PaLM-540B56.5 → 74.479.0 → 86.635.8 → 48.394.7 → 99.374.0 → 81.9
GPT-3 (code-davinci-002)60.1 → 78.075.8 → 86.839.8 → 52.096.2 → 100.080.1 → 87.8
  • 네 모델 모두에서 크게 올랐고, 모델이 클수록 향상폭이 커지는 경향이었습니다. GSM8K 이전 최고(미세조정 + 검증기 GPT-3)는 55였습니다.

상식 · 기호 추론 (일부, CoT → 자기 일관성)

  • PaLM-540B: StrategyQA 75.3 → 81.6, ARC-c 85.2 → 88.7
  • GPT-3 (code-davinci-002): StrategyQA 73.4 → 79.8, ARC-c 83.6 → 87.5
  • 6개 과제 중 5개에서 최고 기록이었습니다.

경로 수: 샘플을 많이 뽑을수록 정확도가 꾸준히 올랐고, 대부분 빠르게 포화됐습니다.

다른 방법과 비교 (LaMDA-137B)

방법GSM8KMultiArithSVAMP
CoT (탐욕적)17.151.838.9
프롬프트 3세트 앙상블18.657.142.1
예시 순서 40가지 앙상블19.260.942.7
자기 일관성 (40개 경로)27.775.753.3
  • 같은 수의 샘플로 '확률 순 재순위(sample-and-rank)'보다도, 빔 서치보다도 나았습니다(빔 서치 비교는 UL2-20B 실험). 논문은 빔 서치가 출력 다양성이 낮기 때문이라고 설명합니다.
  • 온도 · top-kk 같은 샘플링 설정, 모델 크기, 불완전한 프롬프트에도 견고했습니다. CoT를 넣으면 오히려 성능이 떨어지는 일부 NLP 과제에서도 자기 일관성은 성능을 높였습니다.

왜 중요한가 · 이후 영향

  • 가장 쉬운 정확도 향상 기법 중 하나가 됐습니다. 같은 질문을 여러 번 물어 다수결하는 방식은 오늘날 LLM 평가(예: 'maj@k')와 실무에서 흔히 쓰입니다.
  • '추론 시간 계산'을 늘려 성능을 사는 발상의 초기 사례입니다. 학습은 그대로 두고 생성을 더 많이 해서 정확도를 높입니다. 생각의 나무(ToT)는 이를 더 나아가 탐색으로 바꿨습니다.
  • ReAct는 자기 일관성(CoT-SC)을 내부 지식 쪽 방법으로 쓰고, 다수결이 자신 없을 때 검색으로 넘어가는 규칙을 만들었습니다.

한계 · 주의할 점

  • 계산 비용이 늘어납니다. 논문도 이를 주된 한계로 꼽고, 실무에서는 5~10개 경로로 시작해도 대부분의 이득을 얻을 수 있다고 권합니다.
  • 답이 정해진 과제에만 바로 쓸 수 있습니다. 자유 서술형은 '두 답이 같은가'를 판단할 일관성 기준을 따로 정의해야 합니다.
  • 풀이 자체가 틀릴 수 있습니다. 다수결로 답은 맞아도 풀이 속 숫자가 부정확한 경우가 있었다고 논문이 밝힙니다.
  • 모델 확률이 잘 보정돼 있지 않아, '자신감'만으로는 맞고 틀림을 가리기 어렵습니다.

스스로 점검

  1. 자기 일관성의 3단계는?

    ① CoT 프롬프트로, ② 탐욕적 디코딩 대신 여러 풀이를 샘플링하고, ③ 각 풀이의 최종 답을 모아 가장 많이 나온 답을 고릅니다.

  2. 10개 경로의 답이 (42, 40, 42, 38, 42, 40, 42, 42, 40, 38)이면 최종 답은?

    42가 5표, 40이 3표, 38이 2표이므로 42입니다.

  3. 왜 빔 서치보다 샘플링이 나았나요?

    빔 서치는 비슷한 후보만 남겨 풀이의 다양성이 낮습니다. 자기 일관성은 서로 다른 풀이들의 '합의'에서 힘을 얻으므로 다양성이 중요합니다.

용어 정리

용어쉬운 뜻
자기 일관성(self-consistency)여러 풀이를 뽑아 가장 많이 나온 답을 고르는 디코딩 방법
탐욕적 디코딩(greedy decoding)매 단계 확률이 가장 높은 토큰만 고르는 생성 방식
샘플링(sampling)확률에 따라 무작위로 토큰을 뽑는 생성 방식
온도(temperature)샘플링의 무작위 정도. 높을수록 다양
top-kk 샘플링확률 상위 kk개 토큰 안에서만 뽑는 방식
추론 경로(reasoning path)모델이 쓴 한 개의 풀이 과정
주변화(marginalization)중간 과정(풀이)을 합쳐 없애고 최종 답만 보는 것
다수결(majority vote)가장 많이 나온 답을 고르는 것
보정(calibration)모델이 매긴 확률이 실제 정답률과 맞는 정도
앙상블(ensemble)여러 모델 · 설정의 결과를 합치는 방법

이어서 읽을 것

다음에 볼 것

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

출처

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

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

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

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

출처·원문

원문 보기

요약만

arXiv (논문별 상이)

arXiv 2203.11171