見出し画像

Googleの研究でOpenAIの秘密が暴かれてもうた(OpenAI o1の正体)

8,667 文字

みなさん、覚えてはりますやろか。新しいOpenAI o1モデルのこと。応答する前に考えて、PhD並みのレベルに達したっちゅうやつです。
ほんで、Googleディープマインドから新しい研究が出てきて、このメソッドをある程度解明してもうたんです。今まで大規模言語モデル(LLM)のスケーリングをしてきた方法が、最適やなかったかもしれんっちゅうことがわかってきたんですわ。
詳細に入る前に、ちょっと大規模言語モデルの状況について振り返ってみましょか。
ここ数年、GPT-4やClaude 3.5ソネットなどのLLMが、めっちゃ強力なツールになってきました。人間みたいなテキスト生成、複雑な質問への回答、コーディング、チュータリング、さらには哲学的な議論までできるようになったんです。
これらの幅広い応用によって、AIの能力に新しい基準が設定されたわけですわ。
でもな、ここに落とし穴があんねん。
これらのモデルが洗練されればされるほど、リソースを大量に消費するようになってきたんです。モデルのパラメータをスケールアップする、つまりより大きく複雑にするには、膨大な計算能力が必要になってくるわけです。
これは何を意味するかっちゅうと、コストが高くなる、エネルギー消費が増える、特にリアルタイムやエッジ環境でこれらのモデルをデプロイする際に遅延が大きくなるっちゅうことなんです。
そして、これはインフラの問題だけやないんです。これらの巨大なモデルの事前学習には、大規模なデータセットと何ヶ月もの訓練時間が必要になってくるんです。
こういった課題を考えると、単にモデルを大きくするだけやなく、もっと違う方法を考える必要があるっちゅうのは明らかですわ。
ここで登場するんが、テストタイムの計算を最適化するっちゅうアイデアなんです。
つまり、モデルをより大きくして万能選手にするんやなくて、もっと小さなモデルを作って、推論時により長く、あるいはより効果的に考えさせるっちゅうことはどうやろか、っちゅう発想なんです。
これが実現できれば、リソースが限られてるけど、パフォーマンスも重要な実践的な環境でAIをデプロイする方法が革命的に変わるかもしれませんな。
テストタイム計算とモデルスケーリング
まず、テストタイム計算っちゅうのが何か理解せなアカンのですが、これはモデルが学習中やなくて、出力を生成する際に使用する計算努力のことを指すんです。
学生が試験の勉強をするのと実際に試験を受けるのとの違いやと思ってください。訓練は勉強の段階で、全ての学習が行われる。一方、テストタイム計算は試験の段階で、その知識を使って質問に答えたり問題を解いたりするわけです。
ほんで、なんでテストタイム計算が重要なんかっちゅうと、現状、GPT-4oやClaude 3.5ソネットみたいな大規模言語モデルは、最初からめっちゃパワフルになるように設計されてるんです。つまり、でっかくなきゃアカンわけです。
でも、ここに落とし穴があんねん。
モデルを巨大なサイズにスケーリングするのには、かなり深刻な欠点があるんです。
まず、コストの問題です。パラメータが増えれば増えるほど、計算能力が必要になって、訓練と推論の両方でコストが高くなるんです。
そして、これは金の問題だけやないんです。エネルギー消費の問題もあります。これらのモデルを動かすには膨大な電力が必要で、環境にもええ影響与えへんのです。
それから、デプロイメントの課題もあります。巨大なモデルは、特にモバイルデバイスやエッジサーバーみたいな計算リソースが限られた環境では、デプロイするのが難しいんです。
こういった課題を考えると、モデル自体をスケールアップせずに、同じかそれ以上のパフォーマンスを得られへんかっちゅう疑問が出てくるわけです。
ここで登場するんが、テストタイム計算の最適化なんです。
推論時に計算リソースをより効率的に配分することで、モデルを大きくせずにパフォーマンスを向上させる可能性があるんです。
過去数年間の主流の戦略は、比較的単純なもんでした。ただモデルを大きくするだけです。
これは、モデルのパラメータ数を増やすっちゅうことで、本質的にはレイヤー、ニューロン、そしてそれらの間の接続を増やすっちゅうことです。
この方法が効果的やったことは間違いないです。GPT-3が1750億パラメータで、GPT-2の15億パラメータよりもかなり強力やったのはこのためです。
そして、GPT-4やoみたいなさらに大きなモデルが、自然言語処理の可能性の境界を押し広げ続けてるのもこのためなんです。
一般的に、パラメータが多いほど、より多くのコンテキストを理解し、より一貫性のある微妙なニュアンスのある応答を生成し、さらには様々なタスクでよりよいパフォーマンスを発揮できるモデルになるんです。
しかし、この「大きいほどええ」っちゅうアプローチには、かなりのコストがかかるんです。
数千億のパラメータを持つモデルを訓練するには、巨大なデータセット、洗練されたインフラ、そして何千ものGPUで何ヶ月もの計算時間が必要になるんです。
推論、つまり実世界のアプリケーションでこれらのモデルを実際に使用することも、計算コストが高くなります。
モデルに質問したり、テキストを生成するよう促すたびに、多くの計算能力が必要になり、本番環境では急速に積み重なっていくんです。
これが、OpenAIやGoogleみたいな企業が、単に計算能力とデータを投入するだけやなく、高性能を達成するためのよりスマートな方法を探してる理由なんです。
さて、この二つのアプローチ、モデルパラメータのスケーリングとテストタイム計算の最適化のトレードオフについて考えてみましょか。
一方で、モデルパラメータのスケーリングは力任せのアプローチです。効果はありますが、コストがかかり、非効率的で、モデルが大きくなるにつれて収穫逓減になります。
計算コストを一方の軸に、パフォーマンスをもう一方の軸にしたグラフを想像してみてください。モデルサイズを大きくするにつれて、パフォーマンスの向上は頭打ちになりますが、コストは上昇し続けるんです。投資収益率としてはあんまりよくないですな。
一方、テストタイム計算の最適化は、より戦略的な選択肢を提供します。
巨大なモデルに頼るんやなく、より小さく効率的なモデルをデプロイして、推論時に選択的に追加の計算を行うことで出力を改善できるかもしれません。
これはスプリンターが最後の直線までエネルギーを温存して、重要な瞬間に全力を出すみたいなもんです。
しかし、このアプローチにも課題がないわけやありません。
例えば、テストタイム中に計算を効果的に配分する戦略を設計するのは簡単な作業やありません。問題の複雑さに基づいて、いつ、どれだけの追加計算を使用するかを決定する必要があるんです。
でも、潜在的なメリットは大きいです。
より少ない計算で、より低いコストで、そしてエネルギー消費を減らしながら、はるかに大きなモデルに匹敵するパフォーマンスを達成できる可能性があるんです。
これが実践でどういう意味を持つのか?
ここでの重要なポイントは、バランスを取る必要があるっちゅうことです。
場合によっては、特に力任せのスケールが必要な極端に複雑なタスクでは、パラメータを増やすのがまだ最善のアプローチかもしれません。
でも、他の多くの場合、特にあまり複雑やないタスクや、リソースが制限された環境でモデルをデプロイする場合は、テストタイム計算を最適化することがゲームチェンジャーになる可能性があるんです。
そして、これがまさにこのディープマインドの研究が探求してるものなんです。
最適なバランスを見つけ出し、計算サイクルを最大限に活用するためにどんな技術が役立つのか、っちゅうことです。
さて、テストタイム計算対モデルスケーリングの問題を理解することで舞台を整えたところで、この論文で紹介されてる主要な概念をいくつか見ていきましょか。
研究者たちは、モデル自体をスケールアップせずに、モデルの使用段階、つまりテストタイムに計算をスケールアップするための二つの主要なメカニズムを開発しました。
最初のメカニズムは、検証報酬モデル(Verifier Reward Models)と呼ばれるものです。
ちょっと技術的に聞こえるかもしれませんが、簡単に説明しましょか。
多肢選択テストを受けてる場面を想像してください。質問に答えた後、その科目の天才である友達に答えをチェックしてもらうんです。
友達は単に答えが正しいか間違ってるかを教えるだけやなく、正解に至る手順を理解するのも手伝ってくれます。
そして、このフィードバックを使って次の回答を改善できるわけです。
これが、検証報酬モデルが大規模言語モデルに対して行うことの一種なんです。
技術的な言葉で言うと、検証器は、メインの言語モデルが問題を解こうとする際に取るステップを評価または検証する別のモデルなんです。
単に出力を生成して次に進むんやなく、モデルは複数の可能な出力や回答を探索し、検証器を使って最良のものを見つけるんです。
検証器はフィルターのように機能し、各オプションがどれだけ優れてるかを以前のデータに基づいてスコア付けし、モデルが最良の道筋を選択するのを助けます。
このプロセスベースのアプローチ、つまり最終的な答えだけやなく各ステップを評価することで、モデルはより正確になります。推論の全ての部分が健全であることを確認するからです。
これは、組み込みの品質チェッカーを持つようなもんで、モデルが動的に回答を修正し改善することを可能にするんです。
実践的な意味では、モデルが賢くなるために巨大である必要はなく、ただ自分の作業をチェックする良いシステムがあればええっちゅうことです。
検証報酬モデルを組み込むことで、テストタイム中のモデルの計算使用を最適化し、巨大になる必要なく、より速く、より正確にすることができるんです。
2番目のメカニズムは、適応型応答更新(Adaptive Response Updating)として知られています。
これを20の質問ゲームをプレイするようなもんやと考えてください。
もしプレイしたことがあれば、各質問は得た答えに基づいて変わっていくことを知ってるはずです。答えが果物やとわかったら、動物かどうかを聞くのをやめますよね。
同様に、適応型応答更新は、モデルが進行中に学んだことに基づいて、その場で答えを適応させ、洗練させることができるようにすることです。
これはこんな風に機能します。
モデルが難しい質問を受けたり、複雑なタスクを与えられたりした場合、一つの答えを吐き出すだけやなく、複数回にわたって応答を修正するんです。
これを行うたびに、前の試行で正しかったことと間違ってたことを考慮に入れるんです。これにより、より効果的に正解に近づくことができるわけです。
もっと技術的な言い方をすると、これはモデルがテストタイム中に動的に応答分布を調整することを意味します。
応答分布っちゅうのは、モデルが出す可能性のある答えの集合やと考えてください。
リアルタイムで学習してることに基づいてこの分布を適応させることで、モデルは追加の事前訓練なしに出力を改善できるんです。
これは、問題が難しい時に、ただ結論を急ぐんやなく、より一生懸命に、あるいはよりスマートに考える能力を持つようなもんです。
このアプローチが強力なのは、モデルを一つの答えしか出さへん静的な応答者から、直面する問題に基づいて戦略を調整できるより動的な思考者に変えるからです。
そして繰り返しになりますが、これはモデル自体を大きくせずにできるんです。これは実世界のシナリオでこれらのモデルをデプロイする際のゲームチェンジャーになりますな。
さて、これら二つの概念を、研究者たちが計算最適スケーリング戦略と呼ぶものと組み合わせてみましょか。
心配せんでもええです。聞こえるほど複雑やありません。
本質的に、計算最適スケーリングは計算能力の使い方をスマートにすることです。
全ての問題に固定量の計算を使うんやなく、この戦略はタスクやプロンプトの難しさに基づいて動的に計算リソースを割り当てるんです。
例えば、マラソンを走ってる場面を想像してください。全行程をスプリントで走ることはないですよね。地形に基づいて、ペースを調整するはずです。ある区間では速く走り、別の区間ではスローダウンする、みたいな感じです。
同様に、計算最適戦略はモデルに対して似たようなことをするんです。
モデルが簡単な問題を与えられた場合、あまり計算を使わへんかもしれません。サッと通過できるわけです。
でも、問題が難しい場合、モデルはより多くの計算を割り当てます。マラソンで速く走るみたいに、より深く考えたり、検証モデルを使ったり、最良の答えを見つけるために適応的な更新を行ったりするんです。
これが、ほとんどのモデルが今使ってる固定計算戦略とどう違うんか?
従来のモデルのほとんどは、簡単か難しいかに関係なく、全てのタスクに対して同じ量の計算能力を使います。
マラソン全体を、上り坂でも下り坂でも同じ速度で走るようなもんです。あまり効率的やないですよね。
一方、計算最適スケーリングは、必要に応じて調整します。これによってずっと効率的になるんです。
計算を適応的に使用することで、モデルは巨大なサイズにスケールアップする必要なく、様々なタスクで高いパフォーマンスを維持できるんです。
テストタイム計算をスケーリングするこれらの新しい技術の効果を本当に理解するために、ディープマインドの研究者たちは実世界のデータを使ってテストせなアカンかったんです。
そのために選んだのが、特に難しいデータセットとして知られる数学ベンチマークでした。
数学ベンチマークって何やねんって?
高校レベルの数学問題の集まりを想像してください。代数、幾何、微積分、組み合わせ論まで、全てが含まれてます。
これらは標準的な数学問題やありません。深い推論と問題解決能力をテストするために特別に設計されてるんです。
これが、大規模言語モデルにとって完璧な挑戦になるわけです。
アイデアは、モデルが正解を出せるだけやなく、そこに至るために必要なステップも理解できるかどうかを見ることです。
これが、答えを洗練させることと、ステップを検証することに焦点を当てたこの研究の核心的な目標にピッタリなデータセットになるわけです。
このデータセットを使うことで、研究者たちは比較的簡単な問題から複雑な多段階の推論を必要とするものまで、様々な難易度レベルにわたって提案された手法がどれだけうまく機能するかを厳密に評価できたんです。
このベンチマークの選択により、強力な論理的・分析的スキルを要求する実世界のタスクに適用可能な、堅牢な結果が得られることが保証されるわけです。
次に、モデル自体について話しましょか。
この研究では、Palm 2モデル、特にPalm 2として知られる微調整されたバージョンを使用しました。
Palm 2、つまりPathways Language Modelは、Googleの最先端の言語モデルの一つで、強力な自然言語処理能力で知られてます。
複雑なテキストを理解し生成する強固な基盤がすでにあるため、この研究には最適な選択やったんです。数学問題を解き、推論を検証するには非常に重要ですからね。
ただし、この研究では既製のPalm 2バージョンを使うだけやなく、もう一歩踏み込んで、二つの重要なタスクに特化して微調整を行いました。
修正と検証です。
修正タスクには、モデルが自分の答えを繰り返し改善するよう訓練することが含まれます。
学生が宿題をチェックして、一つずつミスを修正していくようなもんやと考えてください。
検証タスクは、解答の各ステップをチェックして正確であることを確認することです。
先生が生徒の作業をレビューして、プロセスの全ての部分にフィードバックを提供するようなもんです。
Palm 2をこれらの特定の方法で微調整することで、研究者たちは応答を洗練させ、解決策を検証することに高度なスキルを持つモデルの特殊バージョンを作り出したんです。
これらは、テストタイム計算を最適化する上で重要な能力なんです。
モデルとデータセットについて説明したところで、この研究でテストされた核心的な技術とアプローチに踏み込んでいきましょか。
研究は主に三つの分野に焦点を当ててます。

修正モデルの微調整
プロセス報酬モデル(PRMs)のトレーニング
検索方法

まず、修正モデルの微調整から見ていきましょか。
ここでの目標は、モデルに自分の答えを繰り返し修正する方法を教えることでした。
学生に自分のミスを自己修正するよう教えるようなもんですが、ここでの大きな違いは、モデルが単一のミスを修正して止まるんやなく、正解にたどり着くまで答えを何度も改善し続けるよう訓練されてるっちゅうことです。
ほんで、これをどうやって実現したんか?
研究者たちは監督付き微調整っちゅうプロセスを使いました。
モデルが間違った答えから始めて、正解に至るまで繰り返し改善していく多段階のロールアウトのデータセットを作成したんです。
でも、ここにはいくつかの課題がありました。
一つは、この種のタスクに対する高品質な訓練データを生成するのが難しいっちゅうことです。
モデルがより良い修正を行うためには、以前の答えのコンテキストを理解する必要があるからです。
これに対処するために、研究者たちは複数の可能な答えをサンプリングし、間違った答えと正しい答えを組み合わせた訓練シーケンスを構築しました。
これにより、モデルは単に再試行するんやなく、以前に間違えたことのコンテキストを使って、インテリジェントに修正することを学ぶんです。
その結果、単一の答えを吐き出すだけやなく、慎重な学生が難しい数学の問題に取り組むように、応答を考え抜いて洗練させることができるモデルが生まれたわけです。
次に、プロセス報酬モデル(PRMs)と適応型検索方法について見ていきましょか。
PRMsは、人間の入力なしに、以前のデータに基づいて各ステップがどれだけ正しいかを予測することで、モデルが推論プロセスの各ステップを検証するのを助けます。
これは、モデルが正しい道筋にいるかどうかについて自動化されたヒントを得ながらパズルを解くようなもんです。
正解か不正解かを最後まで待つんやなく、リアルタイムでステップを調整できるようになるわけです。
ガイドがいて、各ターンをナビゲートしてくれるようなもんですな。
研究ではまた、最良のn個、ビーム検索、先読み検索など、様々な検索方法も探求しています。
これらは、異なる部分を試すことで、モデルが可能な限り最良の答えを見つけるのを助けるんです。
最良のn個は、複数の答えを出して最良のものを選ぶようなもんです。
ビーム検索は、複数のオプションを開いたまま、進むにつれて見込みの薄いものを刈り取っていきます。
先読み検索は、行き詰まりを避けるために数手先を見通すんです。
これらの検索方法をPRMsと組み合わせることで、モデルは必要な場所に動的に計算能力を割り当てることができ、より少ない計算でより良い結果を達成し、場合によってははるかに大きなモデルを上回るパフォーマンスを発揮できるんです。
このアプローチにより、巨大な計算リソースを必要とせずに複雑なタスクを処理できる、よりスマートで効率的なAIが実現できるわけです。
全てを見てみると、この計算最適スケーリングと呼ばれる戦略が、タスクの難しさに応じて計算量を調整してることがわかります。
結果を見ると、この方法を使うことで、モデルは従来の方法と比べて4分の1の計算で同等かそれ以上のパフォーマンスを達成できることがわかりました。
場合によっては、この戦略を使う小さなモデルが、14倍も大きなモデルを上回るパフォーマンスを発揮することもあるんです。
このアプローチは、最近のOpenAIのo1モデルのリリースにもある程度似てます。
o1モデルも、よりスマートな計算使用に焦点を当ててるんです。
OpenAIのo1モデルは、競技プログラミングの問題で89パーセンタイルにランクインし、米国のハイレベルな数学コンペティションでトップ500に入り、科学的な質問に対する正確さでは人間のPhDレベルを超えてます。
o1は、訓練時とテスト時の両方で、より多くの計算を使うことで改善します。
両者を見ると、OpenAIもDeepMindも、計算の使い方をどこでどのように最適化するか、学習中か答えを生成する時かに関わらず、AIモデルが過度に大きくなる必要なく高いパフォーマンスを達成できることを示してるんです。
これにより、計算能力を戦略的に使用することで、はるかに大きなモデルと同等かそれ以上のレベルで機能する、より効率的なモデルが可能になるわけです。
以前は「スケールがすべて」っちゅう考え方が主流やったんですが、より効率的な方法でよりスマートなモデルを実現しようっちゅう方向にシフトしてるように見えます。
将来を見据えると、これはAIの未来が爆発的なものになることを示してるんちゃうかなと思います。

いいなと思ったら応援しよう!