Tree of Thoughts(ツリーオブソーツ)とは?読み方・LLM推論を木構造で深化させるプロンプト技法の仕組み・Chain of Thoughtとの違い・Game of 24での74%実績を完全解説

Tree of Thoughts アイキャッチ

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上のオーケストレーション層として動作することを覚えておきましょう。

参考文献・出典

📚 参考文献・出典

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA