Chain of Draft ってどんなもの？ CoT からおさらいしてみた


こんにちは。秋田県のIT企業、北日本コンピューターサービスのR&Dチーム「AUL（アウル）」に所属しています。トラフクロウです。

今回は、2025年の2月末に投稿された **Chain of Draft**（CoD, 草案の連鎖）についての論文 [Chain of Draft: Thinking Faster by Writing Less](https://arxiv.org/abs/2502.18600) をざっくり解説したいと思います。

CoD は **Chain of Thought**（CoT, 思考の連鎖）の改良版として提案されているようです。

CoT という言葉は僕も以前から聞いたことがありましたが、内容についてはふわふわしていました。「なんか、生成AIが自問自答しながら深く考える感じ？」という程度の感覚です（今思えば、浅いにもほどがある）。

CoD の論文を読む中で、僕自身の CoT の理解が適当すぎたことにも気がついたので、アウトプットも兼ねて内容をまとめてみたいと思います。

## この記事ではチェイン・オブ・ドラフト（CoD）とは何かを解説します。

今回の記事では チェイン・オブ・ソート（CoT）の派生として提案された CoD について解説します。

以下、今回のお品書きです。

* そもそも CoT ってなに？
* CoD の概要
* CoD の性能
* まとめ

## CoT とは、生成AIに考える過程を出力しながら答えてもらう方法のこと

CoT とは2023年に Google の研究チームが出した論文「[Chain-of-Thought Prompting Elicits Reasoning in Large Language Models](https://arxiv.org/abs/2201.11903)」の中で紹介された手法です。

### 生成AIは大きいだけじゃ賢くない

傾向として、大規模言語モデル（LLM）は、次の条件を満たすときに賢いとされます（いろんな問題を解くことができる）。

**1. パラメーター数が多い**
**2. 学習しているデータ数が多い**

少々乱暴な物言いをすると、**LLM はデカければデカいほどいい（傾向にある）** ということです。

「だったら、がんばって大きなモデルをつくればいいじゃん」となりそうですが、そうは問屋がおろしません。特に、次のタスクにおいては、モデルの大きさと正答率が必ずしも比例しないことが知られています。

**・計算推論（小学生レベルの算数でも LLM には難しい）**
**・一般常識による推論**
**・特定のルールに基づく推論**

**これらにシンプルな攻略方法を与えられないか？** という所から提案されたのが、思考の連鎖こと CoT です。

### 具体例を指示してAIの思考プロセスを可視化しよう（CoT）

計算問題のような複雑な問題を解くためのヒントとして、研究チームは　**計算問題のとある特性に注目** しています。それは、**計算の答えは前提条件から論理的（段階的）に導かれる** ということです。

:::note info
**段階的な推論の例：**
1. ジェーンのお母さんは、ジェーンから2本の花をもらい、現在10本持っています。
2. そのあと、お母さんはおじいちゃんに花を3本あげました。
3. このとき、お母さんは花を7本持っているはず！
4. 結論：ジェーンのお母さんは花を7本持っています。
:::

このような段階的な推論能力をお手軽に LLM に付与するために **Few-Shot 学習**（フューショット学習）を活用します。

**フューショット学習とは、LLM に指示を出すときに、問題と一緒に例題を与える手法** です。みなさんも受験勉強のときに、「本題の前に例題を解いてコツをつかむ」という勉強法をしていたのではないでしょうか。それと同じようなモノですね。

これら、段階的な推論とフューショット学習を、組み合わせた手法が CoT とよばれるものです。つまり **CoT とは、LLM に解き方の例を与えながら、段階的に回答を出力させる戦略** になります。

![chain_of_draft_CoT_prompt.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3958756/2eaacd29-3e16-4203-9da5-48ff6dbca8e3.png)
*[CoT の論文](https://arxiv.org/abs/2201.11903) より引用（Figure1）*

上の図は、通常のフューショットプロンプト（左）と、CoT のフューショットプロンプト（右）の例です。ハイライトで **色が付けられている部分が、思考の連鎖により段階的に考えている部分** になります。

解かせているのは小学校で習う算数の問題ですが、通常プロンプトの方は正解できていません。一方で、CoT プロンプトの方は正しい答えに到達できていることがわかります。

途中経過を表示することで、LLM 自身が直前の考えを確かめながら回答をすることができ、人間側も LLM がどういった経緯でその答えに至ったのかを確認できる Win-Win な手法と言えるでしょう。

## CoD とは、生成 AI に最小限のメモのみを与えて答えてもらう方法のこと

ここからは、草案の連鎖こと CoD を見ていきます。

上で紹介した CoT は汎用的かつ強力な戦略ですが、デメリットもあります。CoD では CoT の弱点を、人間の認知プロセスを模倣して克服することを目標にしています。

### CoTは無駄が多い（人間の方が賢い）

**CoT の欠点とはズバリ冗長性です。** 次の問題を考えてみましょう。

:::note info
**問題：**
ジェイソンは20個の飴を持っています。そのうちのいくつかをダニーにあげると、ジェイソンの手持ちの飴は12個になりました。ジェイソンはいくつの飴をダニーにあげたでしょうか？
:::

この問題を CoT で解くと次のようになります。

:::note info

**CoT での回答：**

1. まず、ジェイソンは20個の飴を持っているな。
2. そこからいくつかダニーにあげて、手持ちは12個になった。
3. ジェイソンがダニーにあげた飴の数を求めるには、最初の手持ちから残った飴の数を引けばいいよね。
4. 簡単な計算式を作ってみよう：
   最初に持っていた飴の数 - 最後に手元に残った飴の数 = ダニーにあげた飴の数
5. 具体的な数字を当てはめると：
   20 - 12 = ダニーにあげた飴の数
6. 実際に計算すると：
   20 -12 = 8
   つまり、ジェイソンは8個の飴をダニーにあげたんだ。
  
**答えは、8個です。**
:::

なっがいですね。人間だったら「うーん、8個！」となるところを6回のステップを経て計算しています。これが CoT の冗長性です。

CoT は LLM の思考の過程を文章で記述していきます。このときに、人名や、行動など **計算には直接関係ない情報を多分に含んでしまいます。** 

この冗長性は、なぜこう考えたのかを知る上では親切ですが、**アウトプットに必要なトークン（単語）の数や、推論を終えるまでの遅延時間を増大させてしまいます。**

### 重要な情報のみに注目させてAIに考えさせよう（CoD）

CoT と人間の問題の解き方の違いはどこにあるのでしょうか？

答えは、注目している情報量です。

人間が先ほどの計算問題を考える場合は、登場人物が誰で、何をしているという情報はあまり気にしません。注目すべきは飴の個数の増減であることを直感的に理解しているからです。

多少の違いはあるかもしれませんが、多くの人は上の問題を読んだとき次のイメージを持ったのではないでしょうか。

:::note info
**ダニーにあげた飴を求めるときのコアイメージ：**

ダニーに $x$ 個の飴をあげた：
$20 - x = 12$
$x = 8$

**うーん、8個！**
:::

このように、**人間は問題を解く際に必要最小限の重要な情報のみを草案として活用** します。これが、CoD（草案の連鎖）の基本アイデアです。

### 具体的な CoD プロンプトの書きかた

CoD も CoT と同様に、LLM へいつくつかの問題のサンプルを与え、段階的な推論を指示します。ただし、次の2点が CoT とは異なります。

1. 冗長性をなくした必要最小限の解き方をサンプルとして提示する
2. 答えを出すまでの途中経過を簡潔に書くように指示をする（多くても英単語5個分）

:::note info
**CoD プロンプトのイメージ：**

途中経過を出力しながら段階的に問題を考えてください。
ただし、思考の途中経過は最小限の出力を保つようにしてください。
具体的には、多くても英単語5個程度の文章にしてください。

問題の例：
Q：
ジェイソンは20個の飴を持っています。そのうちのいくつかをダニーにあげると、ジェイソンの手持ちの飴は12個になりました。ジェイソンはいくつの飴をダニーにあげたでしょうか？

A：
20 - x = 12;
x = 20 - 12 = 8
:::

プロンプトの中では、途中の推論の出力を最大で英単語5個に抑えるように指示を出しています。しかし、これはあくまでも文章量を少なくすることを強調することが目的であり、何がなんでも5個を超過してはいけないという制約ではないそうです。

:::note warn
論文の中で、明確な CoD のプロントを見つけることができなかったので、上のプロンプトイメージは僕の予想になります。
CoT の論文ではプロンプト内に8つほどの例題を記載していたようなので、CoD でも同等の数のサンプルを与えている可能性があります。
:::

## CoD を使えば入力出力を減らして高い精度が出せる

ここからは CoD の論文の中で示された結果を紹介し、CoDの有用性を確認したいと思います。

論文では、通常のプロンプト、CoT プロンプト、CoD プロンプトの精度を3つのタスクで比較しています。その中で **CoD は CoT と同等以上の精度を 7.6% のトークン消費で実現できる**　ことが記されています。

![chain_of_draft_CoD_while_result.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3958756/101e8b11-ad7f-41d0-b2cd-0ef42c1946ff.png)
*[CoD の論文](https://arxiv.org/abs/2502.18600) より引用（Figure1）*

上のグラフは、各種プロンプトでタスクを解いた際の正答率（上）と消費トークン数（下）です。横軸は解かせたタスクの種類で、「計算推論タスク（GSM8K）」、「一般常識による推論タスク（Dete, Sports）」、「特定のルールに基づく推論タスク（Coin Flip）」です。

CoD が CoTと同等の正答率を出しつつ、トークン消費が大幅に抑えられていることが確認できますね。

### 論文の実験結果を見てみよう

ここからは、CoD の性能をチェックする実験結果の詳細です。実験に使われたプロンプトと特徴は下記の3つです。

**通常プロンプト：**
・問題の解き方のサンプルを与える
・推論過程や説明は出力させず、答えのみを出力させる

**CoT プロンプト：**
・段階的に推論過程を出力させる
・問題の解き方のサンプルを与える

**CoD プロンプト：**
・段階的に推論過程を出力させる
・途中過程は簡潔に出力するように指示する（最大英単語5つ）
・問題の解き方のサンプルを与える

上記のプロンプトを、**OpenAI 社の GPT-4o** と **Anthopic 社の Claude 3.5 Sonnet** に入力して精度を比較しています。

#### 計算推論タスク

計算推論タスクは **GSM8K** というベンチマークテストで評価されています。

:::note info
**計算推論タスクの問題のイメージ：**
ロジャーはテニスボールを5つ持っています。追加でテニスボールの缶を2つ買いました。テニス缶にはそれぞれ3つのボールが入っています。ロジャーが持っているテニスボールは全部でいくつでしょうか？
:::

まずは、通常プロンプトの場合です。このとき GPT-4o と Claude 3.5 Sonnet のそれぞれの**正答率は 54.3% と 64.6%** でした。

続いて CoT プロンプトの場合は、**両モデルで 95% 以上と高い精度**を記録しています。しかし、**回答生成に使用したトークン数は平均で200個** を超えてしまいました。

対して、CoD プロンプトは**正答率 91% 以上**を達成し、CoTと比較して **出力に必要なトークン数を平均 80% 削減**しました。

また、GPT-4o と Claude 3.5 Sonnet のそれぞれで、**推論遅延時間を平均 76.2% と 48.4% 削減**できたそうです。

![chain_of_draft_math_result.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3958756/7590d801-66f6-425e-8893-bd27ddd2be05.png)
*[CoD の論文](https://arxiv.org/abs/2502.18600) より引用（Table1）*

#### 一般常識による推論タスク

一般常識による推論タスクは **GIG-bench** というベンチマークテストの、日付理解問題とスポーツ理解問題の2種類で評価されています。
正しい評価を行うため、各システムプロンプト（通常、CoT、CoD）は計算推論タスクと同じものが使われています。

:::note info
**日付理解問題のイメージ：**
1943年6月1日に予定されていたコンサートがありました。しかし、コンサートが延期になってしまい、1日後である今日の開催に変更となりました。今日から10日前の日付は何年の何月何日でしょうか？

**スポーツ理解問題のイメージ：**
次の文章は妥当でしょうか？
「ジョアン・モウティーニョはNFCチャンピオンシップでスクリーンパスをキャッチした。」
:::

このテストでは、**CoD はいくつかの問題で CoT を上回る正答率を達成**し、やはり、消費トークン数と推論遅延時間の削減に成功しました。

特にスポーツ理解問題では、Claude 3.5 Sonnet で CoD プロンプティングを行った際に、**出力に必要なトークン数を平均 189.4 から 14.3 まで少なくできた** そうです。

![chain_of_draft_common_result_date.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3958756/23d2b292-f5af-4d5a-9627-da9b6a304464.png)
*[CoD の論文](https://arxiv.org/abs/2502.18600) より引用（日付理解：Table2）*

![chain_of_draft_common_result_sports.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3958756/6739d42e-332b-491b-ad9d-88d324be988d.png)
*[CoD の論文](https://arxiv.org/abs/2502.18600) より引用（スポーツ理解：Table3）*

#### 特定のルールに基づく推論タスク

特定のルールに基づく推論タスクでは [CoT の論文](https://arxiv.org/abs/2201.11903)で紹介されたコインの裏表当て問題を使って性能を評価します。
もとの論文で使われていたデータセットと同じものが公開されていなかったとのことで、NameDataset というデータセットからオリジナルの問題を模倣してテストを作成したそうです。

:::note info
**コインの裏表当て問題のイメージ：**
コインが表向きに置かれています。
ロビンが来てそのコインを裏返しました。その後、ペギーが来て同じコインを裏返しました。その後、グラントも来て同じコインを裏返しました。その後でバネッサが来ましたが、彼女ははそのコインを裏返しませんでした。
今、コインは表向きでしょうか？
:::

このテストでは、GPT-4o も Claude 3.5 Sonnet も通常のプロンプトの時点で、それぞれ、73.2% と 85.2% の正答率を出していました（頭いい！）。

さらに、なんと、CoT と CoD に至っては**両モデルで 100% の正答率を記録**しています。

今回も、CoT と比較して CoD は消費トークン量の削減に成功しています。具体的には、**GPT-4o で 68%**、 **Claude 3.5 Sonnet で 86%** のトークン量の削減に成功しました。

![chain_of_draft_coin_flip_result.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3958756/338e38e0-dbb4-495d-83a1-0096b157edb0.png)
*[CoD の論文](https://arxiv.org/abs/2502.18600) より引用（Table4）*

## 制限を加えると CoD は弱い

ここまで、CoD は CoT よりも優れた結果を出せるということを紹介してきました。

しかし、**一定の条件下では、その精度が著しく低下してしまう** という結果も出ているようです。

### プロンプトで回答例を与えないと性能が低くなる

論文内では、LLM に回答の例を与えない **ゼロショットプロンプティング** の実験結果も紹介されています。この場合、CoD の精度がフューショットの場合よりも下がってしまうことが確認されたそうです。

特に、Cloude 3.5 sonnet については、通常プロントと比べ、わずか **3.6% しか正答率を伸ばせませんでした。** また、出力トークン数もフューショットの場合と比べて多くなってしまったようです。

この性能低下の原因は、**LLM の学習時点で CoD 形式の学習データが少ないせい** であると予想されています。

![chain_of_draft_zeroshot_result.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3958756/dd0ba6dd-e2b9-4522-8770-fa4deea544aa.png)
*[CoD の論文](https://arxiv.org/abs/2502.18600) より引用（Table5）*

### 小さいモデルでの CoD は精度が低い

LLM だけでなく、パラメータ数が3B（30億）以下の SLM（small language model、小規模言語モデル）についても CoD の検証が行われています。

使用モデルは、指示に沿った出力を生成できるようにチューニングされた Qwen2.5（1.5B / 3B）と Llama 3.2 (3B)、そして、Zoom SLM (2.3B)です。

CoD の適用により、**出力トークン数をおさえる** ことと、**通常のプロンプトを上回る精度** が確認できました。しかし、**CoT と比較するとどのモデルも精度は劣ってしまう** ようです。

こちらも、CoD 形式のデータでファインチューニングを行うことで精度が改善するのではないかと予想されています。

![chain_of_draft_slm_result.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3958756/a551a4b6-07c7-442c-ae4f-9f77eaa04a84.png)
*[CoD の論文](https://arxiv.org/abs/2502.18600) より引用（Table6）*

## まとめ

**CoT：**
出力サンプルをあたえ、段階的な推論を指示する戦略。
LLM の推論能力を強化し回答に至るまでの過程を見ることができるが、出力が冗長で推論遅延が大きい。

**CoD：**
出力サンプルをあたえ、必要最小限の段階的な推論を指示する戦略。
CoT の冗長性を解消しつつ、同等以上の精度を出すことができる。

大規模なモデルでは CoD は CoT を上回る性能を見せるが、小規模なモデルや、プロンプトで例示をしない場合の性能は CoT の方が高い。

## 最後まで読んでいただきありがとうございました！

最後まで読み進めていただきありがとうございました。

恥ずかしながら、今回の記事を書くまで CoT というものを誤解していました。というのも今までは、「LLMが思考を深める」という印象から、「LLM の出力をさらに LLM に入力する」を何回か繰り返して段階的に回答を作るものが CoT だと思っていました（AIエージェントチックなやつなのかなーっと）。

そのため、CoT がプロンプトの書きかたに関する戦略だと知り、勝手にショックを受けていました。やはり論文を読むのは大事ですね。

CoT にしろ、CoD にしろプロンプトの書きかたで LLM の振る舞いは大きく変わってしまうみたいですね（条件付き確率がきいてくるのかな？）。今回は CoD の論文を読むだけになってしまったので、こんどは実際に LLM に CoD プロンプトを入れて動かしてみたいなと思いました。

例によって、貧弱な英語力で論文を解読していますので、間違い等あればご指摘いただけますとうれしいです。

## 参考文献

1. [Chain of Draft: Thinking Faster by Writing Less](https://arxiv.org/abs/2502.18600)
2. [Chain-of-Thought Prompting Elicits Reasoning in Large Language Models](https://arxiv.org/abs/2201.11903)