안녕하세요. 이번 리뷰는 Chain-of-Thought Prompting에 대해 리뷰해보려고 합니다. 저는 저희 팀 grasping 과제 제안서에서 언급되던 프롬프팅에 관련하여 이해를 돕고자 본 논문을 찾게 되었습니다. 부록까지 포함하면 장장 43페이지의 매우 긴 논문이어서 읽기에 굉장히 진이 빠졌지만, 프롬프팅에 있어 인간의 사고과정을 모방하는 개념을 끌고 온 22년에 구글이 냈던 유명한 논문인만큼 잘 정리해보려고 노력해봤습니다. (편의상 CoT라고 줄여 말하겠습니다.) CoT는 “중간 사유 과정들 간의 연쇄작용”을 생성하는 방법으로, LLM의 복잡한 추론 수행 능력을 크게 향상시키는 것을 관찰할 수 있는 접근법입니다. 특히, 매우 큰 데이터셋으로 LLM의 성능을 높여나갔던 시기였던 만큼(사실 현재까지도.), 충분히 큰 scale의 LLM에서 “Chain-of-Thought in Prompting”이라는 간단한 방법론을 통해 좋은 추론 능력이 자연스럽게 발현됨을 보여주었는데요, CoT Prompting은 다시 말하면 몇 가지 연쇄적 사고의 예시를 프롬프트의 예시로써 모델에 제공하는 방법이 되겠습니다.
CoT Prompting은 크게 3가지 실험으로 논문이 구성되는데요. 산술 추론, 상식 추론, 상징적 추론 각각의 태스크에서의 수행 능력 관련 분석이었습니다. 그럼, 이번 주 리뷰를 시작해보겠습니다.
<1. Introduction>
NLP 분야는 ELMo(2018), BERT(2019), GPT-3(2020)에 이르기까지 언어 모델들이 다양하게 연구되면서 혁신이 이루어져 왔습니다. Language 모델의 사이즈를 scaling up하는 것은 GPT-3(2020)을 통해 높은 성능을 가져다주고, 샘플 효율성과 같은 다양한 이점도 주는 것으로 나타났습니다(Scaling Laws for Neural Language Models; OpenAI 2020, GPT-3; 2020). 하지만 이 다음으로는 모델 사이즈만 scaling up 하는 것만으로는 산술, 상식, 상징적 추론과 같은 챌린징한 태스크들에서 높은 성능을 달성하기에는 충분하지 않다는 것이 입증되었습니다.(Gopher; 2021)
그 다음은 이런 두 방향의 연구 결과를 기반으로 한 간단한 방법론에 의해 LLM의 추론 능력에 대한 잠재력들이 추가적으로 연구되어져 왔습니다.
첫번째로, 산술 추론 기술은 최종 답변으로 이어지는 자연어 근거를 생성함으로써 이점을 얻을 수 있었습니다. 이전 연구는 모델에게 자연어 대신 공식적인 언어를 사용하는 neuro-symbolic 방법론(신경망 기반의 학습(딥러닝)과 전통적인 기호와 규칙 논리 기반(symbolic reasoning)를 결합) 이외에도 처음부터 학습된/사전 학습된 모델을 fine tuning하여(GPT-3 fine tuning; 2021) 자연어 중간 step을 생성할 수 있는 능력을 부여했습니다.
두번째로, LLM은 프롬프트를 통해 context 내 few-shot learning의 흥미로운 전망을 보여줍니다. 즉 개별 언어 모델의 체크포인트를 각 새로운 태스크마다 finetuning 하는 것 대신에, 태스크를 보여줄 few input-output 예시를 통해서 단순히 하나의 모델을 “프롬프팅”할 수 있었던 것이죠. 주목할만한 점은, 이건 다양한 simple QA 태스크에서 특히 성공적이었습니다.
하지만, 위 아이디어 둘 다 또 주요한 한계가 있었습니다. 근거-증강 학습과 파인튜닝 방법론에서, 고수준의 큰 근거셋을 만드는 것은 cost가 많이 들며, 여기서 근거는 일반적인 머신러닝에서 사용되는 단순한 입력-출력 쌍보다 더 복잡합니다. 또한 GPT-3에서 사용된 전통적인 few-shot 프롬프팅 방법론은 추론 능력이 요구되는 태스크에서는 성능이 저조하며, 이건 모델 규모를 키운다고 해서 그 능력이 충분히 향상되지는 않았습니다.
본 논문에서는 이러한 한계를 피하기 위한 방법으로 두 가지 아이디어의 강점만을 결합하고자 했습니다. 특히, 저자들은 언어 모델이 추론 태스크에서 few-shot 프롬프팅을 수행할 수 있는 능력에 대해 강조하며, 이 때 프롬프트는 triplets( <input, Chain of Thought, output> )으로 구성된다고 말합니다. 여기서 Chain of Thought(CoT)는 최종 출력으로 이끄는 자연어 추론 단계의 연속이고, 저자들은 이러한 접근을 Chain-of-Thought prompting이라고 언급합니다. 이는 아래의 Figure 1에 프롬프트의 예시로 살펴볼 수 있습니다. CoT prompting은 색깔로 강조된 부분입니다! Standard Prompting과 비교하면 CoT Prompting이 정확한 답을 내놓는 것을 볼 수 있습니다.
본 논문에서 저자들은 산술, 상식, 기호 추론 벤치마크에서 경험적인 실험들로 평가 결과를 보여줍니다. CoT prompting이 기존의 standard한 prompting보다 성능이 좋고 때로는 그걸 심하게 뛰어넘을 정도라고 말이죠. 미리 슥 보자면 Figure 2의 산술추론 관련 GSM8K 벤치마크에서 그런 결과 중 하나를 볼 수 있었습니다.
PaLM 540B에서의 CoT prompting은 standard prompting보다 큰 차이로 능가했고, SoTA를 찍게 되었습니다. 근데 자꾸 저자들이 prompting이 좋다라며 말하는 것만 같은 기분이 드는데요. 이렇게 prompting only 접근법은 중요해 보이는 이유는 이들이 언급하기로는 큰 학습 셋을 필요로 하지 않고, 단일 모델의 체크포인트가 loss of generality(일반화 손실 문제)를 가지지 않으며 다양한 태스크를 수행할 수 있기 때문이라고 합니다. 본 연구에서는 그래서 태스크 별 자연어 데이터 몇몇 예시들로 LLM을 학습할 수 있는 방법을 강조하게 됩니다.
아래는 참고로 GSM8K(Grade School Math 8K; 초등학교 산술 문제) 벤치마크가 어떻게 생겼는지 좀 보고자, 해당 벤치마크 논문에서 예시 하나를 가져온 것입니다. 빨간색으로 표시된 부분은 계산에 관한 annotation이었습니다. 참고하시면 될 것 같습니다.
<2. Chain-of-Thought Prompting>
자 그럼, CoT Prompting에 대해 더 잘 와닿게 이해하기 위해 논문에서 언급한 예시 하나를 인용해 보겠습니다. 사람의 사고 과정을 떠올려보면, 이 사람이 다단계의 복잡한 산술문제같은 추론 태스크를 해결할 때에 있어서, 보통은 문제를 중간 단계들로 풀기 쉽게 분해하고 최종 답을 도출하기 전에 그 각각을 해결하는 것이 일반적입니다. 이 논문의 목표는 그런 일련의 논리적인 연쇄적 사고 과정을 생성하는 능력을 언어 모델에 부여하고자 하는 것이죠. 그래서 충분히 큰 언어 모델의 few-shot learning의 예시에서 CoT를 쓰는 것은 이런 인간의 연쇄적 사고 과정을 모방하는 것이라고 볼 수 있겠습니다.
이런 CoT Prompting은 언어 모델에서 추론을 촉진하는 접근 방식이기에 여러 매력적인 특성을 가지고 있다고 합니다. 논문에서 언급한 순서대로 말해보자면 다음과 같습니다.
- 첫째, CoT는 원칙적으로 모델이 ‘다단계 문제를 중간 단계로 분해‘할 수 있게 하여 더 많은 추론 단계가 필요한 문제에 추가적인 계산을 할당할 수 있게 합니다.
- 둘째, CoT는 ‘모델의 행동을 해석할 수 있는 창을 제공‘하여 모델이 특정 답에 도달한 방법을 제시하고 추론 경로가 잘못된 지점을 디버깅할 기회를 제공합니다 (비록 답을 지원하는 모델의 계산을 완전히 특성화하는 것은 여전히 열린 질문으로 남아있지만).
- 셋째, CoT는 산술 추론, 상식 추론, 상징적 조작과 같은 작업 뿐만 아니라 ‘원칙적으론 언어를 사용하여 해결할 수 있는 모든 작업에 사용‘할 수 있습니다.
- 마지막으로, CoT는 단순히 chain of thought 시퀀스를 few-shot prompting의 예제로 포함시켜 ‘충분히 큰 기성 언어 모델들에 쉽게 도입‘할 수 있습니다.
해당 내용들은 추후 Section 3(산술추론), Section 4(상식 추론), Section 5(상징적 추론)의 경험적 실험과 결과에서 살펴보게 됩니다.
<3. Arithmetic Reasoning(산술 추론)>
Arithmetic Reasoning은 인간에게는 간단하지만 언어 모델한테는 종종 어려운 태스크로 알려져 있습니다. 540B parameter 언어 모델을 이용한 CoT prompting은 여러 태스크에서 태스크 specific fine-tuned 모델과 비슷한 성능을 보이며, GSM8K 벤치마크에서 SoTA를 달성했습니다.
3.1 Experimental Setup
[Benchmarks]
- 테이블 12는 벤치마크 예시를 보여줍니다.
- GSM8K : Grade School Math 8K, 초등 수학
- SVAMP : Simple Variations on Arithmetic Math word Problems, 초등 수학
- ASDiv : Academia Sinica Diverse MWP Dataset
- AQuA : Algebra Question Answering
- MAWPS : MAth Word ProblemS
- Standard promping
Standard prompting을 baseline으로 삼는 것 같고, 이에 대해 저자들은 GPT-3에 의해 대중화된 표준 few shot prompt를 고려합니다. 언어 모델은 테스트 시간 예제에 대한 예측을 출력하기 전에 input-output 쌍의 context 예시를 제공합니다. 예시는 질문과 답변으로 구성되어 있고, 모델은 그림 1 왼쪽에서 봤던 것과 같이 직접 답을 제공하는 형태입니다. - Chain-of-thought prompting
저자들이 제안한 접근 방식 CoT prompting은 각 예시를 연관된 답변에 대한 CoT로 증강하여 few shot prompt의 각 예시를 보강합니다. 대부분의 데이터셋은 eval 분할만 있기 때문에, 저자들은 프롬프트를 위한 CoT가 포함된 8개의 단발성 예시 세트를 수동으로 구성했습니다. 그림 1 오른쪽은 그 중 하나의 CoT 예시였으며, 아래의 테이블 20으로도 하나 가져와봤습니다.
이러한 형태의 CoT 프롬프트가 다양한 수학 단어 문제에서 성공적인 추론을 이끌어낼 수 있는지 조사하기 위해, 자유 응답 대신 객관식인 AQuA를 제외한 모든 벤치마크에서 이 단일 세트의 8가지 CoT 예시를 사용했다고 합니다. AQuA의 경우, 아래의 테이블 21에 제시된 대로 학습 세트에서 4개의 예시 및 솔루션을 사용했습니다.
- Language models
주로 PaLM 540B에 대한 실험과 평가가 많았는데, 이를 포함해서 5가지 LLM 모델들에 대해 scale을 달리하며 평가를 진행했습니다.
– GPT(2020): 350M, 1.3B, 6.7B, 175B (text-ada-001, text-babbage-001, text-curie-001, and text-davinci-002)
– LaMDA(2022): 422M, 2B, 8B, 68B, 137B
– PaLM: 8B, 62B, 540B
– UL2(2022): 20B
– Codex(2021): code-davinci-002
여기서 저자들은 greedy decoding을 통해 모델에서 샘플링한다고 하며(이후의 후속 연구에 따르면 샘플링된 여러 세대에 걸쳐 다수의 최종답변을 취함으로써 CoT 프롬프트가 개선될 수 있음이 밝혀졌다고 언급하기도 합니다.), LaMDA의 경우 각 시드마다 무작위로 섞인, 예시 순서가 다른 5개의 무작위 시드에 대한 평균 결과를 report합니다. LaMDA 실험은 각 시드 간에 큰 차이를 보이지 않았기 때문에 계산을 절약하기 위해 다른 모든 모델에 대해 단일 예시 순서에 대한 결과를 report합니다.
3.2 Results
결과에 대한 3가지 핵심 사항이 있습니다.
첫째, 왼쪽의 그림 4는 CoT 프롬프트가 모델 규모에 따라 새롭게 나타나는 능력임을 보여줍니다. 특히 CoT 프롬프트의 가장 최고 성능 결과를 요약해서 보여주는데, 이는 CoT 프롬프트가 작은 모델에서는 성능에 긍정적인 영향을 미치지 않았으며, 100B 개 정도나 그 이상의 매개변수가 있는 모델에 사용할 때부터 성능 향상을 가져왔음을 보여줍니다.
규모가 작은 모델에서 성능이 유의미하지 않았던 이유는, fluent하게 보이면서도(그럴듯해 보이는 안 어색한 문장) 비논리적인 CoT를 생성하였기 때문이며, 그래서 standard prompting보다 성능이 낮았다고 합니다.
이 외에도 여러 모델에 대해 비교했지만 PaLM의 경우에서만 CoT prompting이 supervision best보다 두드러진 성능향상을 가져온 것으로 보입니다. 그런데 제 개인적인 의문은 아예 동일한 scale의 모델 파라미터에 대해 비교한 건 아닌 것 같아 보여서,, 그렇게 공정한 결과표는 아닌 것 같다고 개인적으로 생각합니다. 그래도 모델 간의 비교는 이렇구나 정도로 넘어가고, 모델 scale이 의미 있게 큰 경우에서만 CoT가 효과적이었구나라고 생각하면 될 것 같습니다.
둘째, CoT 프롬프트는 더 복잡한 문제에 대해 더 큰 성능 향상을 가져옵니다. 예를 들어, baseline 성능이 가장 낮은 벤치마크 데이터셋인 GSM8K에 대해서, 가장 큰 GPT 및 PaLM 모델의 경우 처리량이 2배 이상 증가했습니다. 반면 한 단계만 풀면 되는 MAWPS의 가장 쉬운 subset인 SingleOp의 경우, 성능 향상이 마이너스를 찍거나 매우 미미했습니다.(아래 테이블 3 참고, 이후의 모든 테이블 메트릭은 acc.)
세번째, GPT-3 175B와 PaLM 540B를 통한 CoT prompt는 일반적으로 기존의 labeled 학습 데이터셋에서의 task specific fine-tuned 모델보다 더 우세했습니다. 아까 그림 4를 다시보면 PaLM 540B가 CoT 프롬프트를 사용하여 GSM8K, SVAMP 및 MAWPS에서 새로운 SoTA를 달성한 것을 보여줍니다. 여기에 보이지 않은 두 데이터 셋인 AQuA와 ASDiv에서는 CoT 프롬프트를 사용한 PaLM이 SoTA의 2% 이내에 도달했다고 합니다. (아래 테이블 2 참고) 각 모델별, 모델 크기별, 벤치마크별에 따른 모든 실험 결과가 아래에 나와있습니다.
이외에도 저자들은 CoT 프롬프트가 잘 작동하는 이유를 더 잘 이해하기 위해 GSM8K에 대해 LaMDA 137B가 생성한 CoT를 손수 조사했다고 하는데, 모델이 정답을 반환한 50개의 무작위 예시 중 우연히 정답에 도달한 2개를 제외한 모든 CoT는 논리적으로나 수학적으로 정답이었다고 합니다. 또한 모델이 오답을 제시한 50개의 무작위 샘플을 또 무작위로 손수 조사했는데, 이것들은 사소한 실수인 계산 오류, symbol mapping 오류, 추론단계 하나 누락 오류들을 제외하면 그 중 46%의 CoT는 거의 정답에 가까웠고, 나머지 54%의 CoT는 의미 이해나 일관성에서 아예 큰 오류가 있었습니다.(아래 테이블 10 참고)
마지막으로는 모델 scaling, 즉 모델 scale 확장이 CoT 추론 능력을 향상시키는 이유에 대한 작은 insight를 얻었다고 하는데, PaLM 62B에서 발생한 오류를 PaLM 540B로 확장해 생각하면서 이러한 오류가 수정되었는지에 대한 유사한 분석을 수행했는데 그 결과 PaLM을 540B로 확장하면 62B 모델에서 발생하는 one-step missing 에러와 semantic understanding 에러의 상당 부분이 수정된다는 결론을 얻었다고 합니다.! (부록 A.1 참조.)
3.3 Ablation Study
CoT prompting을 사용함으로써 얻는 이점은 prompting의 다른 타입을 통해 같은 성능 향상이 나오는지에 대한 자연스런 의문을 가져옵니다. 그래서 옆의 그림 5는 ablation study를 CoT에 3가지 변화를 주면서 보여줍니다.
- Equation only.
CoT prompting이 도움이 되는 이유 중 하나는 수식이 평가되게 만든다는 것입니다. 그래서 저자들은 정답이 주어지기 전에 오직 수식을 output으로 뱉기 위해 prompting된 모델에서 variation을 주며 테스트했습니다. 그림 5에서 Equation only인 경우, GSM8K에서 그다지 도움이 되지 않았음을 보이고, 이는 GSM8K의 질문의 semantic들이 CoT에서의 자연어 추론 스텝들 없이 수식으로 바로 변환되는 게 너무 챌린징했기 때문인 것으로 보입니다. 하지만 1 step이나 2 step 문제에 대한 데이터셋에서는 equation only prompting이 성능 향상을 이뤘고, 이는 수식이 질문으로부터 쉽게 도출될 수 있었기 때문인 것으로 보입니다. (아래 표 6 참조.)
- Variable compute only.
다음의 잠재적 이점은, CoT prompting이 더 어려운 문제에 더 많은 계산(즉, 중간 토큰)을 쓸 수 있게 해준다는 점입니다. CoT에서 variable computation(변수를 사용한 연산)의 효과를 분리하기 위해, 저자들은 모델에 문제 해결에 필요한 equation의 문자 수와 동일한 점 시퀀스(…)만 출력하라는 메시지가 표시되도록 테스트했습니다.(중간 과정의 값으로 무엇이 필요하다는 내용).
이 방법은 baseline과 거의 동일한 성능을 보였는데, 이는 varibale computation 자체가 CoT prompting의 성공적인 성능의 원인은 아니며, 자연어를 통해 중간 단계를 표현하는 것이 유용하다는 것(중간단계 표현의 필요성!)을 시사한다고 볼 수 있습니다. - Chain of thought after answer.
CoT prompting의 또 다른 잠재적 이점은, 단순하게 모델이 사전학습 중에 습득한 relevant knowledge에 더 잘 접근할 수 있게 해준다는 점일 수 있습니다. 따라서 모델이 실제로 생성된 CoT prompt에 의존하여 final answer를 제공하는지 여부를 분리하기 위해, 최종 답변 후에만 CoT prompting이 제공되는 구성을 테스트했다고 합니다. 이 방법은 baseline과 거의 동일한 성능을 보였으며(성능 향상 없었음). 이는 CoT prompting에 구현된 sequential한 추론이 단순히 지식을 활성화하는 것 이상의 이유로 유용하다는 것을 시사합니다.(s보다 이전 시점만 참고하는 language modeling의 특성 때문이라고 생각함.)
3.4 Robustness of Chain of Thought
prompting을 할 때 핵심 고려 사항 중 하나는 바로 exemplar에 대한 민감성입니다. 예를 들면 GPT-3의 성능은 이 few-shot exemplar의 순서를 다르게 할 때마다 우연에 가까운 성능부터(54.3%), SoTA 수준에 이르기까지(93.4%) 천차만별이 될 수 있죠. 그래서 본 논문에서는 서로 다른 annotator가 작성한 CoT의 Robustness를 평가하고자 했고, 그로 인해 각각의 CoT간의 annotation 스타일의 차이가 생겼는데, 그럼에도 모든 CoT prompt 셋이 baseline을 큰 폭으로 능가하는 것으로 나타났습니다. 이 결과는 CoT의 성공적인 사용이 특정 언어 스타일에 의존하지 않는다는 것을 의미한다고 볼 수 있을 것 같고, 이는 exemplar의 개수나 순서에도 크게 영향이 없는 것으로 보입니다.
그림 6에서로 보면 프롬프트가 수동으로 쓰여진 exemplar와 비슷한 성능을 보였으며, baseline 프롬프트보다 훨씬 뛰어난 성능을 보였음을 보여줍니다. 즉, annotator, 개인이 독립적으로 쓴 CoT, exemplar의 다양성, 언어 모델의 다양성에 대한 robustness 이외에도 산술적인 추론을 위한 CoT prompt는 다양한 exemplar 순서와 개수에도 robust하다고 볼 수 있겠습니다.
<4. Commonsense Reasoning(상식 추론)>
CoT는 math word problem에 특히 적합했지만, CoT의 ‘language-based’한 특성 덕분에 일반적인 배경 지식을 전제로 물리적, 인간적 상호작용에 대해 추론하는 광범위한 종류의 commonsense(상식) 추론 문제에도 적용할 수 있었습니다. 상식 추론은 사실 사람에게 있어서는 세상과 상호작용하는 데 있어 핵심적인 역할이지만, 현재의 자연어 이해 시스템으로는 아직 도달할 수 없는 영역이라고 볼 수 있겠습니다.(이건 ‘얼마나 학습했냐’보다 ‘얼마나 아는가(지식)’의 영역이기 때문인 것으로 추측됩니다.)
- Benchmarks.
CSQA : 의미론과 관련된 세상에 대한 상식적인 질문
StrategyQA : MQA(Multi-hop Question Answering) 전략 추론. 질문에 필요한 추론 단계가 암묵적으로 포함되어 있고, 전략을 사용해 추론해야하는 QA 벤치마크.
BIG-bench effort : Date Understanding, Sports Understanding
SayCan : 자연어 명령을 이산 집합의 로봇 동작 시퀀스에 매핑하는 작업.
옆에 그림 3에서 주황색 표시된 것들이 상식추론 벤치마크입니다!
- Prompts.
Section 3(산술 추론)과 실험 설정 동일.
- Results.
위 그림 7은 PaLM 모델에 대해 CoT prompting의 상식추론 실험 결과를 보여줍니다. 특히 모든 태스크에서 모델의 크기가 커질 수록(scaling up) 표준 prompting의 성능이 향상되었고, 여기서 CoT prompting을 사용하면 더 추가적인 성능 향상이 있었습니다.
PaLM 540B의 경우 성능 향상 효과가 가장 큰 것으로 나타났는데, CoT prompting을 통해 PaLM 540B는 baseline 대비 강력한 성능을 달성하여 StrategyQA에서 이전 SOTA를 능가했으며, sports understanding에서도 더 나은 성능을 보였습니다.
이러한 결과는 CoT prompting을 다양한 상식 추론 능력을 필요로 하는 작업에서도 성과를 향상시킬 수 있음을 보여줍니다.(CSQA에서는 성능이 미미). 모델 사이즈 변화에 따른 다양한 모델들 LaMDA, GPT-3, PaLM의 결과는 아래 표4에 나와 있습니다.
이전의 산술 추론의 step의 문제는 간단했기 때문에, 상식 추론보다 LLM scaling에 대한 영향이 적을 것이라고 생각했는데, 의외로 상식 추론 성능이 선형적으로 증가하는 것을 보니, 모델의 크기는 각 step에서의 문제 자체를 해결하는 능력보다도, 적절한 step을 생성하는 것에 더 큰 영향을 미치는 것 같습니다. (산술 추론에서는 일정 규모 이상에서 성능이 대폭 향상)
<5. Symbolic Reasoning (상징적 추론)>
마지막 실험은 인간에게는 간단하지만 언어 모델에게는 어려운 task인(symbolic을 이해해야하기 때문) symbolic reasoning(상징적 추론, 규칙이해)입니다. CoT prompting을 적용할 경우, 언어 모델이 standard prompting 설정에서 어려워하던 symbolic teasoning task를 수행할 수 있을 뿐만 아니라(같은 조건에서의 성능 향상), few-shot exemplars보다 더 긴 inference-time input에 대한 length generalization도 용이하다는 것을 보여주었습니다.
length generalization도 용이하다는 말은, examples의 step 수가 training/few-shot exemplars와 동일한 in-domain 테스트 세트와, 평가 예제를 푸는데 필요한 step 수가 examples의 step 수보다 많은 out-of-domain(OOD) 테스트 세트에 대해서도 성능이 보장된다는 의미입니다.
[Last letter concatenation]
이 태스크는 모델에게 이름에서 단어의 마지막 문자들만을 연결하도록 하는 태스크입니다.(예: “Amy Brown”! ->> “yn”).
OOD 조건 : 모델은 두 단어로 구성된 이름의 exemplars를 확인한 다음, 세 단어 및 네 단어로 구성된 이름에 대한 last letter concatenation 작업을 수행한다.
[Coin flip]
이 태스크는 사람들이 동전을 뒤집거나 뒤집지 않은 후에도 동전이 여전히 앞면인지 예측하는 태스크입니다.(예: “A coin is heads up. Phoebe flips the coin. Osvaldo does not flip the coin. Is the coin still heads up?” -> “NO”).
OOD 조건 : 잠재적인 뒤집기 횟수(뒤집거나 뒤집지않은 상황의 횟수)에 대해서 examplars와의 횟수를 다르게하여 수행
- Results
PaLM 540B의 경우, chain-of-thought prompting는 거의 100%에 가까운 정답률을 보였습니다.
하지만 작은 모델의 경우 성능이 여전히 좋지않았습니다. 보이지 않는 규칙을 추상적으로 조작할 수 있는 능력은 모델 parameters의 규모가 확실히 크다고 할 수 있는 100B에 달할 때만 발생했습니다.
<6. Discussion & Conclusion>
본 논문은 LLM을 통한 multi-step reasoning을 유도하기 위한 간단한 메커니즘으로 인간의 연쇄 사고 과정을 모방한 CoT prompting를 제시했습니다.
Section 3에서는 CoT prompting이 arithmetic reasoning(산술 추론)에서 기존 SoTA와 비교해 큰 성능 향상을 기록했음을 확인했으며, 특정 annotators, exemplars, 언어 모델에 따른 영향을 받지 않고 동일한 ablations, robustness를 가져온다는 사실을 확인했습니다.
Section 4에서는 commonsense reasoning(상식 추론)에 대한 실험을 통해 CoT reasoning의 언어적 특성이 일반적으로 적용(상식 문제)될 수 있는지를 살펴봤습니다.
Section 5에서는 symbolic reasoning(상징적 추론)의 경우 CoT prompting이 더 긴 시퀀스 길이에 대한 out-of-domain에 대해서도 generalization를 용이하게 한다는 것을 보여주었습니다.
모든 실험에서 CoT reasoning은 기성 언어 모델에 적절한 프롬프팅을 제시하는 것만으로 유도되었으며, 별도의 fine-tuning을 진행 하지 않았다고 합니다. Standard prompting에서 크기를 키우더라도 성능향상이 이루어지지 않던(flat scaling curve) 많은 reasoning task에서, CoT reasoning을 사용했을 때 dramatic한 increasing scaling curves가 나타났었습니다. (계속 반복해서 말하지만,, 크기를 키웠을 때 성능이 크게 향상).
CoT prompting은 LLM이 성공적으로 수행할 수 있는 task의 범위를 확장하는 것으로 보입니다. (아까 그림 8을 보면, Letter concat과 같은 태스크에 대해서는 기존 LLM이 거의 수행하지 못하는 태스크였으나, CoT를 적용했을 때는 100점에 가까운 점수도 가능).
즉, 본 연구는 standard prompting이 LLM의 기능과 성능에 대한 하한선을 제공할 뿐이라는 점을 강조하며,(즉, prompting을 어떻게 하냐에 따른 가능성이 앞으로도 무궁무진한 것 같습니다.) 이러한 결과는 추후 연구해야할 과제를 제시하는데, 모델 크기만으로 reasoning 능력이 얼마나 더 향상시킬 수 있을까에 대한 기대와, 언어 모델이 해결할 수 있는 여러 다른 태스크의 범위를 확장할 수 있는 다른 promting 방법이 또 있을까에 대한 기대라고 볼 수 있겠습니다.
마지막으로는 저자들이 생각한 Chain-of-thought의 한계도 존재했는데, 밑에 정리하면서 마무리 짓겠습니다.
1) Chain-of-thought은 인간의 사고 과정을 모방하지만, 신경망이 실제로 ‘reasoning’을 하는지 여부에 대한 해답을 제시하지 못한다.
2) Chain-of-thought의 exemplars를 수동으로 작성(증강)하는데 드는 비용은 few-shot 환경에서는 미미하지만, fine-tuning을 위한 annotation 비용이 많이 든다(synthetic data generation 또는 zero-shot generalization을 통해 해결할 가능성 있음).
3) 올바른 reaoning 경로를 보장할 수 없기 때문에, 오답이 모두 나올 수 있으며, 언어 모델의 factual generations(=성능)을 개선하는 것은 향후 해결해야할 연구 방향이다.
4) 일정 크기 이상의 LLM에서만 chain-of-thought이 작동하기 때문에, 실제 애플리케이션에 적용하기에는 비용이 많이 들며, 추가 연구를 통해 작은 모델에서 reasoning을 유도하는 방법을 모색할 수 있다.
이상 리뷰 마치겠습니다. 감사합니다.
——————————————————————————————————————————————————————
부록도 참고로 좀 읽어봤는데, 몇몇 내용을 가져왔습니다. 역시 구글이 연구한 탓에 부록마저 내용이 방대해서 짧게 짧게 정리하고자 음슴체인 점 양해부탁드립니다. 사실 크게 안 궁금한 내용도 있으실테니 넘어가셔도 됩니다.
<실험에 관한 리뷰어들의 Q와 저자들의 A…>
- 실험결과 재현 코드있음? —> LaMDA 및 GPT-3에 대한 입력, 출력, targets 포함. 비록 독점된 모델을 사용하지만, GPT-3에 대한 실험 결과는 완벽 재현 가능. 해당 재현성은 부록 E.1에 자세히 설명됨.
- 학습 세부사항은 명시한거임? —> 데이터 분할은 ㅇㅇ, 근데 하이퍼파라미터 등은 N/A
- error bars 명시?(여러 번 실험 실행 후 무작위 시드에 대한 error bars)—> 표 6, 표 7에 각 시드가 다른 무작위 예시 순서인 LaMDA 137B를 사용한 여러 시드의 표준편차를 제공함.
- 총 컴퓨팅 양과 사용된 리소스 유형 명시??(GPU, 내부 클러스터 또는 클라우드 제공업체) —> 리소스유형은 부록 E.2에 명시, 총 컴퓨팅 양은 추정하지 않음.
- 기존 자산(코드, 데이터, 모델 등)을 사용하거나 새로운 자산을 큐레이팅/공개하는 경우….
- 기존 자산 사용의 경우, 제작자를 인용했나? —> NeurIPS 측 추천에 따라 익명 처리한 2가지 모델 사용.
- 새로운 자산을 보충 자료에 포함했나? —> coinflip과 last letter concatenation datasets이 유일한 신규 자산이며, 이는 보충 자료에 제공됨.
- 데이터를 사용/큐레이팅하는 사람들의 동의 받음? 그 방법은 논의함? —> [N/A] 인적 데이터는 수집
<A.1 Why does increasing model scale improve chain-of-thought prompting?>
(모델 규모를 늘리면 CoT가 개선되는 이유는?)
성공적인 CoT 추론이 특정 모델 규모에서만 예측 가능하게 나타난다는 발견은 흥미롭다.
언어 모델을 확장하면 성능과 샘플 효율성이 개선되는 등의 이점이 있는 것으로 나타났지만(Kaplan 외 2020),
CoT 추론은 소규모 모델의 성능을 추정하는 것만으로는 그 성공을 예측할 수 없다는 점에서 주목받고 있으며,
실제로 10B 파라미터보다 작은 대부분의 모델에서 CoT는 성능을 저해하기 때문에 CoT 추론의 성공 여부는 예측할 수 없다.
모델 규모가 CoT 프롬프트를 개선하는 이유에 대한 질문은 분명 다면적(multi-faceted)인데, 저자들은 error 분석을 통해 이에 대한 인사이트를 얻기 위한 예비 시도를 했다. 이 소규모 분석에는 PaLM 62B에서 발생한 45개의 에러를 수동으로 읽고, semantic understanding(20 errors), one step missing(18 errors), 기타 에러 (7 errors) 로 분류하는 작업이 포함되었다. ‘기타범주’에는 hallucinations(환각), repetitive outputs(반복 출력), sumbol ampping errors(기호 매핑 오류)가 포함. 이 카테고리는 부록 D.2의 LaMDA에 대한 초기 오류 분석에서 차용한 것으로, CoT를 올바르게 만들기 위해 어떤 개선이 필요한지를 기준으로 범주를 구상함.
그림 9.에서 볼 수 있듯이 PaLM을 540B 파라미터로 확장하면 3 가지 범주 모두에서 오류의 상당 부분이 수정됨.
PaLM을 540B 로 확장하여 수정된 [의미 이해, 한 단계 누락 오류의 예]는 그림 10. 에 나와있음.
이 결과는 언어 모델이 모델 규모에 따라 다양한 의미 이해와 논리적 추론 능력을 습득한다는 가설과 일치하는 것으로 보임.
(단 모델 규모는 종종 학습 연산량과 같은 다른 요소와 혼동되는 경우가 많음에 유의.)
그림 10은 PaLM 모델이 62B에서 540B로 확장되면서 의미적 이해 오류와 한 단계 생략 오류를 어떻게 해결했는지 명확히 보여줌. 이를 통해 모델 크기의 중요성을 강조.
또한 scale 작은 언어 모델이 실패하는 이유와 관련해서 3가지 주목할 만한 점이 있음.
- 비교적 쉬운 기호 매핑 작업에서도 작은 언어 모델이 실패한다는 점.
섹션 5에서 설명한 것처럼, 몇 개의 예시에서 주어진 것과 동일한 CoT 구조를 사용해서 새로운 예시로 일반화하기만 하면 되는 상징 추론(Symbol mapping) 과제에서도 작은 언어 모델은 여전히 실패함. - 작은 언어 모델은 본질적으로 산술 능력이 약한 것으로 보이는데, [Language Models are Few-Shot Learners] 에 따르면 (의미적 이해 없이) 간단한 산술 연산을 수행하는 능력에는 충분한 모델 규모가 필요하다.
- 작은 언어 모델은 반복이나 최종 답에 도달하지 못하는 논리로 인해, 파싱할 수 있는 최종 답을 생성하지 못하는 경우가 많다는 것을 질적으로 발견함.
요약하자면, 모델 규모에 따른 CoT 추론의 성공은 의미 이해, 기호 매핑, 주제 유지, 산술 능력, 충실성 등 다양한 능력이 복합적으로 관여하는 복잡한 현상임. 향후 연구에서는 사전 학습 데이터, 모델 아키텍쳐, 최적화 목표의 어떤 속성이 이런 추론 능력을 인과적으로 가능하게 하는지를 보다 철저하게 조사할 수 있을 것임.
<A.2 What is the role of prompt engineering?>
(프롬프트 엔지니어링의 역할이 무엇?)
프롬프트의 핵심 고려 사항 중 하나는 정확한 프롬프트에 대한 민감도.
프롬프트가 예상치 못한 방식으로 언어 모델에 영향을 미친다는 것을 보여준는 연구가 적지 않음.(Rethinking the Role of Demonstrations: What Makes In-Context Learning Work?)
CoT annotation을 만드는 일반적인 방법은 학습셋에서 8개의 예시를 가져와 추론 과정을 최종 답변에 이르는 여러 단계로 분해하는 것이었음.
CoT annotation의 예는 그림 3.에 나와있으며, 전체 프롬프트는 부록 G에 있음.
CoT가 엔지니어링 프롬프트에 얼마나 민감한지 분석하기 위해 다양한 요인에 대한 robustness 실험을 수행함.
- Different annotators
- Annotators without machine learning background.
- Different exemplars
- Different order of exemplars
- Different numver of exemplars
- Different language models
Prompt engineering still matters, though. (하지만 여전히 프롬프트 엔지니어링은 중요.)
결과는 산술적 추론에 대한 프롬프트에 비교적 robust한 모습을 보이지만, 프롬프트 엔지니어링은 여전히 중요하며 많은 경우 성능을 크게 향상시킬 수 있다는 점을 분명히 하고자 한다.
대부분의 CoT annotation이 표준 프롬프트보다 성능이 뛰어나지만, 많은 경우에서 큰 편차가 있다.
예) coin flip task의 경우, annotator A의 성능은 99.6%, annotator C의 성능은 71.4% 까지 다양했지만 둘 다 표준 프롬프트(50%)를 상회했다.(표 7. 참조.)
프롬프트 엔지니어링이 좋은 성능을 위한 필수 조건인 태스크도 있다.
예비 실험에서 언어 모델이 5개 항목 목록의 순서를 바꾸도록 하는 CoT를 사용해보았다.
두 명의 co-authors는 최선의 노력에도 불구하고 태스크를 해결하는 CoT 프롬프트를 작성하지 못했지만,
세번째 co-authors는 태스크를 완벽하게 해결하는 CoT 프롬프트를 작성할 수 있었다.
저자들은 robust한 방식으로 CoT annotation을 생성하는 방법은 향후 연구에서 흥미로운 방향이 될 수 있을 것 같다고 함.
예) LLM을 사용해서 프롬프트를 통해 CoT를 자동으로 생성하고, validataion set을 통해 이를 최적화하는 것이 한가지 아이디어일 수 있다고 언급함.
<A.3 Will chain-of-thought prompting improve performance for my task of interest?>
(CoT 프롬프팅이 내가 관심있는 분야의 태스크에도 성능 향상을 가져올 수 있나?)
CoT 프롬프트는 ‘원칙적으론 모든’ text 대 text 작업에 적용 가능하지만, 일부 작업에는 다른 작업보다 더 유용할 수 있다.
3가지 조건이 충족될 때 CoT가 가장 도움된다는 직관이 있음.
- task가 challenging하고 다단계 추론이 필요한 경우.
- LLM이 사용되는 경우.
- 스케일링 곡선이 비교적 평탄한 경우.
반대로 이런 조건 중 하나 이상이 불충족되면 이점은 더 작아짐. 이런 직관은 아마 산술적 추론 결과가 뒷받침하고 있을 듯 추정하심.
이런 조건을 충족하는 GSM8K(까다로운 다단계 문제, 평평한 스케일링 곡선)에서 PaLM 540B의 경우 CoT 프롬프트의 성능 이득이 가장 큼. PaLM 540B가 이미 90% 이상의 성능을 달성하고 있는 한 두 단계만 필요한 MAWPS의 하위 집합(SingleOP, SingleEq 및 AddSub)의 경우 성능 이득이 작다.(또한 일반적으로 성능이 이미 좋은 경우 개선할 수 있는 헤드룸이 적은 것도 사실임.)
본 논문에서는 다단계 추론 과제 (arithnetic산술, commonsense상식, sumbolic기호)에 초점을 맞추었지만, CoT 프롬프트는 인간이 “CoT”를 사용하여 해결하는 모든 과제에 잠재적으로 적용 가능.(적어도 원칙적으로는). 다양한 태스크(예, 기계번역 등)에 대한 CoT 프롬프트의 경험적인 평가는 향후 연구에 맡긴다고 언급.
<A.4 Why is prompting with the equation only not enough for some arithmetic reasoning datasets?>
(일부 산술 추론 데이터셋에서 방정식만으로는 프롬프트가 충분하지 않은 이유는 무엇인가?)
방정식을 중간 단계로만 사용하면 많은 데이터셋, 특히 데이터셋에 추론 단계가 몇 개만 필요한 경우(SVAMP, ASDiv, MAWPS)에 도움이 됨.
그러나 SGM8K의 경우, 이 방정식만 사용해도 성능이 크게 향상되지 않았음.
정성적 분석에 따르면 이러한 질문은 모델이 수학 방정식으로 직접 변환하기에는 의미론적으로 너무 어렵다고 판단했음.
LaMDA 137B의 아래 예시를 보면…:
모델이 모든 의미를 하나의 방정식으로 직접 변환하기는 어렵지만, CoT를 사용하면 자연어 중간 단계를 통해 문제의 각 부분에 대해 더 잘 추론할 수 있다.
안녕하세요 재찬님 좋은 리뷰 감사합니다.
3.3 Ablation Study의 Chain of thought after answer. 실험에서 질문이 있습니다. 이 실험에서는 모델이 먼저 답을 구하고, 그 다음에 CoT를 제공하여 테스트했다고 하였는데 답을 한 뒤에 CoT 프롬프트를 제공하는 것이 어떻게 지식을 활성화 할 수 있는지 궁금하고 ‘지식을 활성화하는 것 이상’이 무엇을 의미하는지도 궁금합니다.
감사합니다.
안녕하세요 의철님 리뷰 읽어주셔서 감사합니다.
우선 3.3 Ablation Study은 baseline인 standard prompting보다 CoT prompting 방식이 성능이 잘 나온 이유가 뭘까를 고민하며 기존 CoT를 요리조리 변형해보면서 실험한 것이라고 생각하면 될 것 같습니다.
이 중 의철님이 질문하신 실험은 저자들이 제안한 CoT prompting의 triplet 구조인 의 형태를 단순히 형태로 바꿈으로써 모델에게 few shot을 주며 테스트한 것으로 저는 이해했는데요.
결국 중간부분에 들어가던 CoT가 과연 모델이 추론하는 데 적절히 반영하던 것이었을까? 즉, 모델이 사전학습 중에 습득했었던 relevant한 knowledge를 CoT가 잘 연관지으면서 output(답)을 뱉었던 것이 맞을까? 를 간접적으로 확인해보고자 했던 실험인 것으로 이해하면 됩니다.
그래서 output(답) -> CoT prompting 실험이 지식을 활성화하는 데 도움이 되었다는 것을 보인 것이 아니라, 오히려 해당 실험은 기존의 CoT -> output(답) prompting의 성능과 비교했을 때 baseline 수준으로 성능이 저조했기 때문에, 기존의 이 Sequential한 형태의 CoT -> output(답) prompting이 relevant한 지식을 활성화하는 데 도움이 되는 것이라고 보시면 될 것 같습니다. (인간의 사고흐름과 유사한 구조를 모방하고자 했던 게 저자들의 의도입니다. 보통 사람도 답을 먼저 번쩍! 떠올리고 그 이유를 생각하진 않으니까요!)
결론적으로 ‘지식을 활성화하는 것 이상’의 의미도 결국 위에서 말했듯이, 모델이 사전학습 중에 습득한 그 relavant knowledge를 활성화하는 것 이상으로 sequential한 prompt 형태 자체만으로도 의미가 있다는 것으로 생각하면 될 것 같습니다!
지금 다시 글을 읽어보니 제가 이해하기 어렵게 애매하게 글을 쓴 것 같기도 하네요.
안녕하세요 재찬님
규모가 큰 모델에서 CoT가 의미가 있는 이유가 큰 모델의 추론 과정에서만 다단계 문제를 쪼개서 생각할 수 있을만큼 모델이 답을 내는 절차(?)가 복잡하기 때문이라고 이해헀는데 이렇게 이해해도 괜찮을까요?
안녕하세요 영규님, 리뷰 읽어주셔서 감사합니다.
영규님이 언급하신 “규모가 큰 모델에서 CoT의 적용이 의미가 있었던 이유가, 다단계 문제를 쪼개 생각하는 것이 절차가 복잡하기 때문이다”는 말은 사실 조금은 부족한 표현이다라고 볼 수 있을 것 같습니다.
규모가 작은 모델에서 “fluent하게 보이면서도 비논리적인 CoT”를 생성하는 것 때문에 성능이 낮은 것이 대부분이었지만, 이를 좀 자세히 보면 본문에서와 같이 one-step missing이나 semantic understanding 부족으로 인한 것이라고 볼 수 있었습니다. 예를 들면 A는 사과 20개를, B는 그것의 twice만큼을 가지고 있다. B가 A에게 모든 사과를 주었다. A가 가진 사과는 몇 개인가? 했을 때 규모가 작은 모델에서는 CoT 출력으로 20+20 = 40을 내놓아버리면 twice라는 것에 대한 one-step missing이나 semantic understanding 부족 현상이 나타나게 되는 것입니다.
그래서 사실 본문 내용과 같이 산술추론의 CoT 적용시 성능 scaling 변화폭(급격한 상승)과, 상식 추론의 CoT 적용시 성능 scaling 변화폭(linear한 상승)이 서로 같지 않다는 점에서, 모델의 크기에 따라 정해진 step에서의 문제 자체를 해결하는 능력이 상승한다기 보다는, 태스크에 맞게 적절한 추가 step을 모델이 생성하면서 추론하는 것에 더 큰 영향을 미치는 것으로 이해하면 될 것 같습니다.
즉 규모가 큰 모델에서 CoT가 유의미한 성능을 보인 이유는, 다단계로 쪼개 생각할 만큼 모델의 답을 내는 절차가 “어떻게” 고도화될 수 있기 때문인지에 대한 이해가 핵심이 되어야할 것 같습니다.