헷개정 - 헷갈리는 개념 정리

Reasoning & Planning에 관하여

cch8ii 2025. 11. 20. 22:20

LLM을 공부하다보면 CoT에 대한 이야기를 많이 들을 수 있다. 

CoT 그 이후에 나온 연구 동향은 어떻게 되는지, LLM의 Reasoning & Planning에 관하여 조금 살펴보려고 한다. 

 

 

CoT (Chain-of-Thought)

가장 먼저 간단하게 CoT에 대해 알아보겠다. 

조금 더 자세하게 알고 싶다면 CoT 논문 리뷰 게시물을 참고하면 좋을 것 같다. 

https://cch8ii.tistory.com/133

 

CoT (2023.01): Chain-of-Thought Prompting Elicits Reasoning in Large Language Models

논문 링크: https://arxiv.org/abs/2201.11903#:~:text=intermediate%20reasoning%20steps%20,exemplars%20achieves%20state%20of%20the Chain-of-Thought Prompting Elicits Reasoning in Large Language ModelsWe explore how generating a chain of thought -- a serie

cch8ii.tistory.com

 

 

CoT는 사람의 생각하는 과정을 모사해보자라는 아이디어에서 시작된 것으로 프롬프트에 추론 과정을 Few-shot으로 넣어주게 된다면 모델이 이를 모방해 풀지 못하는 문제도 풀게 되는 것을 보여준 개념이다. 

CoT 논문의 실험 결과에서 주목해야 할 점을 간단히 정리해보자면 다음과 같다. 

  • 추론이 자연어 형태로 주어졌을 때 잘 작동한다. (식만 적거나 변수 계산만 있을 경우 효과가 없다,)
  • 답을 먼저 적고 이유를 적는 경우에도 효과가 없다. (Auto-regressive 이기 때문)
  • CoT는 emergent ability이다. (큰 모델에서만 성능 향상을 보인다.)
  • Reasoning은 코드 데이터에 사전학습이 된 경우에만 작동된다는 보고가 존재한다. 

 

CoT에 대해 자세히 살펴보다 보면 CoT는 프롬프트에 예시가 꼭 하나는 들어가 있어야 동작을 한다는 것을 알 수 있다. 즉, 생각에 대한 예시가 필요하다는 것이다. 

그렇다면 예시 없이 Chain-of-Thought를 할 수는 없을까? 

 

Zero-Shot Chain-of-Thought

예시 없이 Chain-of-Thought를 유도할 수 없을까? 에 대해 연구한 것이 유명한 "Let's think step by step" 논문이다. 

http://arxiv.org/abs/2205.11916
 

Large Language Models are Zero-Shot Reasoners

Pretrained large language models (LLMs) are widely used in many sub-fields of natural language processing (NLP) and generally known as excellent few-shot learners with task-specific exemplars. Notably, chain of thought (CoT) prompting, a recent technique f

arxiv.org

 

 

결국엔 생각하는 것을 예시로도 주지 않고 "Let's think step by step" 이라는 말만 줘서 모델이 CoT를 하게 만드는 것이다. 

 

 

모델이 학습한 데이터셋엔 "Let's think step by step" 이라는 문장 이후에 차근차근 설명하려는 데이터가 많았을 것이고 이러한 데이터셋으로 학습된 모델은 자연스럽게 Zero-Shot이더라도 차근차근 추론의 과정을 밟아나가게 되는 것이다. 

하지만 그냥 CoT로 할 때에는 "The answer is~" 다음에 답을 내놓게 했기 때문에 정답을 파싱할 수 있었찌만 이렇게 하면 정답이 어딨는지 알 수 없게 된다. 때문에 정답을 추출하기 위해 추가적인 단계를 낸다. 추론이 생성되고 나면 그 다음에 정답을 따로 뽑는 2차 프롬프트를 만들어 정답을 추출하게 된다. 

 

Zero-shot CoT는 실제로 높은 정확도를 보였고 쉬운 문제보다 복잡한 문제에서 큰 성능 향상을 보였다. 하지만 여전히 few-shot CoT 보단 성능이 조금 낮긴 했는데 예시를 요구하지 않는다는 점에서 장점을 보였따. 또한 Zero-shot CoT도 emergent ability이다. 

 

Self-consistency

https://arxiv.org/abs/2203.11171
 

Self-Consistency Improves Chain of Thought Reasoning in Language Models

Chain-of-thought prompting combined with pre-trained large language models has achieved encouraging results on complex reasoning tasks. In this paper, we propose a new decoding strategy, self-consistency, to replace the naive greedy decoding used in chain-

arxiv.org

 

Reasoning에서는 CoT 기법 뿐만 아니라 Self-consistency 기법도 많이 사용된다. 

Self-consistency 기법은 기존의 CoT의 한계를 해결하기 위해 나온 기법이다.

기존의 CoT는 “그냥 바로 답만 내지 말고, 생각하는 과정을 단계별로 글로 써봐” 라고 시키는 프롬프트 기법이다. 여기서 생각해보면 기존 CoT는 한 번 생성된 단일 추론 경로에 전적으로 의존하는 것을 알 수 있다. 즉, greedy decoding을 사용하기 때문에 모델이 한 번 생각의 흐름을 텍스트로 쭉 생성할 때 뭔가 중간에 하나가 잘못되면 뒤에 나오는 내용도, 최종 답변도 잘못될 가능성이 크다는 한계를 가지고 있는 것이다. 

그래서 Self-consistency가 나왔다. 

Self-consistency는 “한 번만 생각하지 말고 여러 번 다르게 생각해본 다음, 서로 가장 일관되게 나오는 답을 채택하자.”는 아이디어에서 비롯된다. 

작동 과정은 단순하다. 여러 번 CoT를 해서 다수결로 가장 많이 나온 답변을 채택하는 방식이다. 일종의 앙상블 방식이라고 생각하면 이해가 쉽다. 

 

Self-consistency는 정확도가 크게 올랐다는 장점과 계산량이 많다는 단점을 동시에 가지고 있다. 실제로 다양한 모델, 다양한 과제에서 그냥 CoT보다 더 높은 정확도를 달성했다. 또한 주목해야 할 결과로는 Beamsearch를 통해 가장 좋은 resoning path들로 추론하기 보다 샘플링을 통해 다양한 reasoning path들로 추론할 때 더 좋은 결과를 보였다는 것이다. 

 

 

어려운 문제를 아예 나눠버리는 건 어때?

CoT는 결국 문제가 주어졌을 때 문제를 분해하여 푸는 것처럼 보이지만 그냥 문제를 그대로 둔 채 해결 과정을 단계별로 자연어로 기술하는 거라고 이야기할 수 있다. CoT가 잘 못하는 경우를 생각해보면 원래의 문제 자체가 너무 복잡해서 그냥 그대로 풀어가는 과정을 서술하는 것만으로는 도움이 안 되는 경우가 있을 수 있다. 

때문에 아예 어려운 문제를 더 쉬운 하위 문제로 먼저 분해하자는 아이디어가 나오게 된다. 

 

Least-to-Most Prompting

https://arxiv.org/abs/2205.10625
 

Least-to-Most Prompting Enables Complex Reasoning in Large Language Models

Chain-of-thought prompting has demonstrated remarkable performance on various natural language reasoning tasks. However, it tends to perform poorly on tasks which requires solving problems harder than the exemplars shown in the prompts. To overcome this ch

arxiv.org

이러한 CoT 개념을 통해서 우린 finetuning 없이도 프롬프팅 만으로도 생각의 과정을 모방할 수 있다는 것을 알 수 있다. 때문에 그 이후 어려운 문제를 쉽고 작은 문제로 분리해보자는 아이디어와 함께 Least-to-Most Prompting이 나오게 되었다. 

Least-to-Most Prompting은 LLM에게 문제 해결을 바로 시키지 않고 문제를 해결하기 위해 어떤 subproblem으로 나눠야 할까를 먼저 물어본다. 즉, 모델이 문제의 구조를 스스로 이해하게 하고 하위 문제를 먼저 생산하게 하는 거시다. 

 

few-shot 프롬프트를 제공해서 복잡한 문제에 대해 subproblem을 생성하게 한다. 그렇게 suproblem이 생성되게 되면 그 작은 문제를 하나씩 LLM에게 넣어서 문제를 해결하게 되는 것이다. 

 

주목할만한 겨로가는 다음과 같다. 실제로 CoT보다 산수 연산 및 기호 추론 task에서 우수한 정확도를 기록했으며 실제로 계산이 필요한 단계가 많을 수록 더 높은 정확도를 보였다고 한다. 

 

이를 통해 LLM이 큰 문제를 작은 문제로 분해할 수 있다는 것을 알게 되었다. 하지만 작은 문제 자체를 사전에 정의해서 작은 문제를 풀 수 있는 무언가를 호출할 수 있게 만들면 되지 않을까? 라는 생각이 들 수도 있을 것이다. 

 

Decomposed Prompting

https://arxiv.org/abs/2210.02406
 

Decomposed Prompting: A Modular Approach for Solving Complex Tasks

Few-shot prompting is a surprisingly powerful way to use Large Language Models (LLMs) to solve various tasks. However, this approach struggles as the task complexity increases or when the individual reasoning steps of the task themselves are hard to learn,

arxiv.org

그런 생각으로부터 나온 것이 Decomposed Prompting이다. 

Decomposed Prompting도 CoT와 마찬가지로 하나의 기술이라기보다 복잡한 문제는 분해해서 단계적으로 해결하자는 전반적인 프롬프팅 기법이다.

 

Decomposed Prompting에서는 문제를 사람이 먼저 정의하고 Decomposer와 Sub-task handler가 상호작용하게 한다. 즉, 작은 문제를 해결할 수 있는 도구를 활용할 수 있게 하는 것이다. 

Decomposer가 전체 문제를 읽고 사람이 정의한 기준에 따라 해결 가능한 하위 문제 목록을 생성한다. 그림으로 치면 Q1~Q4를 생성하는 것이다. 그렇게 생성된 각 하위 문제는 Sub-task Handler를 통해 해결된다. 즉, 작은 문제를 해결할 수 잇는 역할 별 도구가 되는 것이다. 

 

Decomposed Prompting에서 주목할 점은 Least-to-Most Prompting 보다 뛰어난 정확도와 일반화를 보였다는 점이다. 또한 처리 길이가 길어지더라도 성능이 높고 일반화를 보였다고 한다. 

 

ReAct

https://arxiv.org/abs/2210.03629
 

ReAct: Synergizing Reasoning and Acting in Language Models

While large language models (LLMs) have demonstrated impressive capabilities across tasks in language understanding and interactive decision making, their abilities for reasoning (e.g. chain-of-thought prompting) and acting (e.g. action plan generation) ha

arxiv.org

ReAct는 단순히 문제를 분해하는 것을 넘어서 추론(reasoning) 과 행동(action) 이 상호작용하는 방식으로 문제를 해결하는 새로운 패러다임을 제시한다. Decomposed Prompting이 문제를 구조적으로 나누는 데 초점을 둔다면 ReAct는 문제 해결 과정에서 필요한 외부 도구 사용, 환경 상호작용까지 통합해 LLM을 완전한 Agent로 확장한다.

위 그림을 보면 CoT는 Act를 할 수 없기 때문에 추론은 진행하지만 실제 정보를 검색하거나 확인하는 행동을 하지는 못한다. 때문에 외부 정보에 의존하는 질문에서는 한계가 발생할 수 밖에 없는 것이다. 

ReAct는 Thought 그 후 Action, Observation의 단계를 계속해서 바복하면서 최종적인 답을 낸다. 

 

 

이후에 어떤 식으로 더 발전되었을까? 

확실한 건 이러한 흐름으로 AI Agent의 기반이 다져진 게 아닐까 라는 생각이 든다. 

CoT 말고 ToT와 같은 것도 있던데 좀 더 최신 논문을 찾아보면서 파악해보면 좋을 것 같다.