0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

計算間違いを減らすpythonコード付きの思考プロセス生成について

Last updated at Posted at 2025-10-06

本記事は、コンペ参加者個人としての振り返りであり、所属機関・主催者を代表するものではありません。あくまで、私の経験や、一般的に抽象化した非同期開発の教訓として記載します。

東大松尾研 LLM開発プロジェクト2025 公式サイト

この記事では、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: 自然言語→コード化により高精度な手続き制御を実現。コード表現が複雑な推論・操作系列の器となり得ることを示す。

期待効果(本取り組みへの示唆)

  1. 計算誤りの削減:COTをコードに落とし実行で検証することで、算術系のミスを大幅に抑制。
  2. 検証容易性:コードは実行可能なため、自動で正誤ラベル付けがしやすく、学習データ構築の効率が上がる。
  3. 弱点特化の強化:1/4〜3/4正解の“学習余白”がある問題に限定することで、少量でも実効的に性能改善を狙える。
  4. 破滅的忘却の緩和:全面的な再学習ではなく、難所に対する局所強化に留める設計が有効。

今後の活用

  • DPO用の“失敗対”自動生成(コード判定で優劣対を作る)
  • SFTとDPOのハイブリッド(コードで厳密ラベル→SFT、誤答ペア→DPO)

本プロジェクトは、国立研究開発法人新エネルギー・産業技術総合開発機構(以下「NEDO」)の「日本語版医療特化型LLMの社会実装に向けた安全性検証・実証」における基盤モデルの開発プロジェクトの一環として行われます。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?