728x90

Self-consistency CoT는 greedy하게 하나의 reasoning trace만을 생성하던 기존의 CoT 방식에서 벗어나, 다양한 reaosning trace를 샘플링하여 이들 중 가장 높은 빈도로 consistent하게 등장하는 답을 최종 답으로 채택하는 방법을 말한다. 인간은 어떤 문제에 대한 해답을 찾을 때 한 개의 방법만을 생각해보는 것이 아닌, 다양한 방향으로 문제를 푸는 방법을 생각해보고, 결론이 같다면 이를 최종 답으로 선택하고는 한다. 이번 글에서는 이러한 점에 착안한 self-consistency가 무엇인지에 대해 알아보겠다.

Overview

 Self-consistency 방법은 아래 그림과 같이 정말 간단하다.

Overview of self-consistency

기존의 CoT prompting 방법 (그림에서 위)은 앞서 설명했듯 하나의 가장 가능성이 높은 reasoning path만을 greedy하게 생성하여 이를 따라 정답을 도출해내곤 했다. 하지만 이러한 방법은 딱 한 개의 reaosning path만을 생성하기 때문에 만약 이것이 가능성이 높음에도 불구하고 틀렸을 경우, 이를 보정할 방법이 전혀 존재하지 않는다.

 하지만 self-consistency 방법은 (그림에서 아래) 다양한 reasoning path들을 생성한다. 그림에서는 총 3개의 reasoning path를 생성했다. 이 때, 초록색으로 표현된 두 개의 reasoning path는 18이라는 같은 답을, 빨간색으로 표현된 한 개의 reasoning path는 26이라는 답을 도출했다. 이에 대해 majority voting 방식을 통해 reasoning path들을 marginalize하여 가장 높은 빈도로 도출된 답인 18을 최종 답으로 제시하는 것이다. 이 때, 다양한 reasoning path를 샘플링하는 데에는 temperature sampling, top-k sampling, nucleus sampling 등 어떠한 샘플링 방법도 모두 활용될 수 있다. 

Experiments

Self-consistency 방법은 그것의 간단함에 비해 성능의 향상에는 효과가 컸다. 예를 들어, 다음 표는 수학 reasoning의 정답 정확도를 나타내는데, 단순 CoT prompting보다 self-consistency 방법의 성능이 훨씬 높은 것을 알 수 있다.

Self-consistency의 수학 reasoning 성능 향상

 그렇다면 self-consistency가 다양한 reasoning trace를 생성하는 것을 통해 성능을 향상시키는데, 얼마나 다양한 샘플들을 생성해야할까? 이에 대한 대답은 아래 차트에서 알 수 있다. 보통 10개 정도의 샘플로도 큰 향상을 얻었고, 20-30개 이상 정도에서는 수렴하는 것을 확인할 수 있다.

Self-consistency with the number of diverse reasoning paths

 또한 모델의 사이즈가 변함에 따라 self-consistency의 효과가 적어질 수도 있지 않을까? 라는 의문이 들 수 있다. 모델의 사이즈가 커질수록 reasoning 능력이 뛰어날 것이고, 그렇다면 한 번의 greedy decoding으로 옳은 정답을 바로 도출할 수도 있을 것이기 때문이다. 하지만 아래 실험에서 이는 사실이 아니고, self-consistency 방식이 다양한 model scale에서 모두 성능 향상을 보였음을 확인할 수 있다.

Self-consistency across model scales

 이번 글에서 self-consistency가 무엇인지에 대해 알아보았다. 약간은 오래된 방법이기는 하지만, 최근에는 이를 활용한 fine-tuning 및 self-improving 등 다양한 후속 연구들이 나왔기 때문에 LLM decoding의 기초가 되는 논문으로 알아두는 것이 좋다.

References

Wang, et al. Self-consistency improves chain of thought reasoning in language models. ICML 2023.

300x250
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기