[23’ ICLR] Auto-CoT: Automatic Chain of Thought Prompting in Large Language Models
카테고리: Language
태그: Chain-of-Thought
🔍 Abstract
당시 제안된 CoT 방법론을 크게 Human annotator가 reasoning을 생성하는 Manual-CoT, “Let’s think step by step” 등의 prompt를 추가하여 LLM이 reasoning을 생성하도록 하는 Zero-shot-CoT로 나눠볼 수 있다. Manual-CoT의 경우 성능이 더 좋으나, Human annotator가 필요하다는 문제가 있다. 한편, Zero-shot-CoT는 LLM이 자체적으로 reasoning을 생성하기에 다른 laborous한 과정이 필요하지 않지만, 성능이 떨어진다. 이 논문에서는 이러한 두 방법론의 장점을 결합하여 Auto-CoT을 제안한다. 즉, LLM이 직접 Few-shot Reasoning Example을 만들도록 하고, 이를 다시 활용하여 Few-shot-CoT를 진행하도록 하는 것이다. 저자들은 이것을 두고 “Let’s think not just step by step, but also one by one.“이라고 표현했다. (물론 위 글귀를 Prompt로 사용했다는 뜻은 아니다.)
1. Challenge of Auto-CoT
Auto-CoT의 대략의 과정을 정리하면 다음과 같다.
- Dataset에서 질문 몇 개를 선택한다.
- LLM이 이 질문들에 대해 Reasoning chain을 생성한다.
- 이를 Few-shot example로 활용하여 Few-shot-CoT를 진행한다.
Auto-CoT가 어려운 것은 두 가지 이유 때문이다. (1) Few-shot으로 적절한 질문(Question)을 데이터셋에서 고를 수 있어야 하고, (2) 그 질문들에 대해 Reasoning chain을 LLM이 자동으로 잘 생성할 수 있어야 한다. 이 두 문제는 서로 연관되어 있다. 저자들은 적절한 질문을 선택하는 방법을 세 가지로 나누어 제안했다. 먼저 Dataset의 문제를 Sentence-BERT로 encoding한 뒤, 각 질문 벡터의 cosine similarity를 기준으로 Clustering을 진행한다.
그리고 다음과 같은 세 가지 방법론을 통해 질문을 선택한다.
- Retrieval-Q-CoT: Top-k개의 가장 유사한 질문을 선택한다. (Similarity)
- Random-Q-CoT: 랜덤하게 질문을 선택한다.
- Auto-Q-CoT: 다른 Cluster에서 질문을 선택한다. (Diversity)
얼핏 생각했을 때는 실제 질문과 유사한 질문을 선택하여 Reasoning Chain을 생성하는 것이 좋을 것 같지만, 실제로는 그렇지 않았다. 오히려 Retrieval-Q-CoT의 성능이 Random-Q-CoT보다 떨어지는 모습이었는데, 이는 Reasoning Chain을 적절하게 생성하지 못했기 때문이었다. 실제로 Human annotated reasoning chain을 Few-shot으로 사용하여 실험한 결과에서는 Retrieval-Q-CoT가 Random-Q-CoT보다 성능이 좋았다.
저자들은 이를 보고 misleading by similarity라고 이름을 붙였다. 즉, 실제 질문과 유사한 질문에 대해 잘못된 reasoning chain을 생성한 뒤 few-shot으로 보여주기 때문에, 오히려 LLM이 잘못된 답을 할 가능성이 높아진다는 것이다. 실제로 잘못된 Few-shot의 비율을 동일하게 두었을 때, Retrieval-Q-CoT가 Random-Q-CoT보다 성능이 떨어지는 것을 확인할 수 있었다.
따라서 저자들은 Zero-shot-CoT 논문과는 반대로 LLM은 아직 완벽한 Zero-shot Reasoner가 아니라고 주장했다. 이처럼 유사한 질문을 선택하는 것이 오히려 성능을 떨어뜨릴 수 있기에, 저자들은 오히려 다양한 질문을 선택하는 것이 더 좋다고 주장했다. 일종의 Diversity-based approach라고 할 수 있겠다. 그렇게 만든 방법이 Auto-CoT이다.
2. Auto-CoT: Automatic Chain of Thought Prompting
Auto-CoT의 과정을 간단히 정리하면 다음과 같다.
- Dataset을 $k$개로 clustering한다.
- Few-shot Question을 각 Cluster에서 선택하여 Diversity를 높인다.
- 각 Question에 대해 LLM이 Reasoning chain을 생성한다.
- 이를 Few-shot example로 활용하여 Few-shot-CoT를 진행한다.
이를 알고리즘으로 정리하면 다음과 같다.
3. Experiments
Main Result는 위와 같다. 놀라운 점은 Few-shot-CoT를 사용한 Manual-CoT보다 Auto-CoT의 성능이 높다는 점이다. 일반적으로 LLM의 Reasoning Chain은 Human annotator보다 떨어진다고 생각하면, 이러한 성능 개선은 Diversity-based approach가 얼마나 효과적인지를 보여주는 것이다.
이러한 방법은 Wrong Demonstration, 즉 잘못된 Few-shot sample에도 더 robust하다. 또한, Dataset 전체를 알지 못하고 streaming setting으로 small batch만 있을 때에도 잘 작동한다는 것을 확인할 수 있었다.
💡 Summary
Auto-CoT은 Zero-shot-CoT과 Manual-CoT의 장점을 결합한 방법론이다. Diversity-based approach를 통해 불완전한 Zero-shot-CoT의 문제를 해결하였고, 이 덕분에 Manual-CoT보다 높은 성능을 보여주었다. 개인적으로, Diversity가 얼마나 중요한 요소인지를 다시 한 번 깨닫게 해주는 논문이었다.
댓글 남기기