Tree of Thoughts(ツリーオブソーツ、ToT)とは、Yao氏らが2023年にNeurIPSで発表したLLM推論フレームワークのこと。Chain of Thought(CoT)プロンプトを拡張し、複数の思考経路を木構造で探索することで、計画や探索が必要な難問の精度を劇的に上げる手法である。論文ではGame of 24というパズルで、CoT単独のGPT-4が4%の正答率だったのに対し、Tree of Thoughtsで74%まで引き上げたことが報告されている。
Tree of Thoughtsの核心は「LLMに一度の推論で答えを出させるのではなく、複数の中間思考(thoughts)を生成して評価し、有望な分岐を選んで深く掘り下げる」という設計にある。実務では、創作・パズル・最適化など、答えに至る経路が複数考えられる問題で重要な役割を果たします。重要なポイントは、これは新しいモデルではなく、既存のLLMに対するプロンプト+外部探索アルゴリズムの組み合わせだという点です。
Tree of Thoughtsの読み方
ツリーオブソーツ
ツリーオブソート
思考の木
Tree of Thoughtsの仕組み
Tree of Thoughtsは4つの要素で構成される。「思考の分解(thought decomposition)」「思考生成器(thought generator)」「状態評価器(state evaluator)」「探索アルゴリズム(search algorithm)」の4つです。LLMは思考生成と評価を担当し、外側のコードがBFSやDFSで木を探索する。重要なポイントは、LLMの「考え方」そのものを構造化された問題解決に近づける設計だという点です。
Tree of Thoughtsの探索フロー
問題を中間状態に分解
各状態で複数候補を生成
各候補をLLMで評価
有望な枝を選んで深掘り
探索戦略の選択
論文ではBFS(幅優先探索)とDFS(深さ優先探索)の両方が試されている。Game of 24やクロスワードのように小規模で網羅的に探索したい問題ではBFSが、Creative Writingのように深く掘り下げる問題ではDFSが向いている。実務では問題の性質に応じて選ぶことが重要です。
論文での実証結果
論文(arXiv:2305.10601)の代表的な実験は3つ。Game of 24(24点に到達する四則演算パズル)でGPT-4 + CoTが4%、ToTで74%を達成。Creative Writing(一貫したテーマを持つ4文の段落生成)で品質が改善。Mini Crosswords(5×5クロスワード)で文字単位の正答率が16%から60%に向上した。実務では、これらは「LLMが探索を必要とする問題で苦手だった」事実を示しており、ToTの貢献度の証左です。
Tree of Thoughtsの使い方・実例
基本的な使い方(Quick Start)
# Tree of Thoughtsの簡略実装例(Game of 24)
def generate_thoughts(state, llm):
"""現在の状態から次の思考候補を複数生成"""
return llm(f"次のステップを3つ提案: {state}").split("\n")
def evaluate_state(state, llm):
"""状態の有望度をLLMで採点"""
return float(llm(f"{state}は24に到達できるか?1-10で評価").strip())
def tot_search(initial, max_depth=3, beam=3):
frontier = [(initial, 0)]
for depth in range(max_depth):
candidates = []
for state, _ in frontier:
for next_state in generate_thoughts(state, llm):
score = evaluate_state(next_state, llm)
candidates.append((next_state, score))
candidates.sort(key=lambda x: -x[1])
frontier = candidates[:beam]
return frontier[0]
よくある実装パターン
パターンA: Beam Search型ToT
# 各深さで上位N個だけ残すビームサーチ型
beam_width = 3
for depth in range(max_depth):
new_states = []
for state in beam:
new_states.extend(generate_thoughts(state))
scored = [(s, evaluate(s)) for s in new_states]
beam = [s for s, _ in sorted(scored, key=lambda x:-x[1])[:beam_width]]
向いているケース: 探索空間が広いが、各状態の評価が安定している問題。Game of 24などのパズル系。
避けるべきケース: 評価が不安定な創作タスク。スコアのばらつきが大きく良い枝が選ばれない。
パターンB: 早期終了つきDFS
# 深さ優先で評価が低い枝はその場で打ち切る
def dfs(state, depth):
if is_goal(state): return state
if depth >= MAX_DEPTH: return None
for next_state in generate_thoughts(state):
score = evaluate(next_state)
if score < THRESHOLD: continue # 早期打ち切り
result = dfs(next_state, depth + 1)
if result: return result
return None
向いているケース: Creative Writingやコード生成のように、深く掘り下げる必要があるが探索量を抑えたい場合。
避けるべきケース: 評価器が不正確で、良い枝を誤って打ち切ってしまう懸念があるとき。
アンチパターン: 全枝を完全展開する
# NG: 全候補を全深度まで展開するとAPI課金が爆発
def naive_tot(state, depth):
if depth == 0: return [state]
return [naive_tot(s, depth-1) for s in generate_thoughts(state)]
枝刈りを行わない素朴なToTは、深さ3・分岐3の単純なケースでもLLM呼び出しが27回以上になります。実務では必ずビームサーチや早期終了を組み合わせ、API課金とレイテンシをコントロールすることが重要です。
Tree of Thoughtsのメリット・デメリット
メリット
- 探索が必要な問題で大幅な精度向上: Game of 24で4%→74%という劇的改善。
- 既存LLMで使える: 新たな訓練不要。プロンプト+外部コードで実装可。
- 可視化・デバッグ容易: 木構造として思考過程が表現でき、失敗原因の特定がしやすい。
- バックトラックが可能: 行き詰まったら別の枝を試せる。
デメリット
- API呼び出し回数の増加: 単純なCoTより数十倍のリクエストが必要になることもある。
- レイテンシの大幅増: リアルタイムUIには不向き。
- 評価器の品質に依存: 状態評価が不正確だと、誤った枝に進んでしまう。
- すべての問題に向くわけではない: 単純な質問応答や要約では効果が薄い。
Tree of ThoughtsとChain of Thought・Self-Consistencyの違い
Tree of ThoughtsはChain of ThoughtやSelf-Consistencyと混同されやすい。下記の比較表で違いを整理する。
| 観点 | Tree of Thoughts | Chain of Thought | Self-Consistency |
|---|---|---|---|
| 構造 | 木(複数経路+分岐) | 直線(1本道) | 複数の独立した直線 |
| 探索性 | あり(BFS/DFS+評価) | なし | なし(投票のみ) |
| バックトラック | 可能 | 不可 | 不可 |
| API呼び出し数 | 多(数十〜百回) | 1回 | N回(10前後) |
| 向いている問題 | 探索・計画・パズル | 中難度の論理推論 | 答えが収束する問題 |
| 代表例 | Game of 24, Crosswords | "step by step"プロンプト | 数学計算の多数決 |
つまり「ToTは構造化された探索、CoTは1本の思考、Self-Consistencyは複数CoTの多数決」と整理できる。実務ではToTは最強だが最も重く、用途を選ぶべき手法です。
よくある誤解
誤解1: 「Tree of Thoughts は新しいLLMである」
なぜそう誤解されるのか: 「Tree of Thoughts model」と書かれることが一部記事にあり、独立したモデル名と勘違いされやすい。LLMの新世代として紹介される文脈もあったため、この混同が広まった背景がある。
正しい理解: Tree of Thoughtsはモデルではなく「推論フレームワーク」。GPT-4、Claude、Llamaなど任意のLLMの上で実装でき、新しい訓練は一切不要です。論文の実装も既存のGPT-4を使っており、コードはhttps://github.com/princeton-nlp/tree-of-thought-llmで公開されています。
誤解2: 「ToTは常にCoTより優れている」
なぜそう誤解されるのか: Game of 24での4%→74%という劇的改善が広く引用され、万能薬のように思われてしまう。論文の他の実験結果(Creative Writing、Crosswords)でも改善が出たため、適用範囲が広いと誤解されがちです。理由は鮮烈な数字のインパクトにあります。
正しい理解: ToTは「探索が有効な問題」でだけ強い。単純な質問応答、要約、翻訳などのタスクではCoTやそもそもプロンプト不要のzero-shotで十分な精度が得られます。ToTのコストとレイテンシ増は、それに見合う問題でだけ正当化されます。
誤解3: 「ToTは推論モデル(o1/o3)と同じ」
なぜそう誤解されるのか: 両者とも「LLMに考えさせる」点で似ているため、概念的に混同されがち。実際はメカニズムが大きく異なるという背景があります。
正しい理解: ToTは「外部コードでツリー探索する」フレームワークであり、LLMは思考生成と評価に使われる部品。一方OpenAI o1/o3は「強化学習で内部的に長く考えるよう訓練されたモデル」そのもの。前者はオーケストレーション、後者はモデル自体です。実装場所が違うことを覚えておきましょう。
実務での活用シーン
- パズル・ゲームAI: Game of 24、数独、論理パズルなど。
- 創作支援: 物語のプロット展開を複数試して評価。
- コード生成・リファクタ: 複数の実装案を生成して最適なものを選ぶ。
- 計画立案: 旅行計画、プロジェクトスケジュールなど複数経路の比較。
- 科学的仮説生成: 候補仮説を木で展開し、有望なものを深く検証。
Tree of Thoughtsに関するよくある質問(FAQ)
Q1. Tree of Thoughtsはどの論文で発表されましたか?
arXiv:2305.10601「Tree of Thoughts: Deliberate Problem Solving with Large Language Models」(Yao et al., NeurIPS 2023)です。Princeton大学とGoogleの研究者による共著で、Princeton-NLPがGitHubでコード公開しています。
Q2. Tree of Thoughtsの代表的な実績は?
論文ではGame of 24でGPT-4 + Chain of Thoughtの4%正答率を、Tree of Thoughtsで74%まで引き上げたことが示されています。Crosswordsでも文字単位の正答率が16%から60%に向上しました。
Q3. ToTを実装するにはGPT-4が必要ですか?
いいえ、任意のLLMで実装できます。論文ではGPT-4を使いましたが、Claude、Gemini、Llama、ローカルLLMなどでも適用可能です。ただし思考評価の精度に依存するため、能力の低いLLMでは効果が限定的です。
Q4. ToTのコストはどれくらい増えますか?
CoTの数十倍〜100倍程度のAPI呼び出しが必要になることがあります。深さ3、分岐5、評価1回の単純なツリーでも30回以上の呼び出しが発生します。本番運用ではビームサーチで枝を絞ることが定石です。
Q5. ToTとReActの違いは?
ReActはツール使用と推論を交互に行うエージェント設計で、外部世界との相互作用が中心です。ToTは内部の思考空間を木で探索する手法で、外部ツールは必須ではありません。両者は補完的に使えます。
まとめ
- Tree of ThoughtsはYao et al.が2023年にNeurIPSで発表したLLM推論フレームワーク。
- Chain of Thoughtを拡張し、複数経路を木構造で探索する。
- Game of 24でGPT-4 + CoTの4%を74%まで引き上げた実績がある。
- 4つの構成要素: 思考分解、思考生成器、状態評価器、探索アルゴリズム。
- 探索戦略はBFS/DFSから問題に応じて選ぶことが重要です。
- API呼び出し数とレイテンシが大幅に増えるため、ビームサーチ等での枝刈りが必須です。
- 新しいモデルではなく、既存LLM上のオーケストレーション層として動作することを覚えておきましょう。
参考文献・出典
📚 参考文献・出典
- ・Yao et al.「Tree of Thoughts: Deliberate Problem Solving with Large Language Models」 https://arxiv.org/abs/2305.10601
- ・Princeton-NLP「tree-of-thought-llm」 https://github.com/princeton-nlp/tree-of-thought-llm
- ・NeurIPS 2023 Proceedings「Tree of Thoughts」 https://proceedings.neurips.cc/paper_files/paper/2023/file/271db9922b8d1f4dd7aaef84ed5ac703-Paper-Conference.pdf
- ・Prompt Engineering Guide「Tree of Thoughts (ToT)」 https://www.promptingguide.ai/techniques/tot
Read this article in English:
What Is Tree of Thoughts? A Complete Guide to the LLM Reasoning Framework That B →








































コメントを残す