LLM이 여러 갈래의 생각을 펼친 뒤 갈래마다 평가해 유망한 쪽만 파고들고, 막히면 되돌아가는 문제 풀이 방식이다. 한 줄로만 생각하는 Chain-of-Thought와 달리, 퍼즐이나 계획 세우기, 설계안 고르기처럼 여러 길을 시도해 봐야 하는 문제에 쓴다.
| 방식 | 생각하는 모양 | 어울리는 문제 |
|---|---|---|
| Chain-of-Thought | 한 줄로 순서대로 | 단계가 정해진 계산·설명 |
| Self-Consistency | 여러 줄을 끝까지 풀고 다수결로 정함 | 정답이 하나인 문제 |
| Tree of Thought | 갈래마다 중간 평가, 막히면 되돌아가기 | 여러 길을 시도해 봐야 하는 문제 |
체스를 두는 사람이 몇 수 앞을 따져 보듯, 가다가 막다른 길이 나오면 되돌아가 다른 갈래를 시도한다.
ToT는 2023년 프린스턴대와 구글 딥마인드 연구진이 논문으로 제안했다. 문제를 작은 단계로 나누고, 단계마다 아래 과정을 반복한다.
| 단계 | 하는 일 |
|---|---|
| 쪼개기 | 문제를 한 번에 한 단계씩 풀 수 있는 크기로 나눈다 |
| 펼치기 | 지금 단계에서 가능한 다음 생각을 여러 개 만든다 |
| 평가하기 | 각 생각이 가망 있는지, 애매한지, 불가능한지 LLM이 스스로 판정한다 |
| 탐색하기 | 유망한 갈래만 남기고, 막히면 앞 단계로 되돌아간다 |
평가도 LLM에게 다시 물어서 하므로 따로 채점 모델이 없어도 된다.
채팅에서 간단히 쓰려면 프롬프트에 탐색 순서를 적어 주면 된다. 예를 들면 "서로 다른 접근법 3가지를 먼저 적어라. 각각 장단점과 성공 가능성을 평가한 다음, 가장 나은 하나를 골라 끝까지 풀어라. 중간에 막히면 다른 접근법으로 돌아가라"라고 쓴다. "전문가 세 명이 한 단계씩 생각을 말하고, 틀렸다고 깨달은 사람은 빠진다"처럼 역할극으로 흉내 내는 방법도 자주 쓴다.
제대로 쓰려면 코드에서 LLM을 여러 번 호출한다. 후보를 만드는 호출과 점수를 매기는 호출을 번갈아 하면서, 점수가 높은 몇 개만 다음 단계로 넘기는 반복문을 짠다. 답변 한 번 안에서 흉내 낼 때보다 되돌아가기가 확실하게 일어나지만, 그만큼 호출이 늘어난다.
갈래마다 생성과 평가 호출이 따라붙기 때문에 토큰과 시간이 CoT보다 훨씬 많이 든다. 첫 시도가 자주 틀리고 중간 단계가 맞는지 확인할 수 있는 문제에만 쓰는 것이 좋다.
| 상황 | ToT 사용 |
|---|---|
| 숫자 퍼즐, 일정·경로 계획 | 쓴다 |
| 여러 설계안 중 하나 고르기 | 쓴다 (프롬프트로 충분) |
| 요약, 번역, 단순한 질의응답 | 쓰지 않는다 |
답하기 전에 스스로 오래 생각하는 추론 모델은 이미 안에서 여러 방향을 검토하는 경우가 많다. 그래서 따로 ToT 프롬프트를 넣어도 효과가 작을 수 있다. 내 문제로 CoT와 결과·비용을 비교해 보고 정하는 것이 안전하다.
가장 흔한 건 채팅에서 프롬프트 한 줄로 흉내 내는 방식이다. 반복문으로 짜는 본격적인 ToT는 갈래를 하나씩 확인할 수 있는 퍼즐이나 계획 문제에 주로 쓴다.
| 어디서 | 어떻게 쓰나 |
|---|---|
| 채팅 속 설계·의사결정 | 접근법 몇 가지를 적게 하고 장단점을 평가시킨 뒤, 가장 나은 하나만 끝까지 풀게 한다 |
| 퍼즐·일정·경로 계획 코드 | 후보 생성과 채점 호출을 번갈아 돌리고, 점수 높은 갈래만 다음 단계로 넘긴다 |
| 버그 원인 찾기 | 원인 가설을 여러 개 세운 뒤 확인하기 쉬운 것부터 검증하고, 틀리면 다음 가설로 돌아간다 |