- 言語モデルの自己修正能力を向上させる手法としてProgCoを提案
- プログラムを用いて生成した回答を検証し改善するプロセスを採用
- 実験でProgCoがGPT-3.5やGPT-4の性能を向上させたことを確認
論文:ProgCo: Program Helps Self-Correction of Large Language Models
本記事で使用している画像は論文中の図表、またはそれを参考に作成した画像を使用しております。
本論文の概要
本論文では、言語モデル(LLM)における自己修正能力を強化する新しい手法「ProgCo(Program-driven Self-Correction)」を提案しています。LLMを使用する際、回答の正確性や一貫性を向上させることが重要ですが、現状のモデルでは間違った出力が生じることがしばしばあります。この問題を解決するために、「プログラム駆動型自己修正」を導入し、データの検証やエラーチェックをプログラムで行い、それに基づいてモデルの出力を補正します。
方法としては、まずモデルに初期的な回答を生成させ、その後にプログラムを用いて回答内容を逆方向に検証し、間違いや矛盾を特定します。このプロセスは「プログラムによる検証(Program-driven Verification)」と呼ばれます。次に、得られた検証結果やフィードバックをもとに、回答を再生成・改善する「プログラムによる精緻化(Program-driven Refinement)」を行います。また、この手法においてPythonコードを生成および実行することで正確な検証を行うプロセスも含まれています。
実験では、数理的な問題を含む複数のデータセット(MATH、GSM8K、そしてHFEval)を用いて、ProgCoの効果を検証しました。その結果、GPT-3.5とGPT-4の性能は、従来の自己修正手法と比較して大幅に向上しました。例えば、MATHデータセットではGPT-4が3.32%の精度向上を達成し、GSM8Kにおいては1.67%の改善が確認されました。この成果は、プログラムを取り入れた検証の有効性を実証したものです。
さらに、従来手法との比較実験では、ProgCoが単なる自己一致(Self-Consistency)や他のモデル固有の修正方法を凌ぎ、信頼性の高い結果を提供できることが分かりました。本研究は、自動検証機構とモデルの応答修正を結びつける新しいアプローチとして、LLMの正確性と信頼性を向上させる意義深い一歩を示しています。
図表の解説
図1は、大規模言語モデル(LLM)の自己修正プロセスを示しています。まず、入力がLLMに与えられ、初期応答が生成されます。その後、自身で応答内容を検証する「自己検証」と、応答を改善する「自己改良」の2つの段階があります。この過程で、必要に応じて何度か反復が行われ、最終的に検証が成功するか、最大反復回数に達すると終了します。この仕組みにより、外部フィードバックなしでも、LLMが自身の誤りを修正できるように設計されています。
この画像は、プログラムによる自己修正の仕組みを示しています。図2では、「自己検証」(ProgVe)と「自己改良」(ProgRe)の擬似プログラム生成法が視覚化されています。具体的には、例として示されている2つのタスクに対して、入力された指示や問題に基づいて検証プログラムを自動生成し、それに基づいて言語モデルが自動的に解を確認する手順を示しています。この方法により、複雑な論理や計算問題をより正確に検証できるようにし、自己修正を効果的に行うことができます。
この図は、ProgCoの自己修正フレームワークを示しています。ProgCoは、プログラムベースの検証(ProgVe)とプログラムベースのデュアルリファインメント(ProgRe)を使用しています。まず、入力タスクに対して検証プログラムを生成し、実行します。次に、フィードバックをもとに応答と検証プログラムを再評価し、改善します。このプロセスにより、複雑な課題での自己修正が効果的に行われます。
この表は、論文で提案されている様々な自己修正方法の効果を示しています。Llama3.1、GPT-3.5、GPT-4oといった異なる大型言語モデルを使用し、それぞれの方法が、初期スコアに対してどれだけ改善を見せたかが記載されています。ProgCoという方法が最も高い改善スコアを示しており、一度の自己修正で他の手法よりも優れた成果を上げています。これは特に数学や推論などの複雑なタスクで効果的であることが示されています。
表は、プログラム駆動の自己修正技術「ProgCo」がPythonの実行ツールを組み込んだ結果を示しています。GPT-3.5とGPT-4oのモデルで実施され、「IFEval」では最大3.51%、「MATH」では最大1.2%の性能向上が見られます。この結果は、Python実行ツールの利用が自己修正能力を高め、特にプログラムベースの検証において効果的であることを示しています。
この表は、GPT-3.5モデルにおける自己修正機能のアブレーション結果を示しています。表中の「ProgVe」は、プログラム駆動の検証法を指し、自己修正を通じて検出されたサンプルの正確性を向上させるものです。「ACC」は正確性、「Avg Turn」は平均自己修正回数、「Δ i→c」は誤りから正解への変化率、「Δ c→i」はその逆を示しています。「w/o cont. & regen.」などの行では特定の要素を取り除いた場合の性能が示され、自己修正がどのように影響を受けるかが示されています。正確性の向上と誤りの減少がProgVeの効果として確認されています。
この画像は、GPT-3.5を用いた自己修正のケースを示しています。問題は、12マイルのトレイルをハイキングしているマリッサが、平均速度4マイル/時を達成するために、残りの距離をどの速度で歩く必要があるかを求めるものです。最初の解決策は、誤った計算に基づいていましたが、反省と再検討を経て、正しい速度を見つけました。画像は、数学的推論を改善し、自己修正を成功させる手順を具体的に示しています。
図5は、GPT-3.5を用いた自己修正ラウンドの回数によるスコア変動を示しています。プログラムのACCは、ProgVeの実行結果と正解の一貫性精度を計測します。左の図はIFEvalデータセットの結果で、自己修正ラウンドが増すごとにスコアが徐々に改善している様子が示されています。右の図でもGSM8Kでの自己修正によって一貫したスコアの向上が見られ、ProgCoの効果が強調されています。スコアの上昇は、複雑な推論が求められるタスクでも有効性を示しています。