콘텐츠로 이동

02-CoT-변종들

CoT 한 번이 아니라 여러 번 샘플링한 뒤 다수결을 취한다.

  • 같은 프롬프트를 N번(5~40회) 호출
  • 각 호출은 서로 다른 추론 경로를 따름 (temperature > 0)
  • 최종 답을 다수결로 선택

이 단순한 수정이 GSM8K 등에서 single-pass CoT보다 의미 있는 향상을 만든다. 비용은 N배지만, 한 번 풀면 끝나는 high-stakes 문제에 적합하다.

CoT를 트리 탐색으로 확장한다.

  • 각 단계에서 여러 후보 사고를 만든다
  • 각 후보를 평가(self-evaluation)하고 점수를 매긴다
  • BFS / DFS로 가장 유망한 가지만 확장한다
  • 막히면 백트래킹

ToT는 계획·게임·창작처럼 탐색이 본질인 문제에 강하다. 계산 비용이 가장 크다.

ReAct — Reasoning + Acting (Yao et al., 2022)

섹션 제목: “ReAct — Reasoning + Acting (Yao et al., 2022)”

CoT는 머릿속에서만 추론한다. ReAct는 추론 사이사이에 외부 도구 호출을 끼워 넣는다.

Thought: 사용자가 환율을 묻고 있다. 오늘 환율을 모른다.
Action: search("KRW USD exchange rate today")
Observation: 1 USD = 1340 KRW
Thought: 100 USD는 134,000 KRW다.
Answer: 134,000원입니다.

ReAct는 오늘날의 에이전트 패턴의 직접적 조상이다. Claude Code의 도구 사용 루프, OMC sub-agent 호출, MCP 도구 등이 모두 ReAct의 운영판이다.

변종비용적합한 문제
Zero-shot CoT1x일반적인 추론, 첫 시도
Few-shot CoT1x + 예시 토큰도메인 특화 추론(법률·의료·코드)
Self-ConsistencyNx정답이 하나인 high-stakes 산술/논리
Tree of Thoughts매우 큼게임·계획·창작 탐색
ReAct가변외부 정보·실행이 필요한 모든 작업

”사고를 숨겨라” — 출력 분리

섹션 제목: “”사고를 숨겨라” — 출력 분리”

사고 사슬이 사용자에게 노출되는 것이 부적절한 경우도 많다(산업용 챗봇·UX). 두 가지 방법:

<thinking>
... 모델의 사고 과정 ...
</thinking>
<answer>
... 사용자에게 보일 답 ...
</answer>

호출 코드에서 <thinking> 블록을 제거하고 <answer>만 노출한다.

Claude의 extended thinking은 사고 토큰을 별도 채널로 처리한다. 호출자가 명시적으로 가져오지 않는 한 사용자에게 노출되지 않는다.

두 방법 모두 핵심은 사고와 최종 출력의 분리다.