大規模言語モデル(LLM)の推論効率を向上させる新しい手法が次々と登場しています。本記事では、2025年2月に発表された2つの手法、「Chain of Draft (CoD)」と「Atom of Thoughts (AoT)」について解説します。これらの手法は、LLMの推論能力を損なうことなく、トークン消費量の削減やより複雑な問題解決を可能にするアプローチです。
はじめに
大規模言語モデル(LLM)の性能が向上するにつれて、複雑な推論タスクを解決する能力も飛躍的に高まっています。その中で、Chain-of-Thought(CoT)プロンプティングのような手法が注目されてきました。CoTは詳細なステップバイステップの思考過程を言語化することで、複雑なタスクの解決精度を向上させます。
しかし、この詳細な思考過程の生成には大量のトークンが必要となり、コストと計算時間の両面で課題がありました。また、推論の規模が大きくなるほど、蓄積された履歴情報が効果的な推論を妨げる可能性もあります。
この記事では、これらの課題を解決するための新しいアプローチである「Chain of Draft (CoD)」と「Atom of Thoughts (AoT)」について解説します。
Chain of Draft (CoD):より少ないトークンでより速く考える
CoD とは?
Chain of Draft(CoD)は、人間の認知プロセスにヒントを得た新しいパラダイムです。論文「Chain of Draft: Thinking Faster by Writing Less」によると、人間は複雑な問題を解く際、詳細な思考過程をすべて言語化するのではなく、重要な情報だけを簡潔にメモするような方法をとります。CoDはこの人間の自然な思考プロセスを模倣し、LLMに最小限でありながら情報量の豊富な中間推論出力を生成させる手法です。
CoDの動作原理
CoDの基本的な考え方は次のとおりです:
- タスクを解決するために必要な核心的な洞察だけを簡潔に表現する
- 冗長な説明や不要な詳細を省略する
- 最終的な解答に至るまでの重要なポイントのみを記録する
これにより、CoTと同等以上の精度を維持しながら、使用するトークン数を大幅に削減することができます。論文の実験結果によれば、CoDはCoTと比較してわずか7.6%のトークンで同等の精度を達成できることが示されています。つまり、トークン使用量を最大92.4%削減できる可能性があるのです。
実装例
論文では以下のような例が示されています。簡単な算数の問題を考えてみましょう:
問題: ジェイソンは20個のキャンディを持っていました。彼はデニーにいくつかのキャンディをあげました。今、ジェイソンは12個のキャンディを持っています。ジェイソンはデニーに何個のキャンディをあげましたか?
Standard(標準的な回答):
8
CoT(Chain-of-Thought):
ステップバイステップで考えましょう:
1. 最初、ジェイソンは20個のキャンディを持っていました。
2. デニーにいくつかあげた後、ジェイソンは12個のキャンディを持っています。
3. ジェイソンがデニーにあげたキャンディの数を見つけるには、初めの数から残りの数を引く必要があります。
4. 簡単な引き算を設定できます:
初めのキャンディの数 - 残りのキャンディの数 = デニーにあげたキャンディの数
5. 数字を入れると:20 - 12 = デニーにあげたキャンディの数
6. 引き算を解くと:20 - 12 = 8
したがって、ジェイソンはデニーに8個のキャンディをあげました。
####
8個のキャンディ
CoD(Chain-of-Draft):
20 - x = 12; x = 20 - 12 = 8. #### 8
CoDでは、問題解決に必要な計算だけを簡潔に記述し、余分な説明を省いています。これにより、トークン数を大幅に削減しながらも、正しい答えに到達できています。この例からわかるように、CoDは詳細な文脈やストーリーを省略し、純粋に数学的な表現だけに集中することで効率化を図っています。
Atom of Thoughts (AoT):マルコフ過程に基づく効率的な推論
AoT とは?
Atom of Thoughts(AoT)は、論文「Atom of Thoughts for Markov LLM Test-Time Scaling」で提案された手法で、複雑な推論過程をマルコフ過程として扱います。マルコフ過程とは、過去の履歴に依存せず、現在の状態だけに基づいて次の状態に進行するプロセスです。
論文によると、既存のテスト時スケーリング手法は推論過程で膨大な履歴情報を蓄積し続ける必要があり、これが計算リソースの無駄遣いになるだけでなく、効果的な推論を妨げる可能性があります。AoTは、複雑な問題を自己完結的で検証可能な「原子的な問題(Atomic Question)」に分解し、それらを依存関係に基づいて解決していくアプローチを提案しています。
AoTの動作原理
AoTの基本的なプロセスは次のとおりです:
- 分解(Decomposition): 問題を依存関係を持つ部分問題(原子的質問)の有向非巡回グラフ(DAG)に分解する。このDAG構造は各部分問題間の依存関係を明示的に表します。
- 収縮(Contraction): 分解された部分問題を解決し、その結果を統合して新たな原子的質問の状態を形成する。独立した部分問題は解決済みの条件として扱い、依存関係のある部分問題は次の状態に統合します。
- 反復: この分解・収縮のプロセスを、直接解ける原子的質問に到達するまで繰り返す。
このプロセスにより、LLMは各ステップで膨大な履歴情報を保持する必要がなくなり、より効率的に推論を行うことができます。論文では、AoTはすべての計算リソースを現在の原子的な問題状態に直接関連する推論に集中させることができると述べられています。また、AoTは既存のテスト時スケーリング手法と組み合わせることも可能で、プラグインとして推論能力を向上させることができます。
実装例
論文では三角形に関する幾何学的問題が例として示されています。以下はAoTのアプローチを示す簡略化した例です:
問題: 定数b > 10が与えられたとき、AB = 10、AC = b、sinB = 3/5を満たす三角形ABCが2つ存在します。これら2つの三角形における辺BCの長さの正の差を求めなさい。
AoT(マルコフプロセス):
状態Q0(初期問題):
定数b > 10が与えられたとき、AB = 10、AC = b、sinB = 3/5を満たす三角形ABCが2つ存在します。これら2つの三角形における辺BCの長さの正の差を求めなさい。
分解段階:
- q0,1: AB = 10 という条件について確認する
- q0,2: AC = b > 10 という条件について確認する
- q0,3: sinB = 3/5 が与えられたとき、cosB を求める
- q0,4: 三角形ABCの辺BCの長さを求める方程式を立てる
- q0,5: 2つの三角形における辺BCの長さの差を求める
収縮段階:
上記の部分問題から、特にq0,3(sinB = 3/5からcosB = ±4/5を導く)などの独立した部分問題を解決し、それを既知の条件として扱います。
状態Q1(収縮後の新しい問題):
AB = 10、AC = b > 10、sinB = 3/5、cosB = ±4/5をそれぞれ満たす2つの三角形ABCにおいて、辺BCの長さの正の差を求めなさい。
状態Q2(さらに収縮後):
b^2 = a1^2 - 16a1 + 100 および b^2 = a2^2 + 16a2 + 100 が与えられたとき、a1と a2の正の差を求めなさい。(ここでa1,a2はそれぞれ辺BCの長さ)
最終解答:
a1 - a2 = 16
この例では、各状態がマルコフ特性を持ち、前の状態の履歴情報に依存せず、現在の状態だけに基づいて推論が進行しています。各ステップで問題が単純化され、最終的には代数的に解けるシンプルな方程式に到達します。
CoDとAoTの比較
Chain of Draft (CoD) | Atom of Thoughts (AoT) | |
---|---|---|
主な目的 | トークン消費量の削減と推論速度の向上 | 複雑な問題の効率的な解決と推論能力の向上 |
アプローチ | 簡潔な中間思考を生成 | 問題を原子的サブ問題に分解して解決 |
メリット | トークン使用量の大幅削減(最大92.4%減) | 複雑な推論タスクにおける精度向上 |
適した用途 | シンプルな推論タスク、コスト効率が重要な場面 | 複雑な多段階推論、事実検証が必要なタスク |
制限 | ゼロショット設定や小型モデルでは効果が限定的 | 分解段階での失敗がその後の推論全体に影響する |
実際のベンチマーク結果
Chain of Draft (CoD)のパフォーマンス
論文によると、CoDは様々な推論タスクにおいて、CoTと同等以上の精度を維持しながら、トークン使用量を大幅に削減することに成功しています。
- GSM8K(算術推論タスク)では、GPT-4oとClaude 3.5 Sonnetの両方で、CoTの約95%の精度を維持しながら、トークン使用量を約80%削減、レイテンシも大幅に削減
- 日付理解タスクでは、特にClaude 3.5 Sonnetにおいて、CoTよりも高い精度(89.7% vs 87.0%)を達成しつつ、トークン使用量を82%削減
- スポーツ理解タスクでは、Claude 3.5 Sonnetの場合、CoTよりも高い精度(97.3% vs 93.2%)を達成しながら、トークン使用量を92.4%削減
- コインフリップタスク(シンボリック推論)では、両モデルで100%の精度を維持しながら、トークン使用量を68%〜86%削減
これらの結果は、API使用コストの削減と処理速度の向上につながる重要な成果です。
Atom of Thoughts (AoT)のパフォーマンス
論文によると、AoTは6つのベンチマークタスク(MATH、GSM8K、BBH、MMLU-CF、HotpotQA、LongBench)で評価され、スタンドアロンのフレームワークとしても、既存手法のプラグイン強化としても効果を発揮しています。
- HotpotQAにおいて、gpt-4o-miniにAoTを適用した場合、F1スコアが80.6%に達し、AFlowを7.1%上回り、o3-miniを3.4%、DeepSeek-R1を10.6%上回る結果
- MATH(数学問題)において、AoT単体で83.6%の精度を達成し、AFlowの83.0%を上回る
- GSM8K(算術推論)において、AoT単体で95.0%の精度を達成し、AFlowの93.5%を上回る
- LongBench(長文理解)において、AoTは68.5%のF1スコアを達成し、AFlowを7.5%上回る結果
また、論文ではAoTをo3-miniと組み合わせた場合、HotpotQAでF1スコアが81.4%、LongBenchで63.3%に達し、すべての指標で最高のパフォーマンスを達成したと報告されています。
実践:これらの手法を自分のプロジェクトに活用するには
Chain of Draftの実装ステップ
論文で紹介されているCoDのシステムプロンプトは以下のようなものです:
- プロンプトの設計:LLMに簡潔な中間思考を生成するよう指示する
system_prompt = """
Think step by step, but only keep a minimum draft for each thinking step, with 5 words at most.
Return the answer at the end of the response after a separator ####.
"""
これは「ステップバイステップで考えるが、各思考ステップでは5語以内の最小限のドラフトだけを保持し、最後に####で区切って答えを返す」という指示です。
実際のユースケースでは、以下のようなプロンプトを使用することが考えられます:
prompt = f"""
{system_prompt}
問題: {problem}
解答:
"""
論文によると、フューショットの例を含める場合は、各例についてCoDスタイルの簡潔な推論ステップを手動で作成することが推奨されています。これにより、モデルは短い思考ステップを生成するパターンを学習できます。
また、論文では以下の制限事項が指摘されています:
- ゼロショット設定ではCoDの効果が限定的
- Qwen2.5 1.5B/3Bなどの小型モデルでは、CoTと比較して精度低下が大きくなる傾向がある
Atom of Thoughtsの実装ステップ
論文に基づいたAoTの実装には以下のステップが含まれます:
- 分解(Decomposition)のプロンプト:
decompose_prompt = """
あなたは正確な問題分解エキスパートです。与えられた問題を解決するため、依存関係を持つ有向非巡回グラフ(DAG)に分解してください。
問題: {question}
以下の形式でJSONレスポンスを提供してください:
{
"thought": "あなたの思考プロセスをここに記述",
"subquestions": [
{"description": "サブ問題1の説明",
"answer": "この部分問題の回答",
"depend": [依存する部分問題のインデックス]}
]
}
"""
- 依存関係グラフのアノテーション:
論文のアプローチでは、分解された部分問題の間の依存関係を特定し、それらをDAG構造としてアノテーションします。これは通常、以下のような形式で行われます:
# 依存関係ラベリングのプロンプト
label_prompt = f"""
以下の部分問題において、それぞれが他のどの部分問題に依存しているかを特定してください。
インデックス0から始まる部分問題リストを考慮してください。
以下のJSON形式でレスポンスを提供してください:
{{
"thought": "あなたの思考プロセスをここに記述",
"subquestions": [
{{"description": "{sub_q}", "answer": "<この部分問題の回答>", "depend": [<依存する部分問題のインデックス>]}}
]
}}
"""
- 収縮(Contraction)のプロンプト:
収縮段階では、独立した部分問題と依存関係のある部分問題を区別し、新しい「原子的」な問題を構築します。
contract_prompt = """
あなたは問題最適化エキスパートです。
元の問題と、その分解結果、および独立部分問題と依存部分問題のリストが与えられています。
元の問題: {question}
分解結果: {response}
独立部分問題: {independent}
依存部分問題: {dependent}
独立部分問題の結果と依存部分問題を考慮して、最適化された単一の問題を作成してください。
この最適化された問題は以下の条件を満たす必要があります:
1. 同等性: 最適化された問題の答えは元の問題の答えと一致すること
2. 効率性: 最適化された問題は元の問題よりシンプルで、少ない推論ステップで明確な
推論プロセスを必要とすること(これは解決済みの部分問題が最適化された問題では
既知の条件となるか、不正確な探索として除外されるため)
自由に推論してかまいませんが、最適化された問題を <question></question> タグで囲んで提示してください
"""
論文によると、AoTはアルゴリズム1に従って実行されます:
- 初期問題Q0から始める
- 分解フェーズで依存関係DAGを生成
- DAGから独立部分問題と依存部分問題を特定
- 収縮フェーズで新しい「原子的」な問題Qi+1を生成
- 最大深さDに達するか、直接解ける問題になるまで繰り返す
- 最終的な問題を解いて答えを得る
AoTの制限事項として、論文では以下の点が指摘されています:
- 初期のDAG分解が適切に部分問題間の並列関係をモデル化できない場合や、不必要な依存関係を捉えてしまった場合、後続の収縮や推論プロセスに悪影響を与える可能性がある
- 現在のフレームワークには、不適切な分解を検出して修正するためのリフレクションメカニズムが不足している
まとめ
Chain of Draft (CoD)とAtom of Thoughts (AoT)は、LLMの推論能力を向上させるための革新的なアプローチを提供しています。両手法を詳しく検討すると、それぞれに以下のような特徴があります:
Chain of Draft (CoD)の主な特徴と利点
-
効率性: 論文の実験結果によれば、CoDはトークン使用量を最大92.4%削減しながら、CoTと同等以上の精度を達成できます。スポーツ理解タスクでは特に顕著で、Claude 3.5 Sonnetの場合、トークン使用量を92.4%削減しながら精度を向上させました。
-
レイテンシの削減: 論文では、トークン生成の削減により、推論時間(レイテンシ)も大幅に削減されることが示されています。GPT-4oでは最大76.2%、Claude 3.5 Sonnetでは最大48.4%のレイテンシ削減を実現しています。
-
コスト効率: トークン使用量の削減は、API呼び出しのコスト削減に直結します。特に大規模なLLMデプロイメントやコスト制約のある環境で有効です。
-
制限: ゼロショット設定では効果が限定的であり、小型モデル(3B以下のパラメータを持つモデル)では性能差がより顕著になる傾向があります。これは、CoD形式のデータがモデルの訓練中にあまり含まれていないことが原因と考えられます。
Atom of Thoughts (AoT)の主な特徴と利点
-
効率的な計算リソース活用: AoTはマルコフ過程の特性を活かし、過去の履歴情報に依存せず、現在の「原子的」な問題状態だけに焦点を当てることで、計算リソースをより効率的に使用します。
-
複雑問題の構造化解決: 問題を有向非巡回グラフ(DAG)構造に分解することで、複雑な依存関係を明示的に捉え、より効果的に問題を簡略化していきます。
-
プラグイン互換性: 既存のテスト時スケーリング手法と統合可能で、FoT(Forest of Thoughts)などとの組み合わせでより高い効率と精度を実現できます。
-
性能向上: 特に複雑な多段階推論を必要とするタスクで高い効果を発揮し、HotpotQAなどのベンチマークで最先端の推論モデルを上回る結果を達成しています。
-
制限: 分解フェーズでの失敗が後続の推論プロセス全体に悪影響を与える可能性があり、不適切な分解を検出・修正するためのリフレクションメカニズムが不足しています。
実用的なアドバイス
両手法を自分のプロジェクトに活用する際には、以下の点を考慮すると良いでしょう:
-
タスクの特性に合わせた選択: シンプルな推論タスクやコスト効率が重要な場合はCoDを、複雑な多段階推論が必要な場合はAoTがよさそうです。
-
モデルサイズの考慮: CoDは大型モデル(Claude 3.5 SonnetやGPT-4oなど)で特に効果を発揮します。小型モデルでは、従来のCoTの方が良い結果を出す可能性があります。
-
フューショット学習の活用: CoDを使用する場合は、簡潔な中間思考の例をいくつか提供することで、モデルが必要なパターンを学習しやすくなります。
-
エラー検出と修正: AoTを使用する場合は、分解フェーズの質をチェックするメカニズムを組み込むことを検討しましょう。不適切な分解が行われた場合に検出し、必要に応じて修正するステップを加えることが有効です。
-
両手法の組み合わせ: 複雑なワークフローでは、最初にAoTで問題を構造化し、各部分問題の解決にCoDを使用するなど、両方の手法を組み合わせることで、さらなる効率化と精度向上が期待できます。
LLMの分野は急速に発展しており、これらの手法も今後さらに洗練されていくことでしょう。特にモデルの訓練データにCoDやAoTのパターンを組み込むことで、それぞれの制限を克服し、より効率的かつ効果的な推論が可能になることが期待されます。