ChatGPTが提案したコードをそのまま使ったら、なぜか出力からCoT(Chain of Thought)が消えてしまった——。
本記事は、東京大学 松尾・岩澤研究室 LLM開発コンペ2025 において、Team K.A.T.Oの一員として参加した私が、RLT実装中に直面した「フォーマットミスによるCoT消失事件」と、そこから得た学びを共有するものです。
形式は単なる統一ルールではなく、説明可能性・評価容易性・再現性 を担保するための基盤でした。
初心者の視点から具体的な失敗例と考察を紹介します。
本プロジェクトは、国⽴研究開発法⼈新エネルギー‧産業技術総合開発機構(以下「NEDO」)の「⽇本語版医療特化型LLMの社会実装に向けた安全性検証‧実証」における基盤モデルの開発プロジェクトの⼀環として⾏われます。
RLT実装におけるフォーマットの役割
Sakana AIのRLT(Reinforcement Learning from Teacher)は、教師モデルの思考過程(reasoning traces)を活用して、生徒モデルを強化学習的に最適化する手法 です。
Team K.A.T.Oでは「Sakana AI RLTをベースに進める」という方針があったため、形式は bespoke形式 を採用していました。
しかし、私は当初ChatGPTに提案されたサンプルコードを鵜呑みにし、gms8k形式で実装してしまったのです。
フォーマット比較:bespoke vs gms8k
bespoke形式(正しい形式)
思考過程を 明示的に分離 し、最終回答とセットで保持します。
{
"question": "x^2 - 5x + 6 = 0 を解け",
"thought": "二次方程式の解の公式を使う。x = [5 ± sqrt(25 - 24)] / 2 = (5 ± 1) / 2。",
"answer": "x=2, 3"
}
gms8k形式(誤って使った形式)
最終回答だけを保持。思考過程は残らない。
{
"question": "x^2 - 5x + 6 = 0 を解け",
"answer": "x=2, 3"
}
この差が、「出力からCoTが消える」原因でした。
実際のつまずきと気づき
-
なぜgms8k形式を選んだか
ChatGPTが提案したコードをそのまま使ったため。深く考えずに「動いたから良し」としてしまった。 -
なぜbespoke形式が必要か
チーム方針として「Sakana AI RLTをベースにする」ことが決まっていたため。自然に形式もbespokeが必須となっていた。 -
気づいたきっかけ
リーダーから「出力がgms8k形式になっている」と指摘され、初めて気づいた。
実際に出力JSONを開いて確認していなかったことが最大の原因。
形式ミスより怖いのは“静かな失敗”
初心者として特に感じたのは、エラーが出ないことの怖さ でした。
- rank設定エラー → すぐに落ちるので原因追跡ができる
- フォーマットミス → エラーは出ない、でも思考過程が静かに消えている
「動いているように見えるのに正しく学習されていない」状況は、エラーよりも発見が遅く、成果に直結する致命傷になりかねません。
CoTフォーマットいろいろ
今回のような「CoTを保持する形式」はbespoke以外にも存在します。
| 形式 | 特徴 | 例 |
|---|---|---|
| bespoke | 思考過程を独立したフィールドに保持 | { "thought": "...", "answer": "..." } |
| OpenAI style | 思考過程を回答文中に埋め込む | "思考過程: ... 最終回答: ..." |
| ComplexQA style | 推論ステップを列挙して明示的に保存 | "steps": ["定義確認", "式変形", "結論"] |
| Scratchpad | 長い推論過程を「ノート」的に保持し、最終回答を別で出す | "scratchpad": "途中計算..." |
ポイント:
- bespokeは「構造化」
- OpenAI styleは「文章内に埋め込み」
- ComplexQAは「ステップ列挙」
- Scratchpadは「長文対応」
タスクや目的によって最適なフォーマットは変わります。
改善できたポイント(再発防止の工夫)
今回の失敗は、いずれも「少しの確認や仕組み化」で防げたものだったと振り返っています。
1. 出力JSONを確認していなかった
実際には、学習前に出力JSONを一度も開いていませんでした。
もし出力をして形式をチェックしていれば、gms8k形式になっていることにすぐ気づけたはずです。
2. 「なぜこの形式か」を考えていなかった
ChatGPTが出したコードをそのまま使い、思想を理解しないまま動かしていました。
もし「このコードはRLTのどのSTEPを実現しているのか?」を考えていれば、チーム方針と形式が噛み合っていないことに早い段階で気づけたはずです。
3. ログを眺めるだけで満足していた
学習ログにエラーが出ていなかったので「進んでいる」と思い込んでいました。
しかし reasoning が出力されているかを実際に確認すれば、
CoTが消えていることにもっと早く気づけたはずです。
学び
- 形式を守ることは形式統一ではなく、説明可能性と評価容易性の担保
- 出力を必ず「中身を確認する」ことが再現性の第一歩
- エラーより怖いのは“静かな失敗”
初心者視点ではありますが、これらの気づきが同じように取り組む方の助けになれば幸いです。
参考
-
Sakana AI: Reinforcement Learning from Teacher (RLT) – Official Blog
https://sakana.ai/rlt -
Cetin, E. et al. (2025): Reinforcement Learning Teachers of Test-Time Scaling
https://arxiv.org/abs/2506.08388 -
Wei, J. et al. (2022): Chain-of-Thought Prompting Elicits Reasoning in Large Language Models
https://arxiv.org/abs/2201.11903 -
Wang, X. et al. (2022): Self-Consistency Improves Chain of Thought Reasoning in Language Models
https://arxiv.org/abs/2203.11171 -
Hugging Face Datasets: Bespoke-Stratos-17k
https://huggingface.co/datasets/bespokelabs/Bespoke-Stratos-17k -
Hugging Face Datasets: GSM8K (Grade School Math 8K)
https://huggingface.co/datasets/openai/gsm8k
