本記事は、コンペ参加者個人としての振り返りであり、所属機関・主催者を代表するものではありません。あくまで、私の経験や、一般的に抽象化した非同期開発の教訓として記載します。
この記事では、Humanity's Last Exam (HLE) に挑む中で行った「COT+コードデータ作成」の取り組みを紹介します。HLEは人類最後の試験と呼ばれる難問ベンチマークであり、既存の強力なモデルでも苦戦する問題が多く存在します。そのため、単なるデータ増加ではなく「苦手領域をどう補強するか」が重要なテーマとなりました。
この技術を紹介する理由
- 目的: 数学的なリーズニング能力、計算能力を強化し、難問に対して安定した推論を可能にすること
- 背景: HLEでは、通常の指示追従や常識問題よりも数学的・論理的推論の重要性が高い
- 学術的根拠: PAL, MathPrompter, Code-COT といった研究が示す通り、COT(思考プロセス)とコードを組み合わせることでモデルの正答率向上が期待できる
- 期待効果: 特にPAL論文で示されているように「計算間違いを減らす効果」が期待でき、HLEの数学分野対策に有効と考えた
今回試そうとした理由
- LLM2025コンペ予選では、スコアが思うように伸び課題が浮き彫りになった
- 特に問題数の多い「数学分野の弱さ」を補う必要があった
- 解けなかった問題をどう扱うかが決勝に向けた課題となり、「COT+コードデータ」の生成を試みた
- コード化により計算誤りを減らす研究事例(PALなど)に着想を得て、効果を期待して実装した
- もともとは「データを増やす目的」からスタートしたが、途中で「品質の良いデータを作る目的」へと方向性が変化した
データの種類と設計
元のモデルは非常に賢いため、すでに解けている問題については既存のチューニングを壊す恐れがあるため、モデルが解けない問題を見繕う必要がありました。
-
使用した元データセット:
team-suzuki/DPO_235B-Thinking_006_origin_1 -
ベースモデル: Qwen3-235B-A22B-Thinking-2507
-
生成方法: Qwen3-235B-A22B-Thinking-2507 を用いて同じ問題を4回推論させ、その結果からデータを構築
-
利用基準:
-
1/4, 2/4, 3/4 正解の問題のみを利用
- 0/4 → 全く解けない問題は学習させても迷走のリスクが高い
- 4/4 → すでに解けている問題は学習させる必要がない
-
分野はmathに限定(物理などは除外)
-
答えが数字のものだけを採用(数式回答や文字回答は除外)
-
このフィルタリングにより、生成前の時点で 約1500問 が候補に残りました。しかし母数をさらに増やすことは課題でした。その後、COT+コードデータを生成し、最終的に 505問 のデータが完成しました。
技術の概要
- COT(思考プロセス)をLLMで生成し、各問題に付与(COTがある場合は、Pythonコードだけ生成)
- Pythonコードのみ実行によって正誤を検証
- 「学習の余白」がある問題に限定してデータを強化
- 思考プロセス、pythonコードは別カラムで最終的に1つの思考プロセスとして統合
実験結果(OpenScience mathデータ)
- 生成データ件数: 500問(math、数値解答のみ)
- 方法: COT+コードを付与し、コード実行で正答を確認
- 結果: **485/500 正答(**生成されたpythonコードコードの実行結果と答えをマッチさせた)
単純なCOT付与だけではなく、コードによる裏付けが高い精度につながることを確認しました。
今回の位置づけ
-
最終提出モデルでは、DPOを行うことになり、このCOT+コード付きSFT用データは未使用
-
それでも、この技術には以下の可能性があります:
- デバッグ: モデルの誤りを人間が検証しやすくなる
- 自動評価: コード実行により正誤判定が容易
- 効率的学習: 難問データを少量でも効果的に利用可能
- 研究的意義: Code-COT系研究の実践的応用
まとめ
- HLEに向き合う中で「解けなかった問題をどう学習させるか」という課題が浮き彫りになった
- COT+コード付きデータは、今回の提出には未使用のため性能の向上の寄与は不明。どこかで試したい。
- データ量を増やすことにも活用できそう。
関連研究と期待効果(サマリ)
- Program-Aided Language Models (PAL): 推論の分解はLLM、計算はPython等の実行環境へ委譲する発想。文章→プログラム化により計算ミスを低減。
- Program-of-Thoughts (PoT): COTをコード化して実行することで、数値計算を確実化し、数学系ベンチマークでCOTより大幅改善の報告。
- MathPrompter: 複数の式やPython関数を生成して自己合意(合致)をとるアプローチ。回答の信頼度向上とともに算術系で高精度。
- Toolformer: LLMが自律的に外部ツール(計算機等)を呼ぶ学習。コード実行・計算器利用の有効性を示唆。
- Code as Policies: 自然言語→コード化により高精度な手続き制御を実現。コード表現が複雑な推論・操作系列の器となり得ることを示す。
期待効果(本取り組みへの示唆)
- 計算誤りの削減:COTをコードに落とし実行で検証することで、算術系のミスを大幅に抑制。
- 検証容易性:コードは実行可能なため、自動で正誤ラベル付けがしやすく、学習データ構築の効率が上がる。
- 弱点特化の強化:1/4〜3/4正解の“学習余白”がある問題に限定することで、少量でも実効的に性能改善を狙える。
- 破滅的忘却の緩和:全面的な再学習ではなく、難所に対する局所強化に留める設計が有効。
今後の活用
- DPO用の“失敗対”自動生成(コード判定で優劣対を作る)
- SFTとDPOのハイブリッド(コードで厳密ラベル→SFT、誤答ペア→DPO)
本プロジェクトは、国立研究開発法人新エネルギー・産業技術総合開発機構(以下「NEDO」)の「日本語版医療特化型LLMの社会実装に向けた安全性検証・実証」における基盤モデルの開発プロジェクトの一環として行われます。