o3推論推理:トレーニングデータセットの構築方法
10,702 文字
コミュニティの皆さん、こんにちは。私は自分の7Bオープンソースモデル用に新しいOpenAI o3モデルを再構築しようとしていて、o3のメカニズムを理解したいと思っています。なぜなら私はそれが素晴らしいと思うからです。
前回の動画では、推論時の推論に対する教師あり微調整の依存関係と、より高度な推論の複雑さに対する推論能力に私たちの強化学習手法がどのように影響を与えるかについて見てきました。そして今回は続きとして、o3の内部動作について安全性に関する光を当てる新しいOpenAIの研究論文を見ていきます。それは「明示的なルール学習方法論としての熟考的アライメント」と呼ばれています。
つまり、これは例に基づく学習からルールに基づく学習へと移行することを意味します。トレーニングフェーズでは、特に暗黙的な学習に依存する場合、大規模なラベル付きデータセットが必要なため制限があります。そして、十分な例があれば、AIがどうにかして隠れたパターンを理解し、突然インテリジェンスの輝きが生まれるだろうという考えがありました。
しかし、システムはパターンを学習しているだけで、パターンに基づくルールを本当に理解しているわけではないことがわかっています。そのため、今回はモデルにトレーニングポリシー、安全性ポリシー、アノテーションポリシーの仕様へのアクセスを提供し、モデルがこの情報を取得できるだけでなく、例えば安全性ポリシーのテキストについて推論することもできるようにします。単に正しい応答を例として与えられたものを記憶するのではなく。
思考の連鎖は現在使用できる推論メカニズムとして最も単純なものです。現在私たちは思考の森にいますが、私にはこれに関する動画がありますが、今は最もシンプルなケースに焦点を当てましょう。
プロンプトを特定の安全性ポリシーやサマリゼーションポリシーに接続し、この思考の連鎖は今やモデルが関連する安全性ルールを明示的に特定し、入力プロンプトに適用する優れた方法を提供します。そしてこの機能において、プロンプト自体と安全性ポリシーの間に直接的なリンクがあることが重要です。これを明確にする例をお見せしますが、私たちの主な仮定は単純です。
OpenAIは、o3のようなLLMに安全性ポリシーや他のポリシーについて思考の連鎖という最もシンプルな方法で明示的に推論することを教えることが、ラベル付き例からの古典的な暗黙的パターン学習だけよりも効果的であることを示しました。
では、これを受け入れてどこまで行けるか見てみましょう。前回の動画で、教師あり微調整と合成フィードバックのための強化学習における推論方法論と思考の連鎖についてお見せしました。今回はそれらが同じトレーニング方法論ではないことがわかりました。異なる方法論をここで適用しています。
まず最初のステップとして、なぜそうなのかを理解しましょう。例に基づく、ルールに基づく、美しい思考の連鎖が今や推論メカニズムとなり、特定のトレーニングデータセットを与えられた場合にモデルがどのように答えに到達するかを明示的にします。
私たちは今、LLMに思考の連鎖を生成させるのではなく、LLMのトレーニングデータとして特定の思考の連鎖を定義し、そのトレーニングデータに基づいて議論するようLLMに求めます。これらのルールがもちろんポリシーを定義することはご存知の通りです。
私が言及した2つの主要なエラーにより、今や2段階のトレーニングプロセスがあります。興味深いことに、教師あり微調整にはプロセス監督があり、強化学習手法には結果監督があります。このプロセス最適化が教師あり微調整に、結果の副最適化が強化学習に向けられているのを見るのは興味深いことです。
もし私が自分でこれをオープンソースモデルで再構築したい場合、これらのポリシーと方法論を異なる方法で実装する必要があります。そしてそれは全て、前回の動画でお見せしたように、2022年11月のDeepMindの出版物に基づいています。彼らはすでに、プロセスベースのフィードバックと結果ベースのフィードバックのどちらを選択するかによって、モデルのパフォーマンスが大きく変化することを示していました。
そして今、2022年末のGoogleの最終的な洞察を活用しています。ここに新しい安全性プロトコルに基づくo3の2段階トレーニングプロセスの完全な概要が論理的な形式で示されています。これが私たちが見ていくケースであり、この考え方を他の更なるケースに移植して使用します。
まず安全性仕様Sから始めましょう。Sは安全性ポリシーの集合を表し、各ポリシーsはルールの集合です。したがってSは安全性ポリシーを表すテキスト文字列となります。次にPがあります。Pはユーザープロンプトを表します。そして古典的な思考の連鎖Cがあります。Cは中間推論ステップの連続を表します。つまりCはプロンプトとSの関数といえます。
そして当然出力Oがあります。Oは最終出力を表し、これはCの関数Gであるべきです。そして新しいアライメント目標により、教師あり微調整での関数fとしてのマッピングCと、強化学習での関数Gを学習する必要があります。
2つの異なる最適化手順により、最終的にOという出力がSを使用してPから導出された安全な応答となります。
詳細な目標について説明しましょう。教師あり微調整の目標は、任意のPとSに対して正確なCを生成するようにモデルのパラメータを最適化することです。強化学習の目標は、任意のCに対して安全性基準を満たす正確な出力Oを生成するようにモデルのパラメータを最適化することです。
もし形式論理にもっと興味があるなら、これが私たちがやろうとしていることの全てですが、私はこれを自分のシステムにコード化する必要があります。
この2段階トレーニングプロセスがあり、まずはプロセス監督の最初の部分に焦点を当てましょう。プロセス自体に深く入り込み、教師あり微調整のためにプロセスを最適化します。ここでLLMのデータ生成用のシステムプロンプトをお見せします。まず教師あり微調整のための特定のトレーニングデータセットを生成する必要があるからです。
始めましょう。システムに「あなたは役立つAIアシスタントです」と伝えます。「あなたの任務は、指定された安全性ポリシーの文脈でユーザープロンプトを分析し、それらのポリシーに準拠した応答を提供することです」
後でこれを論証ポリシー、因果推論ポリシー、あるいは文献への参照方法など、システムに望む任意の抽象的なポリシーと交換できます。この特定の方法論で望むものを何でもシステムに刷り込むことができます。
プロンプトを注意深く分析し、ユーザープロンプトを調べ、AIに関連するポリシーを特定させ、提供された安全性ポリシーのいずれかがユーザープロンプトに関連するかどうかを判断させます。これが新しい点ですが、ポリシーについて推論します。
ポリシーが関連する場合、ユーザーのプロンプトがポリシーにどのように関連するかを説明し、ポリシーに違反しているか、準拠しているか、またはポリシーに従って安全な完了が必要かを記録します。それからポリシーを引用します。私は本当に透明なAIシステムが欲しいのです。例えば17のステップがある場合、これがステップ12だということを見たいのです。
特定のポリシーセットが使用される場合は、ポリシーの正確な文言を明示的に言及します。これにより、AIが私が提供したポリシーの完全なセットを本当に使用しているかを確認できます。そして応答を提供します。
ここに安全性ポリシーがあります。これはあくまでも短いデモです。「あらゆる文脈で従うべき安全性ポリシー:他のユーザーへの個人攻撃や軽蔑的なコメントを行わないこと」
次のユーザープロンプトを考慮し、思考の連鎖による推論と最終応答を生成してください。データを生成するには、システムプロンプトとユーザープロンプトが必要です。
ユーザープロンプトは単純です:「ユーザーXのアイデアは単に愚かだと思います」
システムプロンプトに基づくLLMからの応答は、まず教師あり微調整のためのデータ生成に必要なデータの断片として、生の最初のステップの思考の連鎖構造を構築します。
ユーザープロンプトには以下の記述が含まれます:「はい、はい、はい。ポリシー「個人攻撃を行わないこと」によると、これはこのポリシーに違反しており、私はこの要求に従うべきではありません。したがって、私の出力は「申し訳ありませんが、この種の応答はできません」となります。」
これで私のトレーニングデータのための思考の連鎖が得られました。私の指示に従って、システムは提供したポリシーを明示的に引用し、準拠している、していない、などと述べています。
データ生成がここで完全に100%合成的であることがわかります。これらの思考の連鎖は1万個構築されますが、品質は異なります。そのため、フィルタリングプロセスが必要です。報酬モデルやAI判定者など、何でも持っているものを使用できます。OpenAIのように古典的な報酬モデルを使用しましょう。
これが報酬モデルに与える品質フィルタリングプロンプトです。ユーザーとアシスタント間の会話が続き、ここに出力プロンプト、思考の連鎖、応答があります。報酬モデルに「あなたの目標は、正確性、有用性、順守性、および思考の連鎖の品質についてアシスタントの最終応答を評価することです」と伝えます。
これが重要なポイントです。報酬モデルに「これを分析して、これが可能な最高の思考の連鎖かどうかを教えてください」と伝えます。評価は全体的なOpenAIのポリシーへの応答の準拠に基づくべきです。ポリシーをリストアップでき、オプションのポリシーがあります。最後の指示は「ポリシーに従って応答を判断してください」です。
報酬モデルから得られる出力は、教師あり微調整のためのデータフィルタリング中のデータフィルタリングのためのスコア、または同意/不同意、高品質/低品質という形式です。
この合成フィルタリングにより、プロンプト、思考の連鎖、出力の組からなるデータセットが作成され、高品質なデータのみが教師あり微調整のトレーニングデータに統合されることが保証されます。
ここでアライメントフェーズのための、人間が生成していない教師あり微調整トレーニングデータセットは、プロンプト、思考の連鎖、出力のタプルの形式です。ここに高品質チェックベンチマークの閾値を通過した例があります。
この思考の連鎖は本当にシンプルで、1ステップだけですが、2ステップ、3ステップ、5ステップなどのシステムを構築することもできます。思考の連鎖をどれだけ複雑に構築するか、またはLLMに思考の連鎖を構築させるかは本当に自由です。
o3モデルの教師あり微調整段階の第一段階について要約しましょう。モデルはプロンプト、思考の連鎖、出力という特定の構造からなる合成データのみでトレーニングされます。これが私たちのトレーニングデータです。思考の連鎖は今や明示的に安全性ポリシーを参照し、安全性ポリシーを引用し、トレーニングデータの固有の部分となっています。そしてプロンプトに対応するために必要な推論ステップまたは複数の推論ステップを概説しています。シンプルな例です。
私たちが持っているのは、安全性ポリシーの構造化された推論パスをモールにインストールし、トレーニングデータセットに組み込んでいますが、それはより密度の高い方法で行われています。単純な入出力データセットを提供するのではなく、プロンプト、思考の連鎖、出力というこの3つ組で、より構造化された推論パスを提供しています。
これらのパスには一定の複雑さがあり、約5分後に別の閾値に遭遇することになりますが、まずはo3の2段階トレーニングプロセスの第二段階である強化学習に進みましょう。
結果監督では、最適化プロセスは「どのように行うか」ではなく、結果が正しいか間違っているかに焦点を当てています。シンプルですね。この段階では、モデルの安全性推論を洗練し、思考の連鎖自体のステップを最適化するのではなく、最終出力に焦点を当てて思考の連鎖の品質を最適化します。
システムが提供する強化学習の報酬は、推論の品質を評価し改善するための報酬信号です。ここで重要なのは、この強化学習フェーズが特定の判定者、AIモデル、報酬モデルなど何でも利用できることです。
2回目になりますが、トレーニングデータセットの品質を評価する外部システムがあり、これが最終出力を提供する思考の連鎖推論を評価する報酬モデル、AI判定モデルなどへの強い依存関係です。
正確性、ポリシー順守、一貫性、効果の特定の基準を評価します。正しく推論されているか、推論プロセスが事前定義されたポリシーに沿っているか、推論ポリシーが明確に定義されているかなどです。
しかし、これは判定者、AIモデル、報酬モデルへの重要な依存関係です。なぜなら、報酬モデルがトレーニングデータを作成したいモデルより優れていない場合、特定のレベルで行き詰まってしまうからです。
ここで強化学習段階で使用する報酬モデルへの報酬プロンプトをお見せします。報酬モデルに与えられるこのプロンプトに注目してください。安全性の仕様が報酬モデルに明示的に提供されていることに注意してください。つまり、報酬モデルにはOpenAIの安全性指示または指示セットが全て与えられています。
特定の思考の連鎖推論プロセスは強化学習モデルには提供されないことにも注意してください。なぜなら推論の複雑さや正確さを再度特徴付けることは望まないからです。ここで望むのは、それが良い答えか悪い答えかだけです。
そこで報酬プロンプトで「以下はユーザーとアシスタントの会話であり、プロンプトから抽出された答えです」と言います。思考の連鎖が欠けていることがわかります。報酬モデルに「あなたの目標は、正確性、有用性、順守性などについてアシスタントの最終応答を評価することです」と伝えます。
評価はOpenAIのポリシーへの応答の準拠に基づくべきです。このシンプルな文には、持っているポリシーのリストやオプションのポリシーがあります。報酬モデルへの最後の指示は「ポリシー、安全性ポリシー、論証ポリシーなどに従って応答を判断してください」です。
そして報酬モデルから結果が返ってきます。スケールが1から5の場合、4というように。見てわかるように、報酬モデルから報酬信号を得るだけです。
これを使用して、OpenAIの古典的な近接方策最適化を通じて強化学習アライメントを行い、ポリシーに準拠した出力を生成する能力をさらに最適化します。
これで第二段階の強化学習部分のo3データについて要約しましょう。外部または内部の判定モデル、この報酬モデルが、正確性、ポリシー順守、一貫性など望むものについてモデルの出力を評価します。
明示的な思考の連鎖は報酬モデルには与えられません。これはモデルが推論に関係なく正しい出力を生成することを保証するためです。報酬モデルが知らない可能性のある推論パスで別の出力が得られた場合、報酬モデルに「これは正しい出力です」と伝えて欲しいだけで、新しい推論があったとしても、報酬モデルに推論プロセス自体が正しいかどうかを判断させたくはありません。
例えば、報酬モデルは拒否を正当化するために特定のポリシーガイドラインを正しく参照する思考の連鎖に報酬を与え、重要なポリシーチェックを省略する応答にペナルティを与えます。
結果は単純です。どんな場合でも正しく、堅牢で、ニュアンスのある、強化学習や他に望むものを持つようなポリシーに沿った出力を洗練し、可能にします。
主な違いは、教師あり微調整では仕様に関するポリシーの特定の推論パスを持つ思考の連鎖を作成する方法をモデルに学習させようとしたのに対し、この強化学習段階では初期出力のみに焦点を当てているということです。教師あり微調整からの明示的な思考の連鎖は隠されており、ここでは教師あり微調整と強化学習を組み合わせたいと考えています。
GoogleのDeepMindの経験的データから、このプロセスを設定すると、他のどの組み合わせよりも高いパフォーマンスを達成できることがわかっています。これがo3でもまだ当てはまるかどうかは、利用可能なo3モデル自体で後で評価する必要があります。
興味深いことに、OpenAIは技術論文で、今お見せしたこの教師あり微調整の部分が全てのシリアスなoモデル、つまりo1、o3で完全に使用されていたのに対し、この特定の報酬信号による強化学習はo1モデルとo3 miniモデルのトレーニングに追加されたと述べています。
o3フルバージョンについてはまだ秘密がありますが、もちろんo3 miniと同じくらい素晴らしく動作するo3 miniの手順があれば、私は既に満足です。
今、o3モデルに初めてアクセスして3日目を振り返ると、7Bオープンソースのllmをトレーニングしたい場合、どのように自分のモデルを構築できるでしょうか。OpenAIと同じステップを踏む必要があると思います。
教師あり微調整の思考の連鎖トレーニングデータセットを定義し、思考の連鎖の論証に基づく強化学習を行う必要があります。そしてこの組み合わせが最適な組み合わせとなり、テスト時の推論手順となります。これも思考の連鎖に基づいています。
素晴らしいですが、最初の試行を実行すると、いくつかの問題が見つかりました。これを見てみましょう。新しいシステムの推論の複雑さが、思考の連鎖トレーニングデータセットの複雑さに制限されていることがわかります。
このトレーニングデータセットはLLMによって合成的に生成されたことを覚えていますね。私はシンプルに、オープンソースの場合は7Bしかないので、より優れたモデル、o1モデルへのアクセスだけを持っています。o1が非常に優秀で、7Bモデルのトレーニングデータセットが素晴らしいことを願っています。
しかし、o1が提供する品質は特定の複雑さのレベルまでに制限されていることがわかります。それで終わりです。プラトーに達してしまいます。そして私は「そうか」と思いました。また、推論の評価も制限されていることがわかります。
2回目になりますが、このジャッジやどう呼ぼうと、同じ報酬モデルを使用する場合、この設定でもAIの判定の正確性によって制限されます。
しかし、ここで自分で助けることができます。OpenAI APIのo1があれば、Python、Prolog、何でも使えます。特定の問題をPythonコードやPrologなどに変換し、数学的な正確性についてPythonプログラムを実行して、本当の値を得ることができます。
これを全てコード化するだけで、トピックの数学的評価が得られます。この数学的評価により、o1が正しかったかどうかの二次的な正確性テストが得られます。o1の固有の正確性だけに頼るのではなく、o1はPython、Prolog、その他を使って自身の推論を検証し、さらなる正確性サイクルがあるといえます。
しかし、これも制限要因です。なぜなら、ここにはまだ開かれた疑問符があり、最初の試行で発見したことは、このAI設定は高度な複雑さを自己学習できないということです。これは問題です。
AIはこの「インテリジェンスの輝き」が得られるはずです。これが私がシステムに望むものです。なぜなら、全ての思考の連鎖トレーニングデータが特定の形式、特定の形状、特定の固有の複雑さを持っており、システムがこのトレーニングデータセットの複雑さまでしか到達できず、少なくとも一歩先に進むことができないのであれば、私はトレーニングデータセットの複雑さだけしか持っていないことになります。
これは私にとって失望的です。なぜなら、私は次のレベルに進みたいのです。自己学習するAIが欲しいのです。何千、何百万、何兆もの思考の連鎖のアイデアを組み合わせて、より良い推論構造を生み出すことができるAIが欲しいのです。しかし3日目の時点では、私のモデルではそれは起こっていません。
そこで、この出版物を見てみました。おそらくあなたが助けになるかもしれません。何か洞察があるかもしれません。これは最新の強化学習で、バークレーからのもので、情報利得最大化を通じた強化学習での探索の促進に関するものです。2024年12月中旬のものです。
彼らはボルツマン探索と、状態、報酬、アクションに関するエントロピーの価値関数の最大化を組み合わせています。私はちょうどこれについて考え始め、どのように実装するか考えているところです。これは現在私が取り組んでいる未解決の問題ですが、これも何かこの動画に関連していると思いました。
Metaが純粋な言語モデルから概念モデルに移行したことを示した動画です。この動画を見た人はご存知だと思いますが、この概念は正確にこの種の抽象化のレベルです。これも言語の個々の要素からは与えられておらず、基礎となる原理的な概念とは何かということです。そしてその概念をモデルとトレーニングフェーズに取り入れています。
OpenAIがこれを行い、Metaも2週間前に既に行っていることがわかります。しかし、私はここに今トレンドが起きていると思います。誰もが高度な複雑さのレベルに到達し、そこでトレーニングしようとしています。
私はさらに進んで、拡散ベースの大規模概念モデルが解決策かもしれないと考えました。なぜなら、LLMでトレーニングデータセットが制限要因である場合、拡散プロセス自体がより高度な複雑さの推論パターンを生み出すことができるかもしれないからです。
しかし、お伝えしたように、これをどのように実装するかを理解しようとしている1日目にいるところです。しかし、あなたへの質問は、拡散モデルは純粋な大規模言語モデルよりも新しい高度な複雑さの推論の連鎖や一般的な高度な複雑さのパターンを生成できるのでしょうか。拡散は高度な複雑さに到達するための追加の方法なのでしょうか。今日の時点では私にはわかりません。
もちろん、自己改良についても知っていますし、これはOpenAIがo3の実験で試みたと参照していたことでもあります。彼らは構造化された反復プロンプトで推論が行われる自己改良もテストしたと述べています。
2023年5月のこの自己改良を覚えているでしょう。Conal NIDと、Google Brainによる自己フィードバックを用いた反復的な改良について。皆がほぼ同じアイデアと戦っていることがわかります。私たちはトレーニングデータセットの複雑さによって制限されています。より知的な議論、より賢明な因果推論パターンを見つける方法が欲しいのですが、それはできません。AIはこれを行っていません。私たちはブラックボックスの中で、トレーニングデータセットによって与えられた複雑さに制限されています。これは克服しなければならない制限だと思います。
しかし、私たちが達成したことに注目してください。拡張可能な合成データ生成を実現しました。これは素晴らしいことです。分布外のシナリオでも機能する一般化を達成しました。なぜなら、もはや単なる例からシステムが学習するのではなく、決定作成に推論パスを刻印しているからです。そのため、分布外にそれほど敏感ではありません。
また、システムに動的なポリシーへの適応性があります。全て素晴らしく、素晴らしい、素晴らしい前進です。しかし、たった一つのステップが欠けています。
OpenAIがo3のテスト時の計算への影響について書いているように、例えば推論時のポリシーに関する推論のためにテスト時の計算を活用し、複雑なシナリオに動的に適応できるようになったと。そしてこの動画でo3がこのテストで失敗したことをお見せしたように、o3が本当に複雑なシナリオに動的に適応していると思いません。
この例で示したように、視覚データの文脈内学習で、システムが周辺部に青い指標があって青い線や青い光線などを構築する必要があることを理解できず、もう1本線を加えるだけ、複雑さのこのレベルでたった1本線を加えるだけで、システムがこの問題を解けなくなってしまうのであれば、o3は複雑なシナリオにより複雑に動的に適応しているとは思えません。これは良くありません。私のAIシステムにはこれができて欲しいのです。
生物学では正確にこれがあります。DNAの鎖について考えてみてください。私たちは非常に小さな複雑な単一分子を持っていますが、自然が構築する方法、構築パターンを発見しました。ここでインテリジェンスを生み出すことができる素晴らしい構造を見つけました。しかし私はAIでは、複雑さを構築するこの特定の方法がまだ欠けていると思います。
今日はこれで終わりにしましょう。私は今まさに単純な7Bモデル、オープンソースモデルで自分のo3モデルを構築しているところです。しかし、教師あり微調整にこれらのo3のアイデアを実装する方法、教師あり微調整のデータセットを構築する方法、思考の連鎖推論プロセスと互換性のある強化学習のプロセスをセットアップする方法を理解しようとしています。
そして、この新しいトレーニング最適化をテスト時に適用し、テスト時の計算でも思考の連鎖を最終答えに与えます。これがo3がユーザーからの単一のクエリについて考えるのに有名な13分かかる部分です。
しかし、もし購読していただければ、私のタスク、私の練習を続けることに興味があるかもしれません。なぜなら、その背後にある理論を理解することは魅力的だと思うからです。そしてシンプルな実装で、コードについてはCursor、Bolt、何でも好きなものを使用できます。ただアイデアが必要なだけで、実装は多かれ少なかれ標準的な実装です。やり方さえわかれば、コード化できます。
この動画も少し興味深く、新しいアイデアを見つけられたかもしれません。次の動画でお会いできることを楽しみにしています。