
29,539 文字

Google AlphaEvolveの論文が、たった今リリースされました。私たちは他の誰よりも先に著者たちと技術インタビューを行いました。この論文はコンピュータサイエンスの世界における多くのアルゴリズムや数学的課題で世界記録を樹立し、大きな衝撃を与えています。
行列乗算ほど基本的な問題はほとんどありません。半世紀以上にわたり、特に4×4行列に関するこの分野の特定の効率基準は乗り越えられないように思われていました。最適なアルゴリズムの探索空間は膨大で、比較的小さな行列でさえ完全な探索は事実上不可能です。
1969年、フォルカー・シュトラッセンは2×2行列を標準的な8回ではなく、わずか7回のスカラー乗算で掛け合わせるアルゴリズムを発見し、この分野に革命をもたらしました。4×4のような大きな行列に対する確立された最良の方法は、シュトラッセンの2×2の方法を再帰的に適用することでした。4×4行列の場合、これは7×7で、結果として49回のスカラー乗算が必要でした。
今日、AlphaEvolveはこの記録を破りました。Google DeepMindには、単なる洗練されたデータベースを構築するのではなく、実験と反復を通じて新しい知識を実際に発明するAIシステムを構築してきた長い歴史があります。
私たちはAlphaGoを見ました。それは李世ドルを打ち負かし、人間の対局から学び、セルフプレイを通じてチャンピオンを凌駕しました。AlphaZeroは純粋なセルフプレイでしたし、AlphaFoldは実験的に測定されたことのない何百万もの3Dタンパク質構造を予測しました。そしてAlpha Devはより高速なソートアルゴリズムを発見しました。Google DeepMindは最近、Alphatensorによる科学的発見に焦点を当てており、これは行列乗算アルゴリズムを高速化する問題をゲームとして捉えました。
さらに、FunSearchは大規模言語モデルを使用してコードを進化させることで新しい数学的解決策を見つけるという成果を上げました。そして今、AlphaEvolveはこの系譜の次の段階を表しています。任意の数字を持つ行列の通常のケースでは、依然として49回の乗算を使用するシュトラッセンを2回行うよりも良い方法は知られていませんでした。
この設定でAlphaEvolveを使用したとき、私たちは本当に興奮しました。実際、Alphatensorでとても長い間試していたので、49よりも良いものが見つかるとは期待していませんでした。ただ完全を期すために実行しただけです。サイズ5や6までのすべてのサイズで試したという表を論文に載せたかったのです。そして驚くべきことに、49ではなく48回の乗算を使用するより高速なアルゴリズムを発見しました。
これはステロイドを投与されたカーソルのようなものです。メタ学習、ライブラリ学習、自動評価、進化的探索を活用して、LLMの創造的な力を活かしながら、アルゴリズムを反復的に改良します。
AlphaEvolve論文では、難しいタスクに対して事前訓練された大規模言語モデルの能力を大幅に向上させる進化的コーディングエージェントとして説明しています。もちろん、彼らの最初の論文はFunSearchであり、それは非常に似ていました。主な違いは、それが単一の関数を探すのではなく、AlphaEvolveがコードベース全体にわたって動作できることだと思います。
コードベースの中で適応可能な領域を区切るだけで、それを検索することができます。もちろん、コードベースの異なる部分にある関数間の相互作用も最適化しています。キース・ダガーが指摘したように、潜在的な問題の一つはコンピュータサイエンスにおける古典的な停止問題です。
ここにはまた、非常に微妙な制限があり、皆さんと少し探求したいと思います。それはプログラムの実行自体です。問題に直面しますよね。ある問題は停止問題です。コードが正常にコンパイルされてすぐにクラッシュせず、実行が始まるとします。でも、例えば1時間経過して「これは一体いつ終了するのだろう」と考えることがあります。
理論的には、もちろん、アルゴリズムをより長く実行した場合に何をするかを知ることはできません。しかし実際には、私たちが調査したアプリケーションでは何の問題もありませんでした。
アレクサンダー・ノビコフは、この課題は人間の研究の根本的な側面によく似ていると付け加えました。人間として、自分の問題に取り組むのをいつやめるべきか、どうやって知るのでしょうか。もう1ヶ月頑張れば解決するかもしれません。難しいですよね。もちろん、まだ制限はあります。
彼らは私の停止問題についての制限にあまり食いついてきませんでした。実際には問題なかったのです。しかし、彼らはよく選ばれた問題を持っていました。例えば行列乗算ですね。シュトラッセンのアルゴリズムより遅ければ、おそらく止めることができます。
問題は、それが開放的な探索能力を制限することです。今のところ速度は遅いかもしれないアルゴリズムの道を進むことができないのです。それが踏み石となってより効率的なものに飛躍する可能性があるのに。
科学における多くのブレークスルーが未知の未知であることは興味深いですね。興味深いものに対する嗅覚はあるかもしれませんが、どこに答えがあるのかは本当にわかりません。そして、純粋な偶然によって見つけることが多いのです。しかし、このプロセスを機械化し加速する方向に少なくとも一歩踏み出すことはできるはずです。行列乗算およびいくつかの他の科学的問題の場合、明確な評価関数があったこの新しい進化的アプローチは、何十年もの人間の研究ができなかったことを達成しました。
完全を期すためだけに実行しました。サイズ5や6までのすべてのサイズで試したという表を論文に載せたかったのです。そして驚くべきことに、49ではなく48回の乗算を使用するより高速なアルゴリズムを発見しました。私のチームメンバーの一人がこの結果が出たようだとチャンネルでメッセージを送ってきたとき、信じられませんでした。三重にチェックしなければなりませんでした。
成長する能力によって、完全に新しい、証明可能に正しいアルゴリズムを生成し、科学の最前線を前進させることができます。そして本当に素晴らしいことは、AlphaEvolveがすでにGoogle内のミッションクリティカルな実世界のシステムを最適化するために適用されていることです。
彼らはGoogle内の重要な計算インフラの、すでに非常に最適化された部分を高速化することができました。例えば、Googleの巨大なデータセンターでコンピューティングジョブを効率的にスケジューリングすることは非常に複雑な操作です。最適でない場合、高価なサーバーがアイドル状態になります。
Googleのエンジニアは候補解をAlphaEvolveに配置し、ジョブをマシンにはるかに効率的に割り当てるよりスマートなヒューリスティックを進化させました。彼らは、Googleのフリート全体にわたる展開後の測定がシミュレータの結果を確認し、この驚くほど単純かつ効果的な関数が継続的に回復していることを明らかにしたと述べています。
平均して、Googleのフリート全体のコンピュートリソースの0.7%が、そうでなければ行き場のなくなる可能性があるものを回復します。それはGoogleの規模では巨大な節約です。また、自己改善の別の例では、AlphaEvolveを支えるGeminiモデル自体のトレーニングを加速する方法も見つけました。
Geminiの次のバージョンのトレーニングを1%高速化する方法を見つけ、データセンターでリソースを行き場がなくすることができました。このインスタンスも興味深いのは、解決策だけでなく、それらを生成するプログラムも生成したことです。
forループのインデックスを見るとき、インデックスをmodulo 4で見るだけです。そして配列にインデックスを付けるとき、位置Iと I+4と I+8でインデックスを付けています。何が起こっているのだろうと思いました。そしてコードを調べることで、数学的な洞察や数学的仮説と呼べるものを実際に開発することができました。そしてその仮説は、結果を改善するために非常に重要であることがわかりました。
AlphaEvolveの洗練さの重要な側面は、検索問題を表現するための柔軟なアプローチにあります。彼らはあなたに幅広いことを提案します。その中には愚かなものもあれば、素晴らしいもの、本当に奇妙なものもあります。そして評価者を持つことで、それらをフィルタリングし、実際に重要で物事を改善しているものを特定することができます。
解決策自体を生成するのではなく、AlphaEvolveがインセプションのように解決策を生成するものを生成できるのは本当に素晴らしいと思いませんか。背景でインセプションミュージックを流すべきですね。
AlphaEvolveについて本当に興味深いと感じたのは、それがまだ人間がループの中にあるということです。人間が何が興味深いかを特定し、明確な評価者を持つ問題を見つけ、候補解をループに配置し、そしてAlphaEvolveが可能性のこの円錐を横断し、途中でジャンプします。そしてサイクルは続きます。
これは、人間とAIの間に強力な協力的なループがある未来のAIを非常に明確に描いています。私たちは表現のモデル化方法を取り入れるべきです。あなたは異なるアプローチを持っていました。解決策を直接モデル化することができますし、コンストラクタ関数をモデル化することもできます。つまり、解決策を構築する関数自体を学習しているのです。行列の変更で行ったように、検索アルゴリズムを学習することもできます。また、共進化の可能性についても話されていました。
多くの人が、人間の監督なしに自律的に車を運転したり、コンテンツを生成したりできるAIのビジョンについて話しています。しかし、正直なところ、それはあまり実現していません。そしてインターネット上のコンテンツの多くはスロップです。数年前にIlluminati Pirateという人が「デッドインターネット理論」を思い出しますか。このインターネットフォーラムの男は、今頃までにインターネット上のほとんどのコンテンツはAIによって生成され、ある種の表面的なものになるだろうと言いました。彼は正しかったですね。
しかし、それはAIが悪いという意味ではありません。欠けているのは、この交換が必要だということです。私たちはAIをツールとして使用し、結果を指導し洗練し、プロセスを繰り返し行う必要があります。それがAlphaEvolveがやっていることであり、AIの正しい使い方を認識しています。
AlphaEvolveを非常に優れたパワフルなものにしているのは、人間と機械の間のこのやり取りです。人間が質問をし、システムが何らかの形で答えを与え、そして直感を改善し、質問に答える質問をする能力を向上させます。そしてもっと質問をします。
私はAIについて何度か講演をし、与えた大きな警告は「凡庸さの台頭」だったのです。私たちは凡庸さに溢れ、氾濫することになるでしょう。そして最高のコンテンツはまだ最も技術のある人々によって生み出されるでしょう。起こることはすべて、この凡庸さの潮が大きくなるにつれて、人々はクリームに、頂点に上昇するものにますます飢えるようになるということです。
最終的に起こることは、熟練した人々の生産性が上昇し、生産性も向上する凡庸なホードたちから差別化され続けるということです。ホードはより生産的になり、専門家もより生産的になります。全体として、私たちはみんなより生産的になるのです。
離散プログラム合成と推論などのための素晴らしい革新的なアーキテクチャについて話している間に、TufaAI labs [tufalabs.ai]で働くことを検討してみてはいかがでしょうか。MLリサーチサイエンティストやMLエンジニアであればぜひ。ベンジャミン・クルージエがラボを運営しています。現在はチューリッヒにあり、サンフランシスコにもオフィスを開設することを検討しています。彼らはあなたが連絡を取り、興味があれば応募してくれることを望んでいます。ベンジャミンに連絡してみてください。
皆さん、MLSTへようこそ。お二人をここにお招きできて光栄です。お招きいただきありがとうございます。私たちはあなたのAlphaEvolve論文を読む特権を得ました。これは本当にエキサイティングです。というのも、これは私たちの方向性にぴったりだからです。私たちはプログラム合成と進化的手法が大好きです。
ケネス・スタンレーを招いたことがあり、ジェフ・クルーンともNeurIPSで話しました。彼はMap-elites論文を書き、それはあなたがたがやったことの一部に影響を与えました。ただ、1000マイル離れたところから、あなたがたがやってきた仕事について説明していただけますか?
私たちはAlphaEvolveと呼ばれるコーディングエージェントを発表しています。このエージェントができることは、かなり高度なアルゴリズムを設計することです。高度と言うとき、それは科学において新しい発見をすることができるアルゴリズムを意味します。数学とコンピュータサイエンスにおいて、この論文に多くの例があります。または実用的な側面では、すでに高度に最適化されたGoogleの重要な計算インフラの部分を高速化することができます。
私は進化アルゴリズムを含めるという道を選んだ理由が気になります。ハイブリッドシステムの中で、検証者やLLMなどと一緒に私たちを一歩前進させるために必要なコンポーネントだと判断したのはなぜですか?
科学的発見のプロセスを考えると、それは非常に自然な選択だと思います。ケネスとお話したとおり、進化アルゴリズムはハイレベルでは、探索過程での多様性を提供します。プロセスの早い段階で、最終的には最適でない可能性のある特定のアプローチにズームインするのではなく、持っている可能性の広大な配列を探索し続けることを確実にします。特に本当に難しい問題を解決し、新しい科学的発見をすることを考えるとき、どのアプローチが正しいかを事前に知る方法はありません。
だから異なる可能性を探索し続けることを確実にする必要があります。そして進化アルゴリズムは、この目的にぴったり合う良い技術的ツールです。また、それらで遊ぶのはとても楽しいと思います。RLアルゴリズムをセットアップしようとすると、アルゴリズムによって異なりますが、時間がかかります。でも進化アルゴリズムならすぐにできます。APIがあり、呼び出すだけです。いろいろ試せて楽しいです。
アレックス、アーキテクチャの概要を教えてもらえますか?多くの人はFunSearchなどに詳しいと思います。これはその進化版だと思いますが、冗談のつもりで言っていますが。全体がどのように機能するか簡単に説明してもらえますか?
もちろん。私はファンサーチを知っている前提で話すべきでしょうか、それとも基本から始めるべきでしょうか?本当に本当に簡単に説明してください。段階的に複雑さを明かしていきますので。まずは広く、そして徐々に詳細に入っていきます。
理解しました。また、論文からの図表やあなたが提供するその他のもの、アニメーションやビジュアル補助も表示します。素晴らしいです。
AlphaEvolveの高レベルアーキテクチャは、基本的に進化的手法です。私たちは進歩を評価する方法がある問題にのみ焦点を当てています。システムが提供するコードの断片について、それが良いかどうか、どれだけ良いかを自動的にテストすることができます。
これが、私たちが得た結果のおそらく重要な側面です。この評価者を持つことは、一方ではそれを持つことができる問題のセットに制限されますが、他方ではかなり広範囲の問題です。そして多くを与えてくれます。素早く反復し、フィードバックを得ることができます。
特に与えてくれるのは、LLMの創造性をシミュレータと比較できることです。LLMは幅広いことを提案しますが、そのうちのいくつかは愚かで、いくつかは素晴らしく、いくつかは本当に奇妙です。そして評価者を持つことで、それらをフィルタリングし、実際に重要で物事を改善しているものを特定することができます。
そして、この評価者とのLLMのペアリングは、進化的パイプラインで包まれています。これは反復的に最も有望なコードの断片を特定し、それらを改善することに焦点を当て、LLMに公開します。これは「以前試したこと、これは機能する、これは機能しない、新しいことを提案してください」というものです。
最後の成分は規模です。これらのことを並列に行うことです。評価者が必要だと言いましたが、それによって問題のクラスが制限されます。しかし、ここで探求したい本当に微妙な制限があります。それはプログラム自体の実行です。
問題に直面します。一つは停止問題です。コードが正常にコンパイルされて即座にクラッシュせず、実行を開始するとします。しかし、1時間経過して「これは一体いつ終了するのだろう、これは私の勾配に貢献するのだろうか」と思うかもしれません。そこで、リソースが消費された後に終了させる必要があるかもしれませんが、あと5分待っていれば、神のようなアルゴリズムの答えが得られたかもしれません。
この根本的な問題、どうやって対処しますか?この制限を克服する方法をどのように考えていますか?理論的には、もちろん正しいです。アルゴリズムをより長く実行した場合に何が起こるかを知ることはできません。しかし実際には、私たちが調査したアプリケーションでは何の問題もありませんでした。
具体的に言えることは、時間制約が問題定義に組み込まれている方法で問題を枠づけることがよくあります。例えば、数学のこのオープン問題を解決しようとしていて、この問題で進歩できる検索アルゴリズムを探しているが、10分以内に進歩できるアルゴリズムを探していると言えます。それが問題定義の一部です。
そして言語モデルが行う提案を評価するとき、それらを10分間だけ実行します。ですから、それらの10分以内に何かを起こすことができるアルゴリズムの空間のみを探索しています。確かに、より長く実行した場合にさらに良い結果を出すアルゴリズムを見逃す可能性があります。それは原則的に排除できない点です。
しかし実際には、それは私たちにとって問題ではありませんでした。この質問は内部研究にも根本的なものだと思います。人間として、自分の問題への取り組みをいつ止めるべきか、どうやって知るのでしょうか。もしかしたら、あと1ヶ月頑張れば解決するかもしれません。難しいですね。わかりません。秘書問題のようですね。
この分野で多くの人にインタビューして魅了されることの一つは、多様性、保存、新規性、セレンディピティ、開放的思考、創造性について話すことです。私たちは解放され、創造的な飛躍ができるアルゴリズムを設計したいと本当に思っています。
デミスは創造性のはしごについて話しました。発明的創造性が本当に必要なものです。私の理解では、あなたのシステムは少しカーソルの自動化バージョンのようなもので、これらのコードゲートがあり、そこに初期解を入れます。少しのドメイン知識があります。
例えば、Googleのハードウェアでスケジューリングを行うためにビンパッキングアルゴリズムを使用することにしたという例がありました。そして問題は、開始解によって、私たちが作ることができる飛躍の種類のコーンがあるということです。システムが本当に想像力豊かな飛躍をした例について話してもらえますか?
はい、お話しできます。確かに、システムの興味深い特徴の一つを特定しました。最初に伝えることによって、プロセスを導くことができます。かなり具体的な指示を与えたり、特定のタイプの解から始めるようにシステムに依頼すると、通常はそのアイデアまたは初期解の可能性を最大限に引き出し、それをどのように調整して最大限の可能性に到達できるかを見ます。
時にはこれが正しいアプローチです。問題が特に難しいか特定の特徴を持っている場合などです。しかしデフォルトでは、本当に空っぽの解から始めます。AlphaEvolveにコードスケルトンを与え、すべての関数がほとんど空の実装になっています。ゼロを返すか偽を返すだけです。
そして完全に創造的にさせます。ベースLMSの背景知識に頼るだけで、あらゆる方向に探索できます。進化アルゴリズムは、探索を続けながら多様性を保つことを意味します。
具体的な例として、AlphaEvolveを行列乗算のアルゴリズム発見に適用しました。実際にはメタ的なことで、アルゴリズムを見つけるアルゴリズム、勾配ベースの検索アルゴリズムを設計するよう依頼しました。
その最初のアルゴリズム、検索アルゴリズム内で、私たちは本当に単純なコードスケルトンから始め、ほとんど何も与えませんでした。基本的に勾配を使用するように伝えただけです。そして複雑な損失関数と更新関数を書くことができました。これらには様々な動作にペナルティを与えることや、完全に予期しない方法でランダム性を導入するなど、あらゆる種類のトリックがありました。
これは、人間が書く可能性のあるコードの種類ですが、彼らは実際にこの特定のコードを書くことを考えたでしょうか。これは少なくとも私にとって「なるほど」と思う瞬間でした。これは人間のようなことをしていますが、明らかに人間が試みることではありません。
もう一つ面白い話は、これは論文に追加しなかったと思います。形式が適切ではなかったからかもしれませんが、アダムと私たちのチームはシステムに人間からのアドバイスを与える興味深い実験をしました。数人の人に「この問題について2分間考えてください」「この問題について30分間考えてください」と依頼し、比較してメモを書いてもらい、それをシステムに与えてプロセスを導きました。そして結果を比較しました。
マテオが言ったように、アイデアからすべてのエッセンスを絞り出すようなものです。LLMをそのような方向に導くので、アイデアのエッセンスを保存します。しかし多くの小さなことを最適化します。多くの場合、それは知的な方法です。このケースでは「いろいろ試してみて、一つが上手くいく」というような感じです。でも見ていると面白いですね。
現在、アーキテクチャには2つの基本知識源があります。一つはベースモデル自体です。これは明らかに圧縮されており、コードやアルゴリズム、数値レシピなど、トレーニングされたコーパスすべてを含んでいます。もう一つは、論理のゲートされた部分などを入れる開始プログラムです。
ほぼ中間地点となるような拡張の余地はありますか?例えば、他の問題で非常に効果的であることが知られているモジュールやコードの断片を含む二次データベースで、同時に活用できるようなものです。
はい、いくつかの点についてお話しします。あなたは知識のシステム内の2つのソースについて言及しましたが、議論の余地があるかもしれませんが、3つ目のソースがあると思います。それはシステムが自分自身の知識を拡張することを決定できるということです。
具体的に言うと、システムがアルゴリズムを提案し、そのアルゴリズムがマシン上で実行され、そのアルゴリズムを実行した結果を見ることができます。十分に高いレベルで考えると、システムは「このアルゴリズムを実際に実行するとどうなるかという知識の断片を得たい」と決めることができるということです。これは重要なコンポーネントです。
しかし、おそらくあなたの質問の本質に近づくと、確かに役立つモジュールの人間によってキュレーションされたデータベースなどがあるかもしれません。しかし、さらに面白いのは、このデータベースがシステム自体によってキュレーションされる可能性があることです。
これはAlphaEvolveについて考えているアイデアですが、論文ですでに実装され言及されている関連するアイデアがあります。それは一般的に有用なモジュールのキュレーションされたセットを構築するのではなく、うまく機能する傾向があるプロンプトのキュレーションされたセットを構築するというものです。
論文で説明されているメタプロンプティングというアイデアがあり、実際に言語モデルに自分自身のプロンプトを提案するよう依頼します。私たちが何をしようとしているのか、この特定の問題を改善するための進化的アルゴリズムを試みようとしていることを伝え、このプロンプトでプロンプトするつもりだと伝えます。しかしその前に、このプロンプト自体の修正を提案してくださいと依頼します。そして、この目的のためにうまく機能するプロンプトのセットをキュレーションします。
精神的には同様のアイデアですが、プログラムではなくプロンプトをキュレーションしています。しかし両方とも私には意味があります。
キースが進もうとしていた方向を理解しているなら、今あなたが説明したことはすべて魅力的です。それは多様性と発散を生み出すためのメタ学習のさまざまな形式です。しかし、次の1兆ドルのビジネスは、プログラム学習のように、ライブラリを構築することかもしれないと感じています。
現在、特定の目的のための関数のこのライブラリを拡張していますが、ライブラリ自体が新しい石油だったらどうでしょう。これらの学習したプログラムの間に強い堅牢性があり、それらが何らかの類似関係を通じて他のプログラムや他のドメインに一般化されたらどうでしょう。新しい言語モデルのパラダイムが実際にはある種のプログラムデータベースだったとしたら?それは機能すると思いますか?
それは魅力的なアイデアだと思います。私たちは最初の兆候を見ているかもしれません。現在は深さの方向に進んでいます。問題に深く焦点を当て、その問題を解決しようとしています。しかしその道筋の中でさえ、例えば行列乗算に取り組んだとき、AlphaEvolveを異なる時間に実行すると、わずかに異なるアルゴリズムを発見し、それらのアルゴリズムを取って将来の実験を初期化するのに役立つ技術であることがわかりました。
それは過去に有用だったもののデータベースを構築して、将来の問題を解決するためのインスピレーションとして役立てるという最初のステップです。アレックスはもっと考えがあるかもしれません。
もう一つ似たようなことが起きていると感じているのは、必ずしも私たちが行ったすべての実験で生成したプログラムのデータベースを保存したり使用したりすることではなく、システムのユーザーとしての私たち自身の人間の直感が確実に進化しているということです。
コンサルタントのような感じです。私たちはGoogleの多くのチームと協力して、AlphaEvolveで物事を実行するのを支援しています。そのプロセスを通じて、何が機能し、何が機能しないか、次に何を試すべきかについて多くの知識を得ます。あなたが述べていることと少し似ていますね。
AlphaEvolveが自分自身のリポジトリを持っているのをほとんど想像できます。内部であろうと、もしかしたら親切にGitHubに公開してくれるかもしれませんが、それは常に進化し、自分自身のリポジトリに貢献し、維持し、カテゴリ分けを行っています。人々はそれを見ることができます。AlphaEvolveがより良い検索アルゴリズムを考案したかどうか気になります。検索エリアをチェックして、そこに何か新しいものがあるか見てみましょう。
技術的には、これに使用を見ていません。それはどのようにしてそれを実現するかという組織的な問いかもしれません。すでにそこにある特定の技術的要素は、タスクの範囲にわたってうまく機能するプログラムを探していることです。
現在、この範囲は限定されているかもしれませんが、私たちは制約された範囲に関心があるからで、それを拡大することを妨げるものは何もありません。具体的には、例えば異なるサイズの行列乗算アルゴリズムを同時に見つけることができる検索アルゴリズムを探しています。
そこにはある種の一般性がありますが、「行列乗算だけでなく、他の検索問題にもわたってうまく機能する検索アルゴリズムを探しましょう」と言うことを妨げるものは何もありません。
行列乗算のことについて考えてみたいと思います。というのも、それがこのビデオの見出しのフックだからです。この素晴らしい結果があります。56年前にこのシュトラッセンという人が大きな結果を出しました。今、AlphaEvolveがそれを打ち破りました。ここには探求すべきことがたくさんあります。
明らかに全体を説明してもらいたいのですが、興味深いことの一つは、最大でこれは複雑な2D行列乗算だということです。ランク6まで行きましたが、それは少しオーバーシュートでした。ランクが上がるにつれて少し不安定になり始めたが、さらに改善したという興味深い特性がありました。そのストーリー全体を話してもらえますか?
まず高レベルの絵から始めましょう。行列の乗算は非常に基本的な操作です。私たちの何人かは高校でこの操作を教わります。高校で教わるとき、行列を乗算する非常に特定の方法があります。毎ステップで、一つの行列から1行と別の行列から1列を取り、これら2つのスカラー内積を計算し、それが出力の1つのエントリになります。
これは出力行列の各要素に対して、この1つの内積を行う必要がある特定のアルゴリズムです。長い間、人々はこれが明らかに行列を乗算する唯一の方法だと考えていました。どうしてもっと良いものがあるはずがあるでしょうか。
そして1969年にフォルカー・シュトラッセンが言及されました。それは数学界に本当に衝撃を与えました。実際にはより速い方法があるという論文を書きました。すでに2×2行列を乗算する場合、つまり最小の非自明なケースでは、高校の方法でやると8回の乗算が必要です。出力行列には4つのエントリがあり、2×2行列なので、各内積には2回の乗算が必要です。ですから4×2は8です。
しかしシュトラッセンは、わずか7回の乗算しか必要としない巧妙な方法を考案しました。それは魔法のような手順で、最初の行列と2番目の行列からエントリの組み合わせを構築し、それらを乗算し、7つの乗算結果を魔法のようなキャンセレーションが起こる方法で組み合わせることができます。そして結果は正確です。
これは1969年に大きな驚きでした。そして研究の全く新しい領域を開きました。「2×2では実際に8の代わりに7ができる。」そして人々はすぐにその小さなケースでは7が実際に最適であることを証明しましたが、3×3行列についてはすでに、それは笑うほど小さいかもしれないと思うかもしれません。
確かに人々は3×3行列を乗算する最良の方法を解明したに違いありませんが、まだわかりません。今日でも、2つの3×3行列を乗算するには少なくとも19回の乗算が必要であることを知っていますが、私たちが持っている最良のアルゴリズムは23回使用しています。そこには19と23の間のギャップがあり、人々は何年もそれを埋めることができませんでした。
その理由は、行列が非常に小さくても、それらを乗算する可能性のあるアルゴリズムの空間が完全に膨大だからです。計算的には、これを網羅的に行う希望はまったくありません。3×3ですでに解明されていないというのは狂っていますね。
3×3の最良のアルゴリズムは23回の乗算を使用しています。それは少なくとも高校で教わるアルゴリズムよりも良いです。高校のアルゴリズムでは27回になります。少なくともそれを改善する進歩がありました。
しかし、4×4については、次のサイズですが、知られていた最良のアルゴリズムは、シュトラッセンのアルゴリズムを2回再帰的に適用するだけでした。シュトラッセンは2×2行列用なので、4×4行列がある場合、2×2ブロックのブロック行列と考え、各ブロック自体が2×2行列です。そのためシュトラッセンを2回行うことができます。シュトラッセンは7回の乗算が必要なので、2回行うと7×7で49回の乗算になります。
これが1969年以来の唯一の4×4行列を高速に乗算する方法として知られていました。ここで私たちの仕事が関係してきます。2年前、AlphatensorというFことを構築しました。これは行列乗算アルゴリズムを発見するための特殊な強化学習エージェントでした。
そのエージェントは実際により高速なものを見つけましたが、ブール行列のみに対してでした。これは、すべてのエントリが0または1である行列を乗算したい非常に特殊なケースです。乗算をするとき、すべてをモジュロ2で行います。そのケースに対してはAlphatensorがより高速なものを見つけました。しかしそれ以外では、任意の数字を持つ行列の通常のケースでは、シュトラッセンを2回行い、49回の乗算を使用することよりも良いものは知られていませんでした。
そこでAlphaEvolveをこの設定で使用したとき、本当に興奮しました。Alphatensorで長い間試していたので、49よりも良いものが見つかるとは期待していませんでした。完全を期すために実行しただけです。サイズ5や6までのすべてのサイズで試したという表を論文に載せたかったのです。
そして驚くべきことに、49ではなく48回の乗算を使用するより高速なアルゴリズムを発見しました。私のチームメンバーの一人がチャンネルでこの結果が出たようだというメッセージを送ってきたとき、信じられませんでした。三重にチェックしましょうと言いました。しかし実際に正しかったのです。
そして実際に一つの本当に魅力的な特徴があります。行列を乗算することを考えるとき、通常、エントリが実数または整数である行列を乗算したいと思います。エントリが複素数である行列を乗算するケースはおそらく一般的ではありませんが、実行列は複素行列の特殊なケースです。
複素行列を乗算できるアルゴリズムを見つけると、実行列にも適用できます。これは単なる一般化です。ここで面白いのは、例えばニューラルネットワークを訓練するときのように、実行列の乗算に関心があるとします。非常に一般的なユースケースです。
最初は実数を使用するアルゴリズムを探すかもしれません。しかし「複素アルゴリズムを探したらどうだろう」と言うことができます。一見すると、それはより困難なタスクだと思うかもしれません。なぜならそのアルゴリズムは実行列だけでなく複素行列にも適用されるからです。しかしタスクをより困難にすることで、実際にAlphaEvolveは複素数を使用するアルゴリズムを見つけることができました。それは複素行列と実行列の両方に適用されます。
それが私たちが最も興奮した結果です。あなたの質問であったように、確かに私たちはAlphaEvolveを他の行列サイズにも適用しました。実際、5×5、6×6のような大きなケースになるにつれて、問題は非常に迅速に難しくなります。
それは行列のサイズの二次の指数関数のようなものです。なぜなら、時々視覚化に表示するキューブ、分解しなければならないこのテンソルは、乗算する行列のサイズとともに二次的に成長するからです。4×4行列の場合、16×16×16のサイズのテンソルを扱う必要があり、5×5行列では25×25×25です。非常に速く爆発的に増えます。
より高くなるにつれて、あるポイントであなたの方法はそこまでスケールしなくなります。しかし私たちが示したのは、AlphaEvolveがAlphatensorよりもさらにスケールするということです。スケーリングの方向に進歩があります。
そして明確にしておきたい重要な点は、これらすべてのケースでは、行列乗算の小さなケース、2×2、3×3、4×4を見ていますが、これらのアルゴリズムをこのサイズの小さな行列にのみ適用できるという意味ではありません。シュトラッセンのアルゴリズムをすでに言及したように、それらを再帰的に適用することができます。行列がある場合、それをブロック行列として扱い、これらのより小さな行列用のアルゴリズムを再帰的に適用します。
非常に魅力的で、本当に楽しい領域で作業するのは楽しいです。3×3になると扱いにくくなるのは、ほとんど魔法のようです。数学でそのようなケースに常に魅了されます。1次元、2次元、3次元まではできるけれど、4次元になると全く異なり、完全に崩壊します。
しかし、あなたが高くなるにつれて、AlphaEvolveが現在のパフォーマンスに一致できず、実際にはより悪いアルゴリズムを見つけたケースもありました。それは何に起因しますか?
論文で示している最大のケースである6×6行列の場合、非常に明確な理由があります。それは、問題についてのドメイン知識を与えずにAlphaEvolveを適用しようとしたということです。AlphaEvolveが一般的なツールとしてどれだけ優れているかを見たかったのです。基本的にゼロから始めました。
行列乗算アルゴリズムを特に開発するためのトリックについては何も教えませんでした。6×6行列乗算の既知の最良のアルゴリズムは、非常に特定の帰納的バイアスを使用しています。つまり、特定の対称性を持つアルゴリズムを探しています。アルゴリズムに規則性を持つアルゴリズムのみを探しているということです。
この規則性を持つアルゴリズムのみを探すと、それははるかに小さな検索空間です。そのため、その検索空間では、はるかに大きなサイズにスケールすることができます。しかし私たちはこれを試みませんでした。私たちの検索にこの対称性を組み込むことはしませんでした。私たちは無制限の形式のアルゴリズムを探しました。
それが、その場合に既知の最良のソリューションに一致しなかった最も明確な理由だと思います。
この論文で私を最も魅了したことの一つは、抽象化と表現に非常に興味があります。あなたが先ほど挙げた例でも、シュトラッセンは一種の動的プログラミング定式化として学習されました。つまり再帰的に使用されました。
私は自問しています。これは深い抽象化の証明なのか、それともシュトラッセンの知識がその局所的な近隣にあり、それを構成しているような表面的な一段階の抽象化なのか。理想的な世界では、アルゴリズムに抽象的な基底知識を構成させたいです。つまり、柔軟性を高めるために可能な限りスタックの下にある知識です。
この表現をどのようにモデル化したのかを紹介すべきです。異なるアプローチがありました。解決策を直接モデル化することができますし、コンストラクタ関数をモデル化することもできます。つまり、解決策を構築する関数自体を学習していることになります。行列乗算で行ったように、検索アルゴリズムを学習することもできます。そして共進化の可能性についても話されていました。
これは、最適化ターゲットの設計方法に人間の設計と直感がある意味で驚異的です。しかし、これらの問題の多くを表現する方法とそれらがどのように関連しているかについてはあいまいさがあります。それについて説明していただけますか?
まず、私たち自身がここですべての答えを持っているわけではないことを率直に言いたいと思います。私たちはこのツールAlphaEvolveを持っており、それをここや他の場所に適用できることがわかります。
AlphaEvolveについてではなく、私たちはこの一般的なツールを持っており、それをここやこことこことに適用できることを見ています。そして各問題に対してこのツールを適用する異なる方法がありますが、最初は直感だけです。このツールを適用するための正しい抽象化のレベルは何かという直感です。
ティムが言及したように、時には解決策を直接探すのが最善の方法です。時には解決策を構築する単純なコンストラクタを探します。ここで例として、解決策を探していて、それが非常に規則的であると考えているとします。おそらくフラクタルのように見えるかもしれません。それが典型的な例です。
フラクタルを記述するには、非常に短いコードでそれを行うことができることを知っています。その場合、フラクタルの記述を、ピクセルのグリッドとしてではなく、そのフラクタルを生成する短い関数の断片として探すことが意味をなします。しかし他のアプリケーションでは、解決策は非常に異なり、そこまで規則的ではないかもしれません。
そして解決策を直接探すか、解決策を見つける複雑な検索アルゴリズムを探すかもしれません。そして時には解決策を徐々に洗練するアルゴリズムのシーケンスが欲しいかもしれません。これが共進化アプローチです。
最初は、どれが最もうまく機能するかは全く明確ではありません。それは確かに将来の仕事のカテゴリーにあり、その理解を構築することです。しかし肯定的な一面は、AlphaEvolveはすべての異なる定式化で簡単にセットアップできることです。
実際には、異なることを試して、何が最もうまく機能するかを見ることがよくあります。あなたはすべての答えを持っていないなんて信じられません。冗談です。
真剣に言うと、ティムが言及したように、AlphaEvolveが現在実行されているこれらの3つのモードは、数学者を思い出させます。数学者あるいは少なくとも証明が行われる主な方法は3つあります。演繹、構築、または列挙によって行われます。それらはこれら3つの方法とほぼ並行しているように思えます。そこには何か深い関係があるように感じますが、見逃していることがあるのかもしれません。
その深い関係について何か考えがありますか?それは興味深い観察です。何か言いたいことがありましたか?
建設について考えるとき、それはAlphaEvolveが最も明らかに適用可能な空間です。論文で示しているのは、オープンな問題があり、より良い建設物を見つけることでその問題に進歩をもたらすような場合です。それはそのままで適用可能です。
しかし他のタイプの数学的問題に進歩をもたらす他のアプローチについて考えるとき、例えば問題が明らかに建設に関するものではないとします。例えば不可能性の結果、つまりある意味での下限を証明したいとします。
そこにはハイレベルで取ることができる2つのアプローチがあるかもしれません。一つは、建設のように見えない問題が、正しい方法で枠組みを設定すると建設になることがよくあるということです。例えば、線形計画法のための双対性定理があります。プライマルと双対の間の関係です。
だから、実際に証明しようとしている側を切り替えて、建設的ではない問題を建設的なものに変えることがよくあります。それが基本的な答えですが、よくできることです。
より難しく一般的な答えは、時には建設ではなく証明を探していることがあるということです。証明もアルゴリズムと考えることができます。それは文を証明するために実行する必要がある一連のステップです。
これはまだアルゴリズム発見の空間内にあり、私たちが考えることができるものです。しかし、この論文では行っていない、克服しつつある技術的なハードルがひとつあります。
証明であるアルゴリズムを探している場合、証明は最終的に正しいか正しくないかです。報酬はバイナリで、0か1です。今のところ、徐々に進歩できる問題に焦点を当てています。徐々にスコアを向上させ、単一のステップで0から1に切り替えるのではなく、徐々に良くなり、最終的に既知の最良の建設を改善するというものです。
しかし、人間として証明を書くとき、同じ問題に直面します。証明は実際に完成したときにのみ正しいです。しかし人間として証明に取り組むとき、「実際に進歩したか」、「問題について理解を構築したか」といった直感があります。
もしそうなら、それは最終的な証明の一部になる可能性が高いように思えます。ハードスコアではなくソフトスコアを使用する可能性を探索してきました。おそらく言語モデル自体がフィードバックを提供することができます。問題解決に向けて進歩したように見えるか、といったことです。
これらのバイナリ問題、例えば証明を探すといったことに取り組む道筋を見ていますが、この種の技術ですでに行ったことではありません。将来的には可能性として見ています。
この論文には多くの驚くべきことがあります。あなたがたがこの仕事をして論文を完成させた後、または少なくとも研究を完了した後、最も驚いたことは何だったのか気になります。アレックスから始めましょう。この仕事から「これは予想していなかった」と思ったことは何ですか?
このようなシステムでどれだけ進歩できるかについて、驚き続けています。数年前にFunSearchから始めたとき、どこかのチャットボットインターフェースにアクセスして、オープンな問題を解決するよう依頼しても、基本的に何も得られませんでした。
今日でも同じことを試すと、おそらくもっと意味のあることを言ってくれるでしょう。数分間考えて、多くの合理的なアプローチを提供してくれるでしょうが、通常、チャットボットにオープンな問題を解決するよう依頼すると、それを実行してくれるという経験はないです。
同じツール、同じLLMをこのような反復的な進化のループで使用することで、それらからはるかに多くを引き出せることは驚くべきことです。新しいことを解決するたびに、本当に一種の興奮と驚きを感じます。
最もあなたを驚かせたことは何ですか?
私にとって本当に新しいことは、アプローチの一般性です。単に科学的なオープン問題にわたる一般性だけでなく、科学的目的のためのツールを構築して、それをそのまま実世界の課題に適用し、大きな影響を与えることができるという経験が私にはありませんでした。
通常、科学技術を実世界で実際に役立つものに変換するためには、研究作業の全体的な体系が必要です。通常、取り組まなければならない多くの課題があります。そしてここでは、同時に数学や科学の問題に新しい発見をする能力と、Googleの重要な計算スタックに直接展開できるアルゴリズムを発見する能力を持つツールがあります。これは確かに以前に経験したことがなく、おそらく予想もしていなかったことです。
Arcチャレンジとライアン・グリーンブラットという人物をご存知ですか?彼はプログラムを生成するために言語モデルを約3万回サンプリングするという有名なアプローチを行いました。
論文で述べたように、評価者があるという興味深い空間にいます。これはハルシネーションを回避できることを意味します。この検索空間に金の塊があることは驚きではありませんか?もちろん、私たちのほとんどは言語モデルを一回のサンプリングで使用しているだけです。貪欲サンプリングです。そして今、非常に洗練された検索ルーチンを行うことができます。
しかし実は、皆さんは非常に多くの興味深いパラダイムを混ぜ合わせています。メタ学習、進化、多様性保存、プログラム学習、ライブラリ学習などについて話しています。しかし、単純に説明すると、それは言語モデルをサンプリングすることとどう違うのでしょうか?言語モデルを10億回サンプリングできるとしたら、あなた方がやったAlphaEvolveはそれとは異なるカテゴリーにあるのでしょうか?
もちろんです。まず、今言われたことについての個人的な観察をさせてください。それが正しい考え方です。チャットウィンドウで言語モデルに繰り返し尋ねるだけでは、物事をスケールアップしたときの能力について完全に誤った考えを持つことになります。
この種の進化的アプローチに取り組み始めたとき、最初は何ができるのか非常に懐疑的でした。チャットウィンドウで試すだけで、いくつかの単純なアルゴリズムを書くように依頼したのですが、最初はうまくいきませんでした。魔法は本当に物事をスケールアップするときに起こります。
しかし、スケールアップするにはさまざまな方法があります。一つは、同じ質問を繰り返し尋ね続けることです。確かに、いくつかの良い部分はあるでしょうが、それらは完全な解決策ではありません。それらの良い部分を見つけて、その後の反復で繰り返し構築していくことが本当に重要です。それが進化的アルゴリズムを通じて得られるものです。
非常に定量的に話すと、論文のアブレーションで進化を排除しようとした比較があります。予想通り、それははるかに悪く機能します。
おそらくそれについての直感を構築するための良いテストケースは、元のFunSearch論文からの例です。そこでは非常に単純で小さな言語モデルを使用しました。問題についてのコンテキストさえ提供しませんでした。言語モデルが実際に問題について考え、一生懸命考えることで問題を解決するとは決して期待していなかったからです。
言語モデルから得ることを期待していたのは、いくつかのこと、たくさんのことを試してみることだけでした。しかし問題は、最終的な解決策はそれほど長くはありませんが、おそらく50行のPythonであり、考えもせず、問題さえ知らなければ偶然それに出くわすことはほとんどありません。
単にPythonのことを試していて、特定の種類の固定した50行のPythonプログラムをどうやって生成しますか?だからそこでは徐々に改善する必要があります。何が機能するかを確認し、その領域、近隣でわずかに修正してみることが絶対に不可欠でした。
そのヒルクライミングについてもう少し話してもらえますか?一見すると、ヒルクライミングが不可能に思えるような離散的な問題にヒルクライミングを組み込む巧みな方法を見つけました。
異なるプログラムのような離散的な問題を取り、それらはもろくデジタルなものですが、どのようにしてそのプロセスにヒルクライミングを組み込むのですか?
多くの問題では自然なヒルクライミング報酬があります。例えば、行列乗算アルゴリズムを見つけるためのこの勾配ベースの方法を行うとき、自然な報酬は損失でしょう。解決策にどれだけ近いかということです。しかし残念ながら、それは必ずしもうまく機能するわけではありません。
私たちが何度も見つけたのは、どのような種類の補助的な報酬や補助的な信号を思いつくことができるかについて、ある程度創造的である必要があるということです。
特に行列乗算の場合、行列サイズのカリキュラムがあれば、簡単な勾配ベースの方法でさえ、小さいものを解くことがおそらく幾分か簡単になるということを認識することが非常に役立ちました。そして、解く確率に頼ることができます。例えば、あなたのものを10回実行し、実際に探しているものを何回得られるかを見ます。それがあなたの信号になります。
そしてカリキュラムがあるので、「まず2×2を解決したい。それが確実になったら、3×3を解決することを試みながら進化を続けたい」と言うことができます。それは特定のケースで本当に役立ちました。
しかし一般的には、物事を試し、これらの補助的な補助的なものを考え出す方法についての直感を構築します。それは非常に問題固有です。
もう一つの正交的な点を追加すると、多くの場合、一つの特定の問題を解決しようとしています。そしてそれには関連する報酬があるかもしれませんし、ないかもしれません。しかし、同時に他のことも最適化することが有用です。
例えば、特定のサイズの行列乗算を見つけたいとします。他のサイズのアルゴリズムも見つけたいと思います。なぜなら、そうすることでアルゴリズムの空間をより広く探索することができるからです。
多くの場合、あるマトリックスサイズに対して開発したアイデアを、後で実際に気にしているマトリックスサイズに翻訳することができます。しかし、最初から気にしているサイズだけを最適化していたら、そのアイデアは最初は役立たなかったかもしれません。まず、関連する問題に対してそれを開発し、さらに洗練する必要がありました。
私が言おうとしている全体的なポイントは、たとえ本質的には気にしていなくても、類似した他のタスクを導入し、それらを改善しようとすることがしばしば意味をなすということです。
プログラム合成の一般的な利点について触れていただけますか?最近、ケビン・エリスにインタビューしました。彼はDreamcoderを発明した人物で、魅力的な人物です。ジョシュ・タンネンバウムの下で働いていました。
彼が認知科学の観点から説明したように、多くのプログラム帰納は説明に関するものです。理解可能性に関するものです。読みやすさに関するものです。Googleのデータセンターでジョブのスケジューリングを行うという素晴らしい例がありました。
これは一種のマッチング問題であり、以前の実験では解読不可能な強化学習モデルのようなものを使用していました。それはデバッグできず、理解できませんでした。そして今、美しい3行のコードがあります。しかし、それでも読みやすいかという疑問があります。
読みやすくないものを見つけましたか?AlphaGoの「手37」があり、それは発見の有名な例で、少し奇妙で、おそらく私たちは発見しなかったでしょうが、おそらく理解しました。おそらく理論を構築できました。これらの発見のいくつかを見るとき、それらの発見から導き出すことができる深い抽象的な原則を見つけていますか?それについてすべて説明してください。
実際には広いスペクトルに広がります。AlphaEvolveでは、非常に単純なアルゴリズムを発見することがあり、それは人間がすべての入力に対して実際に正しいことを検証できるほど単純です。
あなたが言及したように、それらは非常に単純で、ほとんど即座に本番環境に提出することができます。さらなるチェックは必要ありません。それは、ニューラルネットワークをデプロイしようとする場合と完全に異なるリーグです。それを再トレーニングし、ホスティングし、推論を実行するためのリソースなど、多くのことを考慮する必要があります。
確かに、科学的発見においてはこの非常に単純なレジームにいることができます。また、明示的に解釈可能なプログラムを探すレジームにいることもできます。AlphaEvolveに埋めるよう依頼するスケルトンを設定することで、デザイン上、かなり単純であることを期待できるような方法でこれを行うことができます。
おそらく最も明確な例は、すでにFunSearch論文にあります。そこでは特定の数学的対象である大きな集合を探しました。それは見て、調査できる関数を見つけました。そして、この関数は興味深い方法で数字4を使用していることに気づきました。
forループのインデックスを見るとき、インデックスをmodulo 4で見るだけです。そして配列にインデックスを付けるとき、位置Iと I+4と I+8でインデックスを付けています。何が起こっているのだろうと思いました。
そしてコードを調査するだけで、数学的洞察や数学的仮説と呼べるものを実際に開発することができました。その仮説は、その後結果を改善するために非常に重要であることが判明しました。
コードからその洞察を取り、次の実行にその洞察を組み込み、はるかに良い結果を得ました。確かに、これは起こり得ます。しかし、一部のアプリケーションでは解釈可能性をそれほど気にしないかもしれず、その場合、AlphaEvolveは非常に複雑なアルゴリズムやアルゴリズムのシーケンスを開発することもできます。
その場合、この複雑な検索ヒューリスティックがどのように正確に機能するかについての全体的な理解は持たないかもしれませんが、気にするのは最終結果であり、最終結果はできる限り良いものであるということです。
このスペクトル全体を過ごすことができます。アレックスも私たちのグループからではなく、別のチームがFunSearchを認知科学に適用して解釈可能な行動プログラムを発見するという作業について言及するかもしれません。それは実際に行うことができる非常にクールなアプリケーションです。
また、医療応用の例に戻ると、私たちはこの勾配ベースの機械学習パイプラインを構築しました。これらのアルゴリズムを探すためのものです。そこでAlphaEvolveによるコード変更の提案を見ると、おそらく2種類の変更、2種類の反応が見られるでしょう。
一つは「そうですね、それは意味があります」というものです。これは通常、機械学習の場合です。機械学習の論文を読むと「ああ、これは理にかなっています。それはいいアイデアです。私自身もそうしたかもしれません」と思うでしょう。
そして通常、問題はアイデアを思いつくことではなく、実際に機能するアイデアを思いつくことです。アイデアは比較的安いものです。理にかなうことはたくさんありますが、実際に機能するのはそのうちの5つだけです。
だから、理解できて関連付けられるアイデアを提供してくれますが、それらのうちどれが実際に機能するのかを知ることは難しいです。もう一つのタイプのアイデアやコード変更は、複雑すぎるため試すこともないものです。
時にはそれには良い理由がありますが、悪い理由もあります。例えば、行列乗算の場合、量子化損失があります。なぜなら、解が整数であるか、正確な算術で正確に検証できるように、指定された範囲内のある種の分数であることを望んでいるからです。
そして量子化損失があり、これは解をその整数のセットに向けて駆動します。通常、人間としては、その量子化項の重みを調整するだけを試みるでしょう。または最悪の場合、重みのスケジュールを調整するかもしれません。最初は少なく、最後に多くするというように。
しかしAlphaEvolveが行ったのは、量子化損失の時間とともに進化する形状全体を生み出すことでした。これもまた意味がありますが、「これは機能しないだろう」とは言いませんし、「これは間違いなく機能するだろう」とも言わないでしょう。
しかし問題は、人間としては試すこともないということです。なぜなら、それは非常に複雑で、反復とともに時間とともに形状が変化するような複雑な関数を調整することを考えることはないからです。
それは非常に魅力的ですね。それは人間のプレイヤーがAlphaZeroなどからチェスの新しい洞察を得ることができる方法と似ています。
アレックス、あなたはこの技術の幅広い応用に驚いたと言っていましたね。あなたはロボット工学での以前の作業をしていると思いますが、コードの評価がより困難なケースについてはどうでしょうか?
ロボットの場合、仮想現実での訓練ができるかもしれませんが、ある時点では単に森に放り出して、反対側まで移動できるかどうかを見るしかありません。
自動化された検証と複雑な実世界のシナリオの間のギャップを埋め、それでもAlphaEvolveを適用できるようにする方法について、どのようにお考えですか?
人々がやっているのを見た一つの方向性は、あいまいな報酬関数をコードに変換することかもしれません。例えば、達成したい最終状態の画像によって定義される報酬関数があるとします。または、何をしたいかという自然言語の説明によって定義される報酬関数があるかもしれません。
そして、あなたのタスクはそれをPython関数に変換することであり、それが実際にスコアを付けます。ロボットを訓練するためのRLのバイナリ報酬を持つことは難しくないかもしれませんが、報酬に対して訓練することは非常に難しいです。
人々がAlphaEvolveのようなシステムを使用して、形状のような補助的な報酬、基本的に形状報酬を提供するPythonコードの断片を見つけようとしているのを見ました。そのバイナリ報酬に向かって駆動し、学習を実際に高速化します。それは方向性として非常に理にかなっていると思います。
これがあなたの質問に答えているかどうかわかりませんが。
手続きの効率に関しても考えています。例えば、論文で言及していたように、生成されるプログラムの多くは即座に失敗します。クラッシュするか、有効なプログラムではありません。評価者がいれば、それらをフィルタリングするのは比較的簡単です。
そして反対の極端では、これらのプログラムを得た後でさえ、実世界のテストケースの実行には実験や臨床試験の実行、または複雑なフィールドをナビゲートしようとするロボットが含まれ、それは損傷を受ける可能性があります。
自動検証と高価な検証の間には大きなギャップがあります。AlphaEvolveのようなシステムのためにそれを何らかの合理的な方法で橋渡しする方法について、何か考えはありますか?
私たちはそのようなことを考えています。以前に言及した、バイナリ値を持つ証明の発見のように、フィードバックのためにLLMに依頼することで、解決策に向かって駆動するための一種の形状報酬を得ることができます。
多くの場合、より高価な評価のラダーがあるからです。例えば、シミュレーションベースの評価を行いたい場合、それはロボット工学、生物学、物理学などかもしれませんが、シミュレーションベースの報酬を行い、最終的には実世界で試したいと思うでしょう。
それは再びロボットで試すことになるかもしれませんし、研究室に行くことになるかもしれません。このような評価ラダーの各段階で、前の段階で機能することがわかったものをすべて試すのではなく、優先順位付けメカニズムを持ちたいと思うでしょう。
それはフィードバックかもしれませんし、他のもの、ELOスコアなどかもしれません。これらは私たちが考えていることです。最近Googleから出てきたもう一つのプロジェクトで、これと非常に関連しているのはco-scientistsです。彼らは基本的に同じ問題、つまりハードフィードバックで評価するのが非常に難しいアイデアをどのようにスコア付けするかという問題に取り組んでいます。
そして彼らはそれを本当にうまくやっていると思います。
技術的に言えば、AlphaEvolveはすでにこれに適したセットアップになっていると思います。評価カスケードのアイデアがあり、多数のプログラムを非常に迅速に評価し、より少数のプログラムにはより長い時間をかけて評価することができます。
このカスケードを、おそらく10個のものだけを評価する余裕があり、実際に実世界に行って実験を行う必要があるというレジームまで拡張することができます。原則として、そのメカニズムはあります。
これは、手動で問題を解決しようとしたり、実際の研究者が行うことであっても、やらなければならないことです。予算は有限です。まず、より安価な方法を使用してアイデアをフィルタリングし、最も有望なアイデアだけを最も高価な評価に試す予算があります。
臨床でも同じように制限されていますね。まさにそうです。そのように行われます。
LLMについて興味があります。まず、Gemini Proにおめでとうございます。それはとても優れています。正直に言って、それがどれほど優れているかを表現する言葉がありません。
しかし、興味深い時代に入っています。AlphaEvolveでは、Flash 2.0とPro 2のアンサンブルがあったと思います。それは非常に多くの疑問を呼び起こします。
2.5で行ったらどうなるでしょうか?おそらく内部的には、私たちがまだ知らないさらに優れたモデルがあるでしょう。どれくらいの向上があるのでしょうか?
考えてみると、モデルのパレート曲線があります。Googleのモデルはそのパレート曲線上にあります。コスト、レイテンシー、パフォーマンスなどをトレードオフしています。
一つのモデルを使用している場合、AlphaEvolveのそのパレート曲線上に最適な場所があるかもしれません。小さなモデルを持ち、それを多くの回数サンプリングするべきかもしれませんし、大きな太いモデルを持ち、それをそれほど多くサンプリングしないべきかもしれません。
あるいはアンサンブルでは、それらのモデルの完璧な分布があるかもしれません。しかし、特にモデルの推論バージョンを使用すると、比較的最近まであったかどうかわからなかったものを解除したように思えます。それについてお話しいただけますか?
AlphaEvolveについて特に興奮することの一つは、ベース言語モデルを改善することで向上を得ることです。これはFunSearchでは必ずしもそうではありませんでしたが、AlphaEvolveではこれを見ています。
実際、アブレーションで定量的な確認があり、アンサンブルに2.0 Proも含めると、Flashモデルだけを使用する場合と比較して良い結果が得られます。私たちがこれらのモデルのフロンティア能力を確実に活用していることは非常に明確です。
もちろん、将来何が起こるかを保証することはできませんが、少なくとも今のところ、私たちは確実に波に乗っています。ベースモデルの改善とこの方法が得る向上を見ることに非常に関心を持っています。
関連する他のポイントは、AlphaEvolveがまだ利用していない機会を提供していることです。それはベースモデルの能力を向上させることができるシステムです。ベースモデルの能力はどこかにありますが、このシステムは、この一種のテスト時間計算パイプラインを編成することで、それをさらに良くします。
そして新しい科学的発見をするほど良くなります。それは自然な疑問を提起します。この改善された能力を何らかの方法でベースモデルに蒸留できないでしょうか?これは強化学習ループを閉じれば得られるものです。
AlphaEvolveではまだ行っていませんが、その可能性は明らかにテーブルにあります。
ベースモデルの改善について言及しましたが、論文では、AlphaEvolveを使用してAlphaEvolveのインフラストラクチャとベースモデル自体を改善することについても言及していました。
それで、あなたは最終的に再帰的自己改善ループを閉じることに成功しました。いくつかの人を刺激するかもしれませんね。それについて何か考えはありますか?シュミットフーバーは何と言うでしょうか?
私たちが行ったことについて非常に具体的にしたいと思います。私たちはGeminiの次のバージョンのトレーニングを1%高速化する方法を見つけ、データセンターでリソースを使用できるようにしました。
現在、フィードバックループを考えると、それはおそらく数ヶ月のオーダーです。Geminiの次のバージョンのトレーニングを高速化すると、それが実際に到着するには時間がかかります。しかし確かに、あなたが述べた方向へのステップを見ています。
アレックス、AlphaEvolveの再帰的自己改善について何か考えはありますか?
私は付け加えることは特にありません。マットが言ったように、それがどのように展開するかを見るのは興味深いことです。そして私たちはGeminiのトレーニングを支援する兆候を見ています。それは興奮することです。
そのスレッドでは、より多くの自律性が欲しいと思います。現在、これは人間の監督者との一種の教育的交換です。私たちは問題を選択し、評価関数を設計し、解決策をシードするなどです。
次の自律性のステップはどのようになるでしょうか?例えば、システム自体が独自の評価関数を想像し、さらに数ステップ進むことができるかもしれません。それはどのようなものでしょうか?
正直に言うと、私の視点からは、いくつかのことを自動化することはクールで興奮することですが、同時により少ない自動化に傾くかもしれません。
AlphaEvolveをとても素晴らしく強力にしているのは、人間と機械の間のこのやり取りだと思います。人間が質問をし、システムが何らかの形の答えを提供し、そして直感を改善し、質問に答える質問をする能力を向上させます。そしてさらに質問をします。
私たちは信頼されたテスターとして学者にAlphaEvolveへのアクセスを提供し、彼らが何ができるかを見ることについて多く考えています。そしてUIを構築しようとしている間、私たちが持っているものをウェブサイトとして実装するだけでなく、人間とAIの次のレベルのインタラクションはどのようなものかについて多く考えています。
人間がこのプロセスで何ができるのか、どのように介入できるのか。おそらく人間がプロセスを監督したいと思えば、アイデアにコメントしたり、より多くのアイデアを注入したりするかもしれません。そしてそれを多く探索しています。
このシンビオシス空間で何ができるかを見るのは非常に興奮することだと思います。
最後の質問ですが、論文では新しい解決策を評価するのに100時間程度の計算時間が必要だと述べていたと思います。これはセクション2.3にありました。しかし、家にいる全員がAlphaEvolveを再実装しようと急ぐ前に、例えば行列乗算について、どれくらいの計算時間が実行されたのか、これを実際に行うのにどれくらいのコストがかかるのか、例を挙げていただけますか?
AlphaEvolveの良い特徴の一つは、本当に弾力的であることです。問題の難しさに合わせることができます。実際にはそれほど難しくない問題、まだオープンな問題かもしれませんが、誰も本当に取り組んでいない問題を解決するよう依頼する場合、チャットボットに尋ねてもほとんど解決するか、解決するかもしれません。
その場合、AlphaEvolveも基本的にすぐに答えを提供し、それほどコストはかかりません。しかし、何十年もの長いオープンな科学的問題のような非常に難しい問題を尋ねる場合、それが難しい問題であることを期待します。さまざまなアイデアを試し、その上に反復的に構築するためにより多くの時間を費やす必要があるでしょう。AlphaEvolveの良い特徴は、このスケーリングを維持し、より長く実行し続けるにつれて、より良いアイデアを見つけることができることです。
それは些細なことのように聞こえるかもしれませんが、ある時点で停滞することなく継続的な改善を維持できるこれらのシステムを構築することは実際には簡単ではありません。この場合、AlphaEvolveでは、この弾力性が新しい科学的発見を行うところまで伸びているのを見ることができます。それはシステムの良い特徴です。
あなたの質問に答えるために、具体的には問題の難しさによります。問題が難しければ、より多くのアイデアを調査し、より多くの計算を費やす必要があることを期待します。より簡単であれば、答えを非常に迅速に得ることができます。
論文で実際に提示した問題について考えると、行列乗算の中でさえ、一部の行列サイズは他よりもはるかに簡単です。計算量は大きく異なるでしょう。数学のオープン問題についても同じことが言えます。一部は比較的簡単ですが、一部は非常に困難です。
問題を知らなければ、このスペクトル上の位置を示す単一の答えはありません。残念ながら、オープン問題の場合、多くの場合、事前にそれがどれほど難しいかを実際に知ることはできません。だから事前に予測することさえできません。時には試してみても、より良いものが見つからないこともあります。それも起こり得ます。
素晴らしいです。皆さん、MLSTに参加していただき光栄でした。今日は参加していただきありがとうございました。招待してくださりありがとうございます。素晴らしいです。


コメント