Chain-of-Thought Prompting Elicits Reasoning in Large Language Models
개요
우리는 chain of thought – 중간 추론 단계의 연속 -을 생성하는 것이 어떻게 거대 언어 모델의 복잡한 추론 수행 능력을 크게 향상시키는지를 탐구합니다. 특히, 거대 언어 모델에서 사고의 연쇄 프롬프팅이라는 단순한 방법을 통해 이러한 추론 능력이 자연스럽게 나타나는 방법을 보여줍니다. 여기서 몇 가지 사고의 연쇄 시연이 프롬프팅에서 예시로 제공됩니다.
세 가지 거대 언어 모델에 대한 실험은 사고의 연쇄 프롬프팅이 산술, 상식, 및 상징적 추론 과제에서의 성능을 향상시킨다는 것을 보여줍니다. 경험적인 이득은 눈에 띄게 될 수 있습니다. 예를 들어, PaLM 540B를 단지 여덟 개의 사고의 연쇄 예시로 프롬프트하면 GSM8K 수학 단어 문제 벤치마크에서 최고의 정확도를 달성하며, 검증기와 함께 세밀하게 조정된 GPT-3까지 능가합니다.
- 그림 1: chain of thought 프롬프팅은 대규모 언어 모델이 복잡한 산술, 상식 및 상징적 추론 작업에 대처할 수 있게 합니다. 사고의 연쇄 추론 과정이 강조되어 있습니다.
1 Introduction
최근 NLP 분야는 언어 모델들에 의해 혁명적으로 변화되었습니다 . 언어 모델의 크기를 확대하는 것이 성능 향상 및 샘플 효율성 개선과 같은 다양한 이점을 가져오는 것으로 나타났습니다. 그러나, 모델 크기만을 확대하는 것은 산술, 상식 및 상징적 추론과 같은 도전적인 작업에서 높은 성능을 달성하기에 충분하지 않았습니다 .
이 연구는 대규모 언어 모델의 추론 능력이 두 가지 아이디어에 기반한 간단한 방법으로 어떻게 발휘될 수 있는지를 탐구합니다.
- 첫째, 산술적 추론 기술은 최종 답을 이끄는 자연어 근거를 생성하는 데에서 이점을 얻을 수 있습니다. 이전의 연구에서는 처음부터 학습하거나 사전 훈련된 모델을 미세 조정하는 방법 외에도, 자연어 대신 공식 언어를 사용하는 뉴로-심볼릭 방법(neuro-symbolic methods)을 통해 모델에 자연어 중간 단계를 생성하는 능력을 부여하였습니다 .
- 둘째, 대규모 언어 모델은 프롬프트를 통한 컨텍스트 내 소량샷 학습(in-context few-shot learning)의 흥미로운 가능성을 제공합니다. 즉, 각 새로운 작업에 대해 별도의 언어 모델 체크포인트를 미세 조정하는 대신, 작업을 보여주는 몇 가지 입력-출력 예시로 모델을 “프롬프트” 할 수 있습니다. 놀랍게도, 이 방법은 간단한 질문 응답 작업의 범위에서 성공적이었습니다.
그러나 위의 두 아이디어 모두 주요한 한계를 가지고 있습니다. 근거를 덧붙인 훈련과 미세조정 방법의 경우, 고품질의 근거를 대량으로 생성하는 것은 일반적인 기계 학습에서 사용되는 간단한 입력-출력 쌍보다 훨씬 복잡합니다. 전통적인 소량샷 프롬프트 방법은 추론 능력이 필요한 작업에서는 잘 동작하지 않으며, 언어 모델의 규모를 늘려도 크게 향상되지 않는 경우가 많습니다. 이 논문에서는 이 두 아이디어의 장점을 결합하여 그들의 한계를 피하는 방식을 탐구합니다. 구체적으로, 우리는 triples로 구성된 프롬프트를 주어진 상황에서 언어 모델이 추론 작업을 위한 소량샷 프롬프트 수행 능력을 탐구합니다: h입력, 사고의 연쇄, 출력i. 사고의 연쇄는 최종 출력으로 이어지는 중간 자연어 추론 단계의 연속이며, 우리는 이 접근법을 사고의 연쇄 프롬프팅이라고 합니다. 예시 프롬프트는 그림 1에 표시되어 있습니다.
그림 2: PaLM 540B는 사고의 연쇄 프롬프팅을 사용하여 GSM8K 수학 단어 문제 벤치마크에서 최신 기록 성능을 달성합니다. 미세 조정된 GPT-3와 이전 최고 성능은 Cobbe 등(2021)에서 나왔습니다.
산술, 상식 및 기호적 추론 벤치마크에 대한 실증 평가를 제시하며, 사고의 연쇄 프롬프팅이 표준 프롬프팅을 뛰어넘는 것을 보여줍니다. 때로는 놀라울 정도로 큰 차이로 우세합니다. 그림 2는 이러한 결과 중 하나를 보여주는데, 수학 단어 문제의 GSM8K 벤치마크(Cobbe 등, 2021)에서 PaLM 540B로 수행한 사고의 연쇄 프롬프팅은 표준 프롬프팅을 크게 앞선 성능을 보이며 최신 기록의 성능을 달성합니다. 프롬프트만의 접근 방식은 대규모 훈련 데이터셋이 필요 없기 때문에 중요하며, 일반성을 잃지 않고 단일 모델 체크포인트가 많은 작업을 수행할 수 있습니다. 이 연구는 거대 언어 모델이 어떻게 작업에 대한 자연어 데이터의 소수의 예시를 통해 학습할 수 있는지를 강조하며 (즉, 대규모 훈련 데이터셋을 통해 입력과 출력의 기본 패턴을 자동으로 학습하는 것에 대한 비교), 그것을 설명합니다.
2 Chain-of-Thought Prompting
다단계 수학 단어 문제와 같은 복잡한 추론 작업을 해결할 때 자신의 사고 과정을 생각해보십시오. 문제를 중간 단계로 분해하고 각각을 해결하여 최종 답을 제공하는 것이 일반적입니다: “제인이 엄마에게 꽃 2개를 준 후에 10개가 남습니다… 그리고 아빠에게 3개를 준 후에는 7개가 남을 것입니다… 그러므로 답은 7입니다.” 이 논문의 목표는 언어 모델에게 문제에 대한 최종 답을 얻기 위한 중간 추론 단계의 연속인 유사한 사고의 연쇄를 생성하는 능력을 부여하는 것입니다. 우리는 충분히 거대 언어 모델이 소량샷 프롬프팅의 예시에 사고의 연쇄 추론의 시연이 제공되면 사고의 연쇄를 생성할 수 있다는 것을 보여줄 것입니다.
그림 1은 모델이 그렇지 않았더라면 잘못된 답을 내릴 수학 단어 문제를 해결하기 위해 사고의 연쇄를 생성하는 예시를 보여줍니다. 이 경우의 사고의 연쇄는 해결책과 유사하며 그렇게 해석될 수 있지만, 그것이 답에 도달하기 위한 단계별 사고 과정을 모방하는 아이디어를 더 잘 포착하기 위해 여전히 사고의 연쇄라고 부르기로 결정했습니다.
사고의 연쇄 프롬프팅은 언어 모델에서의 추론을 용이하게 하는 방법으로 몇 가지 매력적인 특성을 가지고 있습니다.
- 첫째, 원칙적으로, 사고의 연쇄는 모델이 다단계 문제를 중간 단계로 분해할 수 있게 해주어, 더 많은 추론 단계를 필요로 하는 문제에 추가 계산을 할당할 수 있게 합니다.
- 둘째, 사고의 연쇄는 모델의 행동에 대한 해석 가능한 창을 제공하여, 특정한 답변에 도달하기 위해 어떻게 도달했는지를 제안하고, 추론 경로가 어디서 잘못되었는지를 디버그하는 기회를 제공합니다(비록 답을 지원하는 모델의 계산을 완전히 특성화하는 것은 여전히 개방된 질문입니다).
- 셋째, 사고의 연쇄 추론은 수학 단어 문제, 상식 추론 및 기호적 조작과 같은 작업에 사용될 수 있으며, 사람들이 언어를 통해 해결할 수 있는 모든 작업에 (적어도 원칙적으로는) 적용 가능합니다.
- 마지막으로, 사고의 연쇄 추론은 소량샷 프롬프팅의 예시에 사고의 연쇄 시퀀스를 포함함으로써 충분히 큰 오프더쉘프 언어 모델에서 쉽게 도출될 수 있습니다.
실증 실험에서 우리는 산술 추론(3절), 상식 추론(4절), 기호 추론(5절)에 대한 사고의 연쇄 프롬프팅의 유용성을 관찰할 것입니다.
3 산술 추론
우리는 Figure 1에 나타난 형식의 수학 단어 문제를 고려하여 시작합니다. 이 문제들은 언어 모델의 산술 추론(arithmetic reasoning) 능력을 측정합니다. 인간에게는 간단하지만 산술 추론은 언어 모델이 종종 어려워하는 작업입니다. 놀랍게도, chainof-thought 프롬프팅을 540B 파라미터 언어 모델과 함께 사용하면 여러 작업에서 작업 특화 finetuned 모델과 비교할 만한 성능을 보이며, 도전적인 GSM8K 벤치마크에서 신기록을 달성하기도 합니다.
3.1 실험 설정
우리는 여러 언어 모델에 대해 다양한 벤치마크에서 chain-of-thought prompting을 탐구합니다.
벤치마크. 다음 다섯 가지 수학 단어 문제 벤치마크를 고려합니다:
- GSM8K 수학 단어 문제 벤치마크
- 다양한 구조의 수학 단어 문제인 SVAMP 데이터셋
- 다양한 수학 단어 문제인 ASDiv 데이터셋
- 대수학 단어 문제인 AQuA 데이터셋
- MAWPS 벤치마크 . 예제 문제는 부록 테이블 12에 제공됩니다.
표준 프롬프팅. 기본값으로, 우리는 Brown et al. (2020)에 의해 널리 알려진 표준 few-shot 프롬프팅을 고려합니다. 여기서 언어 모델은 테스트 시간의 예제에 대한 예측을 출력하기 전에 입력-출력 쌍의 컨텍스트 내 예제를 제공받습니다. 예제들은 질문과 답변으로 형식화됩니다. 모델은 그림 1(왼쪽)에 보여진 것처럼 답을 직접 제공합니다.
Chain-of-thought prompting. 우리가 제안하는 접근법은 few-shot 프롬프팅의 각 예제에 그림 1(오른쪽)에 나타나 있는 것처럼 연관된 답변을 위한 사고의 연쇄를 추가하는 것입니다. 대부분의 데이터셋들은 평가 분할만을 가지고 있기 때문에, 우리는 수동으로 사고의 연쇄를 포함하는 여덟 개의 few-shot 예제들을 구성했습니다 – 그림 1(오른쪽)은 하나의 사고의 연쇄 예제를 보여주며, 전체 예제 세트는 부록 테이블 20에 제공됩니다. (이 특정 예제들은 프롬프트 엔지니어링을 거치지 않았습니다; 견고성은 섹션 3.4와 부록 A.2에서 연구됩니다.) 사고의 연쇄 프롬프팅이 이런 형태로 다양한 수학 단어 문제에서 성공적인 추론을 성공적으로 이끌어낼 수 있는지 조사하기 위해, 우리는 모든 벤치마크에 대해 이 여덟 개의 사고의 연쇄 예제 세트를 사용했습니다. 단, AQuA는 자유롭게 응답하는 대신 객관식입니다. AQuA의 경우, 우리는 부록 테이블 21에 제공된 학습 세트의 네 개의 예제와 솔루션을 사용했습니다.
- 그림 3: 산술, 상식 및 기호 추론 벤치마크에 대한 h입력, 사고의 연쇄, 출력i 삼중 조합의 예시들. 사고의 연쇄는 강조되어 있습니다. 전체 프롬프트는 부록 G에 있습니다.
언어 모델. 우리는 다섯 가지 거대 언어 모델을 평가합니다. 첫 번째는 GPT-3로, text-ada-001, text-babbage-001, text-curie-001, text-davinci-002를 사용하는데, 이는 아마도 InstructGPT 모델의 350M, 1.3B, 6.7B, 175B 파라미터에 해당한다고 추정됩니다. 두 번째는 LaMDA 로, 이는 422M, 2B, 8B, 68B, 137B 파라미터의 모델들을 가지고 있습니다. 세 번째는 PaLM으로, 이는 8B, 62B, 540B 파라미터의 모델들을 가지고 있습니다. 네 번째는 UL2 20B 이고, 다섯 번째는 Codex 입니다. 우리는 디코딩을 통해 모델들로부터 샘플을 얻습니다(비록 후속 연구에서는 많은 샘플된 생성물들에 대한 최종 답변의 다수결을 취함으로써 사고의 연쇄 프롬프팅을 개선할 수 있다고 보여줍니다. LaMDA의 경우, 우리는 다섯 개의 랜덤 시드에 대한 평균 결과를 보고합니다. 여기서 각 시드는 예제들의 다르게 무작위로 섞인 순서를 가집니다. LaMDA 실험에서는 다른 시드들 사이에 큰 변동성이 나타나지 않았기 때문에, 계산을 절약하기 위해 다른 모든 모델에 대한 단일 예제 순서의 결과를 보고합니다.
3.2 결과
사고의 연쇄 프롬프트의 가장 강력한 결과는 그림 4에 요약되어 있으며, 각 모델 컬렉션, 모델 크기 및 벤치마크에 대한 모든 실험 결과는 부록의 표 2에 나와 있습니다. 세 가지 주요한 핵심 내용이 있습니다.
첫째, 그림 4는 사고의 연쇄 프롬프트가 모델 규모의 출현 능력임을 보여줍니다. 즉, 사고의 연쇄 프롬프트는 작은 모델에 대한 성능에 긍정적인 영향을 미치지 않고, ∼100B 파라미터의 모델과 함께 사용될 때만 성능 향상을 가져옵니다. 우리는 직관적으로 작은 규모의 모델이 유창하지만 비논리적인 사고의 연쇄를 생성하여, 표준 프롬프트보다 낮은 성능을 가져오는 것을 발견했습니다.
그림 4: 사고의 연쇄 프롬프트를 통해 대형 언어 모델이 수학 문제를 해결할 수 있습니다. 특히, 사고의 연쇄 논리는 모델 규모의 증가에 따른 출현 능력입니다.
둘째, 사고의 연쇄 프롬프트는 더 복잡한 문제에 대해 더 큰 성능 향상을 보입니다. 예를 들어, GSM8K(기본 성능이 가장 낮은 데이터 세트)의 경우, 가장 큰 GPT와 PaLM 모델에 대한 성능이 두 배 이상 증가했습니다. 반면에, SingleOp는 MAWPS의 가장 쉬운 하위 집합으로, 해결하기 위해 단 하나의 단계만 필요합니다. 여기서 성능 개선은 부정적이거나 매우 작았습니다(Appendix Table 3 참조).
셋째, GPT-3 175B와 PaLM 540B의 사고의 연쇄 프롬프트는 주로 레이블링된 훈련 데이터 세트에 특정 작업 모델을 미세 조정하는 이전의 최고 기록에 비해 유리합니다. 그림 4는 PaLM 540B가 GSM8K, SVAMP, 및 MAWPS에서 사고의 연쇄 프롬프트를 사용하여 어떻게 새로운 최고 기록을 달성하는지 보여줍니다(비록 SVAMP의 경우에는 표준 프롬프트가 이미 이전의 최고 기록을 넘어섰다는 점을 주목하세요). 다른 두 데이터 세트, AQuA와 ASDiv에서, 사고의 연쇄 프롬프트를 사용한 PaLM은 최고 기록에 2% 이내로 도달합니다(Appendix Table 2 참조).
사고의 연쇄 프롬프트가 왜 효과적인지 더 잘 이해하기 위해, GSM8K에 대한 LaMDA 137B의 모델 생성된 사고의 연쇄를 수동으로 조사했습니다. 모델이 올바른 최종 답변을 반환한 50개의 무작위 예제 중에서, 생성된 사고의 연쇄는 올바른 답변에 우연히 도달한 두 개를 제외하고 모두 논리적이고 수학적으로 올바르게 생성되었습니다(Appendix D.1 및 Table 8 참조).
또한, 모델이 잘못된 답변을 제공한 50개의 무작위 샘플도 무작위로 조사했습니다. 이 분석의 요약은, 46%의 사고의 연쇄가 거의 올바르며 작은 오류(계산기 오류, 기호 매핑 오류 또는 누락된 추론 단계)만 있었고, 나머지 54%의 사고의 연쇄는 의미 이해 또는 일관성에서 주요 오류가 있었다는 것입니다(Appendix D.2 참조). 사고의 연쇄 추론 능력이 왜 확장됨에 따라 개선되는지에 대한 작은 통찰력을 제공하기 위해, PaLM 62B에서 발생한 오류와 그 오류가 PaLM 540B로 확장됨에 따라 어떻게 수정되었는지에 대한 유사한 오류 분석을 수행했습니다. 요약하면, PaLM을 540B로 확장하면 62B 모델에서의 한 단계 누락 및 의미 이해 오류의 큰 부분을 수정합니다(Appendix A.1 참조).
3.3 요소 분석 연구
사고의 연쇄 프롬프트를 사용하는 데 관찰된 이점은 다른 유형의 프롬프트를 통해 동일한 성능 향상이 제공될 수 있는지에 대한 자연스러운 질문을 제기합니다. 그림 5는 아래에 설명된 사고의 연쇄의 세 가지 변형을 사용한 요소 분석 연구를 보여줍니다.
방정식만. 사고의 연쇄 프롬프트가 도움이 될 수 있는 한 가지 이유는 평가할 수학적 방정식을 생성하기 때문입니다. 따라서 모델이 답을 제공하기 전에 수학적 방정식만 출력하도록 프롬프트하는 변형을 테스트합니다. 그림 5는 GSM8K에 대한 방정식만의 프롬프트가 큰 도움이 되지 않음을 보여줍니다. 이는 GSM8K의 질문의 의미가 사고의 연쇄에서의 자연어 추론 단계 없이 직접 방정식으로 번역하기에 너무 어렵다는 것을 의미합니다. 그러나 한 단계 또는 두 단계의 문제에 대한 데이터셋의 경우, 질문에서 방정식을 쉽게 유도할 수 있으므로 방정식만의 프롬프트가 성능을 향상시킵니다(부록 표 6 참조). 그림 5: LaMDA 137B와 PaLM 540B를 사용한 프롬프트의 다양한 변형에 대한 요소 분석 연구. 다른 데이터셋에 대한 결과는 부록 표 6과 표 7에 제공됩니다.
변수 계산만 사용하기: 체인 오브 써트 방식이 문제를 풀기 위해 모델에 더 많은 계산을 하게 하는 것이 아닌지 검증하려고 합니다. 문제를 풀기 위한 수식의 문자 수와 동일한 점(…)을 출력하도록 모델을 설정해봤습니다. 결과적으로 이 방법은 기존 방법과 별 차이가 없었으므로, 체인 오브 써트의 성공이 변수 계산 때문만은 아니라는 것을 알 수 있습니다.
답변 후 체인 오브 써트: 체인 오브 써트 방식이 모델에게 미리 학습한 지식에 더 잘 접근하게 해주는 것이 아닌지를 검증하려고 합니다. 따라서 답변을 제공한 후에 체인 오브 써트를 제공하는 방식으로 설정해봤습니다. 이 방법도 기존 방법과 크게 다르지 않았기 때문에, 체인 오브 써트가 단순히 지식을 활성화하는 것 이상의 효과가 있다는 것을 알 수 있습니다.
A Frequently Asked Questions
A.1 모델 규모를 증가시키면 왜 연쇄적 사고 프롬프팅이 개선되는가?
특정 모델 규모에서만 성공적으로 chain-of-thought 추론이 예측 가능하게 나타나는 것은 흥미롭다. 언어 모델의 규모를 확장하는 것이 성능 향상과 샘플 효율성 개선과 같은 이점을 제공한다는 것이 입증되었다(Kaplan 등, 2020). 그러나 연쇄적 사고 추론은 그 성공이 소규모 모델의 성능을 단순히 외삽하여 예측될 수 없는 의미에서 발생한다. 실제로 10B 파라미터보다 작은 대부분의 모델에 대해 연쇄적 사고는 성능을 악화시킨다.
모델 규모가 chain-of-thought 프롬프팅을 개선하는 이유에 대한 질문은 확실히 다각적이며, 우리는 오류 분석을 통해 그것에 대한 통찰을 제공하려는 초기 시도를 했다. 이 작은 분석은 PaLM 62B에서 발생한 45개의 오류를 수동으로 읽고 의미론적 이해(20개 오류), 한 단계 누락(18개 오류), 기타 오류(7개 오류)로 분류하는 것을 포함했다. “기타” 카테고리에는 환상, 반복적인 출력, 심볼 매핑 오류가 포함되었다. 이 분류는 LaMDA의 초기 오류 분석에서 가져온 대략적인 것으로, 연쇄적 사고를 올바르게 만들기 위해 어떤 개선이 필요한지를 기반으로 카테고리가 구상되었다.
그림 9에서 보여진대로, PaLM을 540B 파라미터로 확장하는 것은 모든 세 가지 카테고리에서 상당한 부분의 오류를 수정했다. PaLM을 540B로 확장하여 수정된 의미론적 이해 및 한 단계 누락 오류의 예는 그림 10에 제시되었다. 이 결과는 언어 모델이 모델 규모의 함수로 의미론적 이해 및 논리적 추론 기술을 획득한다는 가설과 일관된 것으로 보인다(그러나 모델 규모는 종종 다른 요인, 예를 들면 훈련 연산의 양과 혼동된다는 점에 주의하라).
- 그림 9: PaLM 62B가 틀린 45개의 문제에 대한 오류 분석. 이 오류들은 의미론적 이해, 한 단계 누락, 그리고 기타로 분류되었다. 기타 카테고리에는 환상, 반복적인 출력, 심볼 매핑 오류가 포함되어 있다. PaLM을 540B로 확장하면 모든 카테고리의 상당한 부분의 오류가 수정됐다.
작은 언어 모델이 실패하는 이유에 대해 세 가지 주목할 만한 점이 있다. 첫 번째 관찰은 작은 언어 모델이 상대적으로 쉬운 기호 매핑 작업에서도 실패한다는 것이다. 섹션 5에서 보여준 바와 같이, 동일한 연쇄적 사고 논리 구조를 사용하여 새로운 예시로 일반화하기만 하면 되는 기호적 추론 작업에서도 작은 언어 모델은 여전히 실패했다. 두 번째 관찰은 작은 언어 모델이 본질적으로 산술 능력이 약하다는 것으로, Brown 등(2020)이 보여준 것처럼 단순한 산술 연산(의미론적 이해 없이)을 수행하는 능력은 충분한 모델 규모를 필요로 한다. 마지막으로, 우리는 작은 언어 모델이 종종 반복 또는 최종 답을 도출하지 못하는 논리로 인해 파싱할 수 있는 최종 답을 생성하지 않았다는 것을 질적으로 알아차렸다.
요약하면, 모델 규모의 결과로서의 연쇄적 사고 추론의 성공은 복잡한 현상으로, (의미론적 이해, 기호 매핑, 주제 유지, 산술 능력, 충실도 등) 다양한 발생 능력들이 관련되어 있을 것으로 보인다. 미래의 연구에서는 사전 훈련 데이터, 모델 아키텍처, 최적화 목적의 속성이 이러한 추론 능력을 인과적으로 가능하게 하는 것이 무엇인지 더 철저하게 조사할 수 있다.
- 그림 10: PaLM을 62B에서 540B로 확장함으로써 수정된 의미론적 이해 및 한 단계 누락 오류의 예시.
A.2 프롬프트 엔지니어링의 역할은 무엇인가?
프롬프트의 주요 고려 사항 중 하나는 정확한 프롬프트에 대한 민감도이다. 프롬프트가 언어 모델에 예상치 못한 방식으로 영향을 미친다는 것을 보여주는 연구는 결코 부족하지 않다(Min 등, 2022). 우리가 연쇄적 사고 주석을 만든 일반적인 방법은 훈련 세트에서 여덟 개의 예시를 가져와 추론 과정을 여러 단계로 분해하여 최종 답변에 이르게 하는 것이었다. 연쇄적 사고 주석의 예시는 그림 3에 제공되며, 전체 프롬프트는 부록 G에 제공된다. 연쇄적 사고가 프롬프트 엔지니어링에 얼마나 민감한지 분석하기 위해, 우리는 다양한 요소에 대한 견고성 실험을 수행했다.
- 다른 주석자들. 우리는 첫 번째로 세 명의 다른 주석자에 대한 견고성을 분석했다(섹션 3.4 및 그림 6). 성능에 뚜렷한 차이가 있음에도 불구하고(이에 대해서는 나중에 논의하겠다), 연쇄적 사고는 산술, 상식 및 기호적 추론의 여덟 가지 데이터셋에서 모든 세 주석자에 대해 기준선보다 큰 차이로 더 좋은 성과를 보였다(표 6 및 표 7). Cobbe 등(2021)의 주석 과정과 유사하게, 주석자들에게는 연쇄적 사고 주석을 작성하는 방법에 대한 구체적인 지시가 주어지지 않았고, 최종 답변에 이르는 단계별 추론 과정을 간단히 작성하라는 것 이외의 지시가 없었다. 따라서 주석은 각 주석자의 고유한 언어적 “연쇄적 사고” 작성 스타일로 작성되었다.
다른 주석자들에 대한 부분은 언어 모델이 “연쇄적 사고” 방식의 주석(즉, 문제를 해결하기 위한 추론 과정을 단계별로 나열한 것)에 얼마나 견고한지를 알아보기 위한 실험을 설명합니다.
- 세 명의 다른 주석자에 대한 견고성: 실험은 세 명의 다른 주석자가 주어진 연쇄적 사고 방식으로 주석을 작성하는 것을 기반으로 했습니다.
- 성능 차이: 세 주석자 모두가 연쇄적 사고 방식을 사용하여 주석을 작성했을 때 모델의 성능은 기준선보다 더 나았습니다. 하지만 세 주석자간의 성능에는 차이가 있었습니다.
- 주석 작성 방법: Cobbe 등의 2021년 연구에서 사용된 방식과 유사하게 주석자들에게는 특별한 지시가 주어지지 않았습니다. 단지 문제를 해결하기 위한 단계별 추론 과정을 작성하라는 간단한 지시만 있었습니다.
- 각자의 스타일: 주석자마다 그들의 고유한 언어적 “연쇄적 사고” 작성 스타일로 주석을 작성했습니다. 이것은 주석자 각자가 문제를 어떻게 해결하는지에 따라 그 방식이 다를 수 있음을 의미합니다.
즉, 이 실험은 언어 모델이 연쇄적 사고 주석에 얼마나 잘 반응하는지, 그리고 주석자의 개별 스타일에 따라 성능에 어떤 영향을 받는지를 알아보기 위한 것입니다.
- 머신 러닝 배경이 없는 주석자들. GSM8K 데이터셋 (Cobbe et al., 2021)은 편리하게도 군중 연산 작업자에 의해 작성된 추론 체인이 포함된 훈련 세트를 제공합니다. 이를 통해 머신 러닝 배경이 없는 독립적인 출처로부터의 추론 체인을 사용할 때 연쇄적 사고가 여전히 작동하는지 조사할 수 있습니다. 그래서 우리는 GSM8K에서 연쇄적 사고의 체인이 포함된 세 가지 예시 세트를 무작위로 추출했습니다. 이 연쇄적 사고 주석도 모든 네 가지 산술 데이터셋에 대해 큰 차이로 기준선을 능가했으며 (표 6), 이는 연쇄적 사고가 특정 주석자 집합에 의존하지 않는다는 것을 나타냅니다.
- 다른 예시들. 위의 GSM8K 예시 실험(표 6)은 또한 연쇄적 사고 프롬프트가 다양한 예시 세트에 대해서도 작동한다는 것을 보여줍니다. 특히, 우리는 모든 예시 세트를 네 가지 산술 데이터셋 모두에 대해 테스트합니다(각 데이터셋에 대해 훈련 세트에서 예시를 선택하는 대신). 이는 예시가 반드시 테스트 예시와 동일한 데이터셋 분포에서 왔을 필요가 없다는 것을 제안합니다.
- 예시들의 다른 순서. 이전의 연구에서는 일부 경우(예: 분류)에서 프롬프트의 순서조차도 중요하다는 것이 나타났습니다. 적은 수의 예시들의 순열을 바꾸는 것만으로도 GPT-3의 SST-2에서의 정확도가 거의 무작위 수준(54.3%)에서 거의 최고 수준(93.4%)까지 변할 수 있다는 것을 보여줍니다(Zhao et al., 2021). 우리는 표 6 및 표 7에서 다른 예시들로부터의 성능의 표준 편차를 보여줍니다. 프롬프트 순서에 관한 표준 편차는 거의 모든 경우에서 상대적으로 미미합니다. 예외적인 경우는 동전 던지기 작업으로, 이 작업에서는 예시 순서가 높은 표준 편차를 보이는데, 이는 Zhao et al. (2021)에서 언급된 이유로—분류의 경우 연속적인 동일 카테고리의 많은 예시들이 모델 출력을 편향시키기 때문일 것입니다.
- 예시들의 다른 수. 또한 적은 수의 예시들의 수가 달라져도 연쇄적 사고 프롬프트로부터의 이득이 일반적으로 계속 유지되는 것을 발견했습니다. 이는 그림 11에서 다섯 개의 데이터셋에 대해 나타나 있습니다(모든 데이터셋에 대해 이를 실행할 계산 능력이 없었습니다). 또한 예비 실험에서 표준 프롬프트에서 예시의 수를 더 늘리는 것이 큰 이득을 가져오지 않았다는 것도 발견했습니다(예를 들어, 예시를 8개에서 16개로 늘리는 것이 표준 프롬프트의 성능을 크게 향상시켜 연쇄적 사고 프롬프트에 따라잡지 못했습니다).
- 다른 언어 모델들. 또 다른 흥미로운 질문은 특정 프롬프트가 한 모델에게 더 잘 작동하는지, 다른 큰 언어 모델들에게도 더 잘 작동하는지에 대한 것입니다. 같은 프롬프트로, 연쇄적 사고 프롬프트는 모든 데이터셋에 대해 세 모델(LaMDA, GPT-3, and PaLM) 모두의 성능을 향상시킵니다. 단, GPT-3의 CSQA와 StrategyQA를 제외하고는 그렇습니다(표 1, 표 4, 표 5). 연쇄적 사고로부터의 이득이 모델 간에 완벽하게 전달되지 않는다는 사실은 한계점입니다. 추가 연구를 통해 어떻게 다른 사전 훈련 데이터셋과 모델 구조가 연쇄적 사고 프롬프트로부터의 성능 향상에 영향을 미치는지 조사할 수 있습니다.
그럼에도 불구하고, 프롬프트 엔지니어링은 여전히 중요합니다. 산술적 추론에 대한 프롬프트는 상대적으로 견고한 결과를 보여줘도, 프롬프트 엔지니어링이 여전히 중요하다는 것을 명확하게 하고 싶습니다. 많은 경우에서 성능을 크게 향상시킬 수 있습니다. 대부분의 연쇄적 사고 주석은 표준 프롬프트보다 우월하지만, 많은 경우에 큰 변동이 있습니다. 예를 들어, 동전 던지기 작업에서는 Annotator A의 경우 성능이 99.6%로, Annotator C의 경우 71.4%로 변동했지만, 둘 다 표준 프롬프팅 = 50.0%보다 높았습니다(표 7 참조). 심지어 좋은 성능을 위해 프롬프트 엔지니어링이 필요한 작업도 있습니다. 예비 실험에서 우리는 언어 모델이 5개 항목의 목록 순서를 뒤집도록 하는 연쇄적 사고를 사용해 보려했습니다. 두 공저자는 최선을 다해 작업을 해결할 연쇄적 사고 프롬프트를 작성하지 못했지만, 세 번째 공저자는 작업을 완벽하게 해결하는 연쇄적 사고를 작성할 수 있었습니다.
연쇄적 사고 주석을 견고한 방식으로 생성하는 방법은 향후 연구의 흥미로운 방향이 될 수 있습니다. 예를 들어, 여기서의 아이디어는 큰 언어 모델을 사용하여 프롬프팅을 통해 연쇄적 사고를 자동으로 생성하는 것일 수 있습니다(그리고 이것을 검증 세트에서 최적화할 수 있습니다).
A.3 연쇄적 사고 프롬프트는 내 관심의 작업에 성능을 향상시킬까요?
연쇄적 사고 프롬프트는 원칙적으로 모든 텍스트 대 텍스트 작업에 적용 가능하나, 특정 작업에 대해 더 유용합니다. 이 논문의 실험을 기반으로, 우리의 직감은 세 가지 조건이 충족될 때 연쇄적 사고가 가장 도움이 된다는 것입니다: (1) 작업이 도전적이며 다단계 추론이 필요하다. (2) 거대 언어 모델이 사용된다. (3) 스케일링 곡선이 상대적으로 평탄하다. 반대로, 이러한 조건 중 하나 이상이 충족되지 않을 때 이점은 작아집니다.
이러한 직관은 아마도 산술 추론 결과에 의해 지지받을 수 있습니다. 연쇄적 사고 프롬프트로부터의 성능 향상은 PaLM 540B가 GSM8K에서 가장 크게 나타나는데(다단계 문제, 평탄한 스케일링 곡선), 이는 이러한 조건을 충족하기 때문입니다. 성능 향상은 MAWPS의 하위 집합에서 한 두 단계만 필요한 경우(SingleOP, SingleEq, AddSub)에는 작습니다. 여기서 PaLM 540B는 이미 90% 이상의 성능을 달성하고 있습니다(그리고 성능이 이미 강력할 때 개선의 여지가 더 적다는 것도 일반적으로 사실입니다).
비록 이 논문에서는 다단계 추론 작업(산술, 상식, 기호)에 중점을 뒀지만, 연쇄적 사고 프롬프트는 원칙적으로 인간이 “생각의 연쇄”를 사용하여 해결하는 모든 작업에 적용될 수 있습니다. 기계 번역 등과 같은 다양한 작업에서의 연쇄적 사고 프롬프트의 실증 평가는 향후 작업으로 남겨둡니다.
A.4 일부 산술 추론 데이터셋에서 방정식만으로 프롬프팅하는 것이 왜 충분하지 않은가요?
방정식만을 중간 단계로 프롬프팅하는 것은 많은 데이터셋, 특히 몇 가지 추론 단계만 필요한 데이터셋(SVAMP, ASDiv, MAWPS)에서 도움이 됩니다. 그러나 GSM8K의 경우, 방정식만을 사용하는 것은 성능을 크게 향상시키지 못했습니다. 정성적 분석을 기반으로, 우리는 이러한 질문이 모델이 직접 수학 방정식으로 번역하기에 너무 의미론적으로 어려운 것이라고 생각합니다. LaMDA 137B에서의 이 예를 고려해보십시오:
이 예제를 통해 방정식만을 사용할 때 어떻게 잘못된 답이 나올 수 있는지를 볼 수 있습니다. 정확한 방정식으로의 번역이 문제의 의미를 완전히 포착하지 못하기 때문입니다. 사고의 흐름을 따라갈 때 모델은 문제의 각 부분을 분해하고 단계적으로 해결하므로, 정확한 답을 얻을 수 있습니다.
모델이 질문의 모든 의미를 하나의 방정식으로 직접 번역하는 것은 어렵습니다. 그러나 사고의 흐름(chain of thought)을 사용하면 중간 단계에서 자연어를 통해 질문의 각 부분에 대해 더 잘 추론할 수 있습니다.
이것은 다양한 복잡한 문제를 해결하는 데 있어서 단계적 접근법의 중요성을 강조합니다. 문제의 복잡한 세부 사항을 쪼개어 개별적으로 처리하면, 각 부분에 대한 해결책을 결합하여 전체 문제의 답을 얻을 수 있습니다. 이러한 방식으로, 사고의 흐름은 모델에게 문제의 복잡성을 단순화하고, 문제의 핵심 요소를 명확하게 파악하는 데 도움을 줍니다.
C 확장된 관련 연구
사고의 흐름(chain-of-thought) 프롬프팅은 몇 가지 이전 방향성에서 영감을 받은 일반적인 접근법입니다: 프롬프팅, 자연어 설명, 프로그램 합성/실행, 수치 및 논리적 추론, 그리고 중간 언어 단계.
- 프롬프팅(Prompting): 프롬프팅은 머신 러닝 모델을 위한 입력 형식을 조작하여 모델의 출력을 가이드하는 연구 분야입니다. GPT-3와 같은 대형 언어 모델에서는, 올바른 프롬프트 선택이 출력의 품질에 큰 영향을 미칠 수 있습니다.
- 자연어 설명(Natural Language Explanations): 자연어 설명은 모델의 예측을 설명하기 위해 인간이 이해할 수 있는 형식의 설명을 제공하는 연구 분야입니다. 이 방식은 사용자가 모델의 결정을 이해하고 신뢰하는 데 도움을 줄 수 있습니다.
- 프로그램 합성/실행(Program Synthesis/Execution): 이 연구 분야는 특정 작업을 수행하기 위해 프로그램 코드를 자동으로 생성하거나 실행하는 방법에 관한 것입니다. 언어 모델은 코드를 작성하거나 실행하여 주어진 문제를 해결하는 데 도움을 줄 수 있습니다.
- 수치 및 논리적 추론(Numeric and Logical Reasoning): 이 분야는 수학적 또는 논리적 문제를 해결하는 데 필요한 모델의 능력에 관한 연구를 포함합니다. 사고의 흐름(chain-of-thought) 프롬프팅은 이러한 추론 능력을 개선하기 위한 방법 중 하나로 볼 수 있습니다.
- 중간 언어 단계(Intermediate Language Steps): 일부 작업에서는 복잡한 문제를 여러 단계로 나누어 해결하는 것이 유용할 수 있습니다. 중간 언어 단계는 이러한 중간 단계를 정의하고 구현하는 연구를 포함합니다.
이러한 관련 작업들은 사고의 흐름(chain-of-thought) 프롬프팅의 중요성과 그것이 어떻게 여러 연구 분야와 관련되어 있는지를 강조합니다.