- [17′ NIPS] Transformer : Attention Is All You Need
- [18′ OpenAI] GPT-1 : Improving Language Understanding by Generative Pre-Training
- [19′ NAACL] BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding
- [20′ NIPS] GPT-3 : Language Models are Few-Shot Learners
- [22′ NIPS] InstructGPT : Training language models to follow instructions with human feedback
- [21′ ICLR] LORA: LOW-RANK ADAPTATION OF LARGE LANGUAGE MODELS
- [21′ IJCNLP] Prefix-Tuning: Optimizing Continuous Prompts for Generation
- [22′ NeurIPS] Chain-of-Thought Prompting Elicits Reasoning in Large Language Models
- [20′ NeurIPS] Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks
- [23′ ICLR] Self Consistence : SELF-CONSISTENCY IMPROVES CHAIN OF THOUGHT REASONING IN LANGUAGE MODELS
- Prompt Engineering, PEFT, RAG – LLM이 외부 정보를 사용하는 세 가지 방법
- [22′ NeurIPS] LIFT: Language-Interfaced Fine-Tuning for Non-Language Machine Learning Tasks
- [23′ ICLR] LANGUAGE MODELS ARE REALISTIC TABULAR DATA GENERATORS
1. 들어가며
자연어 처리(NLP) 분야에서 복잡한 문제 해결을 위한 모델의 능력 향상은 지속적인 연구 주제입니다. 2023년 구글에서 발표한 “Self Consistency” 논문은 이 분야에서 중요한 진전을 나타냅니다. 이 논문은 기존의 Chain of Thought Prompting 방식이 가진 한계를 극복하고자 하는 새로운 접근 방식을 제시합니다. Chain of Thought Prompting은 모델이 문제 해결 과정을 단계별로 추론하도록 하지만, 단 하나의 실수로 인해 오답을 도출할 위험이 있습니다. 이러한 문제를 해결하기 위해, “Self Consistency” 논문은 모델이 여러 추론 경로를 고려하고, 이 중 가장 일관된 답변을 선택하는 방법을 제안합니다. 이는 사람이 여러 의견을 종합하여 더 나은 결론을 도출하는 과정과 유사합니다.
본 논문에서는 산수, 상식, 기호 추론 등 다양한 영역에서 Self Consistency 방법의 성능을 평가하고, 이를 기존 방식과 비교하여 그 우수성을 입증합니다. 또한, 다른 결론 도출 방법들과의 비교를 통해 Self Consistency 방식이 어떻게 더 우수한 결과를 제공하는지를 보여줍니다. 추가적인 실험을 통해, 이 방법이 모델 크기나 샘플링 방법, 심지어 불완전한 프롬프트에도 불구하고 일관된 성능 향상을 보임을 확인합니다. 그러나, 다양한 대답을 도출하고 이를 분석해야 하는 과정에서 발생하는 계산 비용은 이 방법의 한계로 지적됩니다.
이번 글에서는 “Self Consistency” 논문의 주요 내용을 소개하고, 이 새로운 접근 방식이 NLP 분야, 특히 복잡한 문제 해결에 어떤 영향을 미칠 수 있는지 살펴보겠습니다.
2. 기존 방법의 문제점
본격적으로 Self Consistency 방법을 알아보기에 앞서, Chain of Thought Prompting 방식을 언급하지 않을 수 없는데요. Self Consistency는 Chain of Thought Prompting 방식을 계승, 발전한 방식이기 때문입니다. Chain of Thought 방식의 핵심은 아주 간단합니다. GPT3 에서 제안한 Few Shot Learning 방식은 LLM에게 질문과 정답을 예시로 제공해주었는데요. Chain of Thought는 이렇게 정답만 알려줘서는 의미가 없다고 주장합니다. 이건 마치 초등학생 조카에게 산수를 가르쳐 주는데, 문제 풀이 방법은 알려주지 않고 문제와 정답만 가르쳐준 꼴이라는 것이죠. 이렇게 정답만 알려주면 우리 초등학생 조카들도 산수 실력이 전혀 늘지 않잖아요? 산수 실력이 늘려면 ‘정답’이 아니라 ‘문제 풀이 방법’을 알려줘야죠.
위 그림은 Chain of Thought 방식의 예시를 보여주고 있습니다. LLM에게 입력으로 들어간 질문은 이런 내용이었어요.
오리는 하루에 16개의 알을 낳는다. 그런데 집 주인이 아침에 3개씩 먹고, 4개는 머핀 구울때 먹는다. 나머지는 개당 2달러씩 받고 판다. 그럼 하루에 얼마를 벌까?
위 그림은 Chain of Thought Prompting을 사용하여 위 질문에 대한 대답을 구한 모습을 보여주고 있습니다. Prompting으로는 다른 문제를 푸는 과정에 대한 상세한 예시를 주었구요. 대답도 제공 받은 샘플과 유사한 방식으로 풀어나가는 모습을 볼 수 있습니다. 그런데 문제는 이렇게 구한 풀이 과정이 틀렸다는 겁니다. 샘플로 제공받은 풀이 과정과 유사한 과정의 연산을 거쳤으나 약간의 ‘실수’ 가 있었죠. 우리도 문제를 풀다 보면 ‘실수’ 할때가 있잖아요? 어떻게 하면 약간의 기능을 추가해서 Chain of Thought Prompting 방법을 보완해줄 수 있을까요?
3. Self Consistency
Self Consistency 저자들은 이러한 Chain of Thought 방식의 한계를 극복하기 위해 사람의 연산 과정에 주목합니다. 생각해보면, 사람들은 동일한 문제에 대해 조금씩은 다른 논리 전개를 통해 결론에 도달하곤 합니다. 물론 ‘핵심 내용’은 동일해야죠. 그래야 동일한 정답에 다다를 테니까요. 하지만 그 정답에 다다르는 스토리는 사람마다 조금씩 다르곤 합니다.
위의 오리알 예시를 다시 생각해볼게요. 초등학생 조카에게 이 문제를 풀어보라고 한다면, 첫째 조카는 이렇게 설명할 것 같습니다. “오리알이 16개가 있었는데, 3개 빼고, 4개 빼니까 9개가 남았어요. 그런데 한개당 2$씩이라고 했으니까, 정답은 9*2=18$ 예요.” 맞는 추론이죠? 그런데 둘째 조카는 이렇게 설명하는거에요. “집주인이 아침에 3개 먹었죠. 그니까 오리알은 13개 남았어요. 그리고나서 4개를 또 사용했죠. 그러니까 이제 9개 남았어요. 그런데 개당 2$라고 했으니까 총 9*2=18$예요.”
둘 다 맞는 추론이죠? 결과적으로 정답을 도출했구요. 하지만 그 정답까지 다다르는 과정은 조금은 달랐습니다. 저자들이 주목한 포인트는 바로 이 지점인데요. 정답에 다다르는 길은 여러가지입니다. 하지만 그렇게 다다른 정답은 모두 하나여야 해요. 즉 여러 방식으로 도출한 결론 중, 가장 많은 결론을 정답으로 추론하는게 합리적이겠다는 거죠.
위 그림은 지금까지 설명한 내용을 바탕으로 하는 Self Consistency의 방법론을 종합해서 설명해주고 있습니다. 먼저 왼쪽은 LLM에 들어간 Chain of Thought Prompting입니다. 문제를 풀기 전, 유사한 문제와 그 풀이 과정을 예시로 보여주고 있는 모습입니다. 그리고 오른쪽은 이렇게 입력 받은 Prompt에 대해 여러가지 답변을 도출하는 모습을 보여주고 있습니다. 총 세가지의 답변을 내었는데요. 이 중 두가지는 18$라는 결론을, 한 답변은 26$라는 답변을 냈네요. 그럼 결과적으로는 18$ 라는 답변을 최종 답변으로 선택하자는 겁니다. 왜냐하면 추론 과정은 달랐어도 정답은 일치해야 하기에, 가장 많은 공통된 답변이 정답일 가능성이 높기 때문이죠.
여기까지 Self Consistency 방법을 정리해보겠습니다.
첫 번째 절차는 Chain of Thought Prompting을 구성해주는 것입니다. 우선 LLM에게는 Chain of Thought Prompting이 입력으로 들어가야 합니다.
두 번째 절차는 이렇게 들어간 입력 Prompt에 대해 다양한 답변을 추출하는 과정입니다. 이 과정에서는 Temperature Sampling 등 다양한 방법을 사용할 수 있습니다.
세 번째 절차는 이렇게 추출한 답변 중 가장 많이 나온 답변을 고르는 과정입니다. 물론 최종 답변을 고르는 방법은 이렇게 다수결 원칙 외에도 다양한 방법이 있는데요. 실험 결과 단순 Voting 방식의 성능이 가장 좋았다고 합니다.
4. 성능 실험
이번에는 이러한 Self Consistency를 사용한 성능 실험 결과를 살펴보겠습니다.
4-1. Arithmetic Reasoning
첫 번째로 살펴볼 실험은 산수 추론 (Arithmetic Reasoning) 실험 결과입니다. 산수 추론은 기존 LLM이 가장 어려워 하는 문제 중 하나로 알려져 있는데요. Chain of Thought 논문에서는 Chain of Thought Prompting을 사용하여 이러한 산수 추론 성능을 크게 개선했었습니다.
위 표는 Chain of Thought와 Self Consistency를 사용한 산수 추론 문제의 성능을 비교하고 있습니다.
첫 번째로 주목해야 할 부분은 Chain of Thought 성능과의 비교입니다. 모든 문제에서 Self Consistency의 성능이 Chain of Thought를 사용한 성능보다 좋은 모습을 볼 수 있습니다.
두 번째로 주목해야 할 부분은 모델 사이즈에 따른 성능 향상폭 입니다. 결과 표를 보면 모델 사이즈가 커질수록 Self Consistency의 성능 향상 폭이 커지는 모습을 볼 수 있습니다. 이에 따라 LLM 사이즈가 커질수록 Self Consistency의 효과가 더욱 배가 된다는 사실을 알 수 있습니다.
4-2. Commonsense & Symbolic Reasoning
다음으로 살펴볼 실험은 상식 추론과 기호 추론 문제입니다. 마찬가지로 기존 LLM은 상식 추론과 기호 추론 문제에서 약한 모습을 보였는데요.
위 그림은 상식 추론과 기호 추론 문제에서 Chain of Thought와 Self Consistency를 사용한 성능을 비교한 표입니다. 총 6개의 문제 중 5개에서 Self Consistency 방식이 SOTA를 차지한 모습을 볼 수 있습니다.
4-3. Reasoning Path 개수에 따른 효과
Self Consistency의 핵심은 ‘다양한 생각’을 종합하여 결론을 내리는 것인데요. 이때 종합하는 생각의 개수와 성능은 어떤 상관관계를 가질까요?
위 그림은 이러한 의문에 대한 실험 결과를 보여주고 있습니다. 다양한 문제에 대해 Reasoning Path 개수에 따른 성능을 비교하고 있는데요. 확실히 Reasoning Path가 많을수록, 즉 다양한 생각을 종합할 수록 성능이 좋아지는 모습을 볼 수 있습니다.
4-4. Common NLP Task에서의 효과
Chain of Thought는 산수 추론, 상식 추론, 기호 추론 등 기존 LLM이 약한 모습을 보이던 문제들에 강인한 모습을 보이지만, 오히려 Common NLP Task에서는 약한 모습을 보였는데요. Self Consistency는 어떨까요?
위 그림은 Common NLP Task에 대한 Standard Prompting, Chain of Thought Prompting, Self Consistency의 성능을 비교한 표 입니다. 확실히 Chain of Thought는 Standard Prompting 방식에 비해 성능이 하락하는 모습을 보여주는데요. 반면 Self Consistency는 Common NLP Task에서도 Standard Prompting에 비해 일관되게 성능이 증가하는 모습을 보여줍니다.
5. 다른 방법들과의 비교
그렇다면 다른 방법들과 비교해보면 어떨까요? Self Consistency 방식은 다른 방법들과 비교해도 여전히 우수한 방법일까요?
5-1. Sample and Rank
Self Consistency 는 다양한 생각들을 종합해서 가장 많이 나온 답변을 선택하고 있는데요. 이렇게 선택하지 않고, Log Probability를 계산해서 가장 높은 확률로 계산된 대답을 선택하면 어떨까요?
위 그림은 이러한 방식인 Sample and Rank와 Self Consistency의 성능을 비교한 그래프입니다. 우선 Sample and Rank 방식도 Reasoning Path를 증가함에 따라 성능 향상을 보이긴 하는데요. 다만 그 성능 향상 폭이 Self Consistency에 미치지 못하는 모습입니다.
5-2. Beam Search
그렇다면 NLP Task에서 자주 사용되는 Beam Search 방식으로 대답을 선택하면 어떨까요?
위 그림은 Beam Search 방식과 Self Consistency 방식의 성능을 비교한 표 입니다. 확실히 Beam Search 방식보다 Self Consistency 방식의 성능이 더 좋은 모습을 볼 수 있습니다.
이러한 실험 결과들을 종합해보겠습니다. 다양한 생각들로부터 도출된 결론 중 최종 대답을 선택하는 방법은 다양한데요. 화려한 알고리즘보다 단순한 Voting 방식이 가장 효과적임을 확인할 수 있었습니다. 즉 저자들의 최초 가정이었던, 결론에 이르는 길은 다양할지라도, 논리 과정이 맞다면 동일한 정답에 이르게 된다는 가정이 일릴가 있다고 결론 내릴 수 있습니다.
6. Additional Studies
다음은 추가적인 실험 결과를 살펴보겠습니다.
6-1. Robustness to Sampling Strategies and Scaling
LLM을 사용하여 하나의 Prompt에 다양한 대답을 추출하는 방법은 다양한데요. 이러한 방법들에 대해 Self Consistency는 일관된 경향을 보일까요? 또한 모델 Scale에 대해서는 어떠한 경향을 보일까요?
왼쪽 그림은 다양한 Sampling 방법에 따른 Self Consistency 성능을 비교한 그래프입니다. 약간의 차이는 있지만 동일하게 Reasoning Path가 커짐에 따라 성능이 증가하는 일관된 경향을 확인할 수 있습니다.
오른쪽 그림은 Model Size에 따른 Self Consistency 성능을 비교한 그래프입니다. 마찬가지로 Model Size가 커짐에 따라 일관되게 성능이 증가하는 모습을 볼 수 있습니다.
6-2. Robustness to Imperfect Prompts
Chain of Thought와 Self Consistency는 사람이 만들어주는 Prompt에 따라 다른 결과를 도출할 수 밖에 없는데요. 그렇다면 Imperfect Prompt에는 얼마나 민감하게 반응할까요?
우선 Chain of Thought는 Prompt가 불완전해지면 그에 따라 성능이 하락하는 모습을 볼 수 있습니다. 아무래도 단 한번의 추론에 의존하기에 입력 Prompt가 나빠지면 곧바로 성능 하락으로 이어진다고 볼 수 있습니다. 반면 재미있게도 Self Consistency는 Prompt가 불완전해졌음에도 불구하고 성능이 향상되는 모습을 보입니다. 여러 생각을 종합하여 최종 결론을 도출하기에, 불완전한 Prompt에도 비교적 강건한 모습을 보인다고 생각할 수 있습니다.
6-3. Relation to Consistency and Accuracy
그렇다면 동일한 대답을 한 비율인 Consistency와 성능인 Accuracy는 어떠한 상관관계를 가질까요?
위 그림은 Consistency에 따른 Accuracy를 비교한 그래프입니다. Consistency가 커질수록 일관되게 Accuracy가 좋아지는 모습을 볼 수 있습니다. 즉 “많은 사람이 동의한 결론이 정답일 확률이 높다.”라고 해석할 수 있겠네요. 충분히 납득할 수 있는 결론입니다.
7. 한계
저자들은 다양한 장점에도 불구하고 Self Consistency 방법에도 한계가 있다고 지적합니다. 바로 Computational Cost가 크다는 점인데요. 실험 결과를 보면 보통 하나의 Prompt에 대해 40개의 대답을 종합하는 모습을 볼 수 있습니다. 기본적으로 Self Consistency는 Chain of Thought Prompting을 사용하기에 입력 Prompt와 대답이 긴데요. 이러한 과정을 40번씩 반복해야 하니, 단순 계산으로도 Chain of Thought 방식보다 40배의 Cost가 든다고 볼 수 있습니다.
7. 마치며
“Self Consistency” 논문 리뷰글을 마무리하며, 이 연구가 자연어 처리(NLP) 분야에 미치는 중요한 영향을 다시 한번 강조하고자 합니다. 이 논문은 복잡한 문제 해결을 위한 기존의 접근 방식에 대한 근본적인 개선을 제안함으로써, 모델의 추론 과정을 더욱 강화하고 정확도를 향상시키는 새로운 길을 열었습니다. Self Consistency 방법은 모델이 여러 추론 경로를 탐색하고, 가장 일관된 답변을 선택함으로써, 단일 추론 경로에서 발생할 수 있는 오류를 줄이고, 전반적인 추론 성능을 개선합니다.
이 연구는 산수 추론, 상식 추론, 기호 추론 등 다양한 영역에서 모델의 성능을 평가하고, Self Consistency 방식이 기존 방법론을 뛰어넘는 성능을 보임을 입증했습니다. 이는 NLP 모델이 더욱 복잡하고 다양한 문제를 효과적으로 해결할 수 있는 능력을 갖추도록 하는 중요한 발전입니다. 또한, 이 방법은 모델의 추론 과정에 대한 투명성을 제공하며, 사용자가 모델의 결정을 더 잘 이해하고 신뢰할 수 있도록 합니다.
그러나, 다양한 대답을 도출하고 분석하는 과정에서 발생하는 계산 비용은 고려해야 할 중요한 측면입니다. 향후 연구에서는 이러한 계산 비용을 줄이면서도 모델의 성능을 유지하거나 향상시킬 수 있는 방법을 모색하는 것이 중요할 것입니다.
“Self Consistency” 논문은 NLP 분야에서 모델의 추론 능력을 향상시키는 새로운 방법론을 제시함으로써, 복잡한 문제 해결에 대한 새로운 접근 방식을 제공합니다. 이 연구는 향후 지식 기반 추론, 질의응답 시스템, 기계 독해 등 다양한 NLP 작업에 광범위하게 적용될 수 있는 잠재력을 가지고 있으며, 이 분야의 연구와 개발에 중요한 영감을 제공할 것입니다.