FunSearch (関数空間検索の略)は、数学的およびアルゴリズム的問題を解決するコンピュータプログラムを発見するためにGoogle DeepMindによって開発された人工知能手法です。大規模な言語モデルと自動評価器、進化的探索手順を組み合わせ、候補プログラムを生成し、スコアを付け、高性能なプログラムを使用して新しい候補を生成します。[ 1 ]
Google DeepMindは2023年にFunSearchを発表し、関連論文はNatureに掲載された。[ 2 ]このシステムは極値組み合わせ論のキャップセット問題とオンラインビンパッキング問題に適用され、新しい数学的構成と新しいパッキングヒューリスティックを発見した。[ 3 ] [ 4 ]
FunSearch は、問題を個々のソリューションを直接検索するのではなく、コンピュータ プログラムの検索として捉えます。ユーザーは、問題仕様、評価関数、および初期プログラムまたはプログラムスケルトンを提供します。各イテレーションで、FunSearch はデータベースから既存のプログラムをサンプリングし、スコアの高いプログラムを優先し、事前学習済みの大規模言語モデルへのプロンプトを作成し、モデルに修正プログラムを生成するように要求します。生成されたプログラムは、評価者によって実行され、スコアが付けられます。[ 1 ]
探索プロセスでは、多様な候補プログラム群を維持し、局所最適解に陥るリスクを軽減することを目的とした、島ベースの進化的手法が用いられています。原論文によると、この手法の利点の1つは、FunSearchが最終的な数値解やオブジェクトの大きなリストだけを出力するのではなく、研究者が検査、簡略化、解釈できるプログラムを出力する点です。[ 1 ]
FunSearchは、通常は固定されたプログラム骨格に埋め込まれた関数であるプログラム断片の空間に対する検索として説明できます。候補関数の空間にして候補関数を呼び出す固定ソルバーを実行することによって得られる評価スコアとする。初期関数が与えられた場合FunSearchはデータベースを維持しています評価済みで有効な関数から、高得点の関数を繰り返しサンプリングします。それらを使用して大規模な言語モデルのプロンプトを構築し、モデルに新しい候補関数を生成するように要求します。新しい関数は問題固有のプログラムスケルトン内で実行され、評価者によって採点されます。生成された関数が有効な場合、それは再び追加されます。これにより、後のプロンプトがより強力な以前の候補に基づいて構築されるようになる。[ 1 ]
簡略化すると、検索ループは次のように記述できます。
理想的な目標は、評価スコアの高い候補関数を見つけることです。
ただし、実際には FunSearch は検索中に発見された最良の有効な関数を返します。元の実装では、候補関数の多様性を維持しながらスコアの高いプログラムを優先するために、アイランドベースの進化プロセスを使用しています。[ 1 ] [ 4 ]
FunSearchは、まずキャップセット問題で実証されました。これは、最大可能な部分集合に関する加法組み合わせ論の問題です。3点が一直線上にない。次元8では、FunSearchはサイズ512のキャップセットを発見し、以前に知られていた構成を改善した。この論文では、FunSearchを使用して許容セットに関連する構成を発見することにより、キャップセット容量の下限が改善されたことも報告されている。[ 1 ]
Google DeepMind は、この結果を、大規模な言語モデルを使用して数学における検証可能な新しい知識を生成する例であると説明した。[ 2 ] Natureのニュース記事では、このシステムがカードゲームSetに関連する組み合わせ論の問題で人間の努力を上回ったと報じられた。[ 5 ]
FunSearchは、商品が到着するたびにビンに割り当てる必要があるオンラインビンパッキング問題にも適用されました。 [ 1 ]この設定では、FunSearchは新しい商品をどのビンに入れるべきかを決定するプログラム的なヒューリスティックを開発しました。元の論文では、発見されたヒューリスティックが、シミュレーションデータとOR-Libraryベンチマークインスタンスで一般的なファーストフィットとベストフィットのベースラインを上回ると報告されています。[ 1 ]
Google DeepMind はFunSearch 論文に付随する公開GitHubリポジトリで FunSearch ソフトウェアを公開しました。リポジトリには、キャップ セット、許容セット、オンラインビン パッキング、サイクル グラフの強い積における独立セット、コーナーフリー セット、および関連する実験の例とデータが含まれています。また、 FunSearchパイプラインのシングル スレッド実装も含まれていますが、リポジトリには、元の実験で使用された言語モデル、実行サンドボックス、または分散インフラストラクチャは含まれていないと記載されています。リポジトリには、ソフトウェアはApache License 2.0でライセンスされており、その他の資料はCreative Commons Attribution 4.0 International Licenseでライセンスされていると記載されています。[ 6 ]
Nature News & Views の記事で、ジャン=バティスト・ムーレは FunSearch を遺伝的プログラミングと大規模言語モデルを結びつけるものとして説明し、この研究は言語モデルがコンピュータ プログラムの進化にどのように役立つかを示していると述べている。この記事では、このシステムを AI 支援による数学的発見の概念実証として特徴づけている。[ 3 ]