最新AI論文をキャッチアップ

Metaがベイズ最適化の予想外の改善を実現

Metaがベイズ最適化の予想外の改善を実現

Bayesian Optimization

3つの要点
✔️ 評価のコストが高いシステムの効率的な最適化技術としてベイズ最適化がある
✔️ 改善量の期待値(EI)を計算することで解の改善に必要な試行錯誤を削減可能
✔️ パラメータが高次元の場合のEIの不具合を解決することで予想外の改善を達成

Unexpected Improvements to Expected Improvement for Bayesian Optimization
written by Sebastian AmentSamuel DaultonDavid ErikssonMaximilian BalandatEytan Bakshy
(Submitted on 
31 Oct 2023 (v1), last revised 18 Jan 2024 (this version, v2))
Comments: NeurIPS 2023 Spotlight

Subjects:  Machine Learning (cs.LG); Numerical Analysis (math.NA); Machine Learning (stat.ML)

code:  

本記事で使用している画像は論文中のもの、紹介スライドのもの、またはそれを参考に作成したものを使用しております。  

はじめに

評価のコストが高いシステムの効率的な最適化技術としてベイズ最適化があります。航空宇宙工学、生物学、薬学、材料工学、ロボット工学、機械学習のハイパーパラメータ調整など、様々なところに応用が広がっています。

ここで、評価のコストが高いというのは、評価の時間が長かったり、評価にお金がかかったり、評価に手間がかかるということです。たとえば、ある製品の試作品を作って評価するのに1週間かかるとすれば、1回の評価に1週間かかり、試作品を作るお金、それを作り評価する人の手間がかかることになります。このような試行錯誤を繰り返すと、たくさんのコストを支払うことになります。

そこで、できるだけ評価の回数を減らして、より良い製品に辿り着きたいというニーズにこたえる最適化技術がベイズ最適化になります。

ベイズ最適化では、試作条件と評価結果の対応関係を予測する予測モデルをつくり、予測モデルに基づき、試作条件の良さを推定し、現段階で一番良いと推定される試作条件を実際に評価して、そのデータを予測モデルに取り込むことを繰り返す技術になっています。

この中で、試作条件の良さを表す関数のことをベイズ最適化では獲得関数と呼びます。その獲得関数の代表的なものが期待改善量(EI)になります。

今回解説する論文では、試作条件として設定すべき値が多数あり、さらに、ある条件の周辺によい評価結果が集中するような場合、EIの値、その勾配が消失してしまう問題を特定し、この勾配消失により、解の改善がストップしてしまうことを示しています。この勾配消失を回避するlogEIをMeta(旧:Facebook)の研究者が提案し、数値実験によって性能改善を示しています。

ちなみに、本記事のタイトルの予想外の改善というのは、今回解説する論文のタイトルのunexpected improvementsからつけたものになります。期待改善量は英語でExpected Improvementであり、今回のEIの改良により予想外に性能改善したことから、Expected Improvementをもじってインパクトのあるタイトルに仕上げようとしたのだと思います。

では、従来手法であるEIとその問題、そして、その問題を解決する今回の提案手法であるlogEIとその評価結果について解説してゆきます。

従来手法 期待改善量(EI)

”はじめに”で述べたように、ベイズ最適化では試作条件(以後、パラメータと呼びます)の良さを獲得関数で計算します。その獲得関数の代表例が期待改善量(Expected Improvement, EI)になります。

ベイズ最適化の予測モデルはあるパラメータ値に対して、予測値と予測の不確かさという二つの値を返します。たとえば、”予測値として良い値で予測の不確かさが低いパラメータ”と”予測値としては良いわけではないが予測の不確かさが高いパラメータ”がありえます。

一見すると、”予測値として良く”、”予測の不確かさが低い”パラメータが一番よさそうな条件に見えます。今すぐに製品に適用する最終条件を選ばなければいけないという場面であればそれが正しいでしょう。

しかし、まだパラメータを絞る時期ではなく、大きな改善の余地がないか可能性を模索する段階であればどうでしょうか?予測の不確かさが低いという言葉は、予測があてにならない、本当は悪い評価結果かもしれないというネガティブな側面と、伸びしろが大きいというポジティブな側面を同時に含みます。

したがって、伸びしろばかりも見ず、現段階の予測値の良さばかりも見ず、平均的に見て、現状のベストな評価結果に対して改善幅が一番よくなりそうな試作条件を評価するのが効率的に思えます。ずばり現状のベストな評価結果からの改善量の平均値を予測モデルから計算したのが期待改善量になります。

指標としての分かりやすさもあり、期待改善量は、ベイズ最適化の獲得関数としては非常にポピュラーなものです。

パラメータが高次元な場合の期待改善量EIの不具合

獲得関数としてEIを使う場合、EIが最大化するパラメータ値を探すわけですが、その最大化を行うときに勾配法という最適化手法が使われます。勾配法は山登り法とも呼ばれ、山登りに例えることができます。

つまり、最適化とは獲得関数という山の頂にたどり着くための手法だと考えたときに、今いる地点から一番山の勾配が激しくなる方向に上っていくと最も高い方向に進める方向(つまり、最も早く山の頂に辿り着く方向)になっており、勾配が0になったら、そこは山の頂だという考え方で、パラメータの調整を行う方法です。

この勾配を頼りに山の頂を目指すので、勾配がちゃんと計算できることが重要になります。

しかし、本論文では、パラメータが高次元で、なおかつ、評価結果の良いパラメータ値がある領域に集中するような問題の場合、EIの勾配が消失するという問題を特定しています。

ベイズ最適化手法の評価するために使われる人工問題の一つにAckley関数というものがあります。この関数はまさに、良い評価結果が得られるパラメータ値がある領域に集中するような関数になっています。

この関数のパラメータの値をランダムな値に設定した時に、勾配が0(本論文では10の-10乗以下と定義)になる割合を図1に示します。図のdがパラメータの次元数(設定すべきパラメータの個数)、横軸は、予測モデルの訓練データ数、縦軸は勾配が0になる割合です。

図1.EIの勾配の消失

図のように、訓練データが多くなるほど、次元数が多くなるほど、勾配が0になる割合が高まります。特に、訓練データ数が80個以上、dが4以上の場合、ほぼ1(100%)の割合で勾配が0になってしまいます。

通常のEIと提案手法のLogEIの勾配がパラメータxによってどのように異なるかを図2に示します。これはパラメータが1次元の単純な最適化問題です。横軸がパラメータ値、縦軸がlog(EI)またはLogEIです。log(EI)とLogEIは別物で、log(EI)の方が従来、LogEIが提案手法であることにご注意ください。

図2.通常のEIとLogEIの違い

提案手法のLogEI(緑実線)の値は0になっていませんが、従来手法のEI(橙点線)は図のピンクの領域で0になります(EIが0になるので、対数関数logで定義されない値が入力されることになり、橙点線が描けなくなっています)。

この従来のEIの勾配消失問題(EIが広い範囲で0になる問題)を解決したのがLogEIになります。

提案手法 LogEI

提案手法のLogEIはいたってシンプルで、対数関数のlogの入力として、EIの関数を代入した合成関数です。ですので、数学的にはEIの対数計算をしただけと考えてもよい値です。

本論文で、なぜLogに着目したかの理由について言及は見つけられませんでしたが、直観的な理由としては、以下になると思われます。

対数関数というのは入力が小さくなっていくと、急激に出力が負の方向に大きく振れ、入力が大きくなっていくと、値の増え方が非常に緩やかになる関数です。小さな値を拡大し、大きな値を抑制するような関数と考えることができます。したがって、虫眼鏡のように微小な勾配を拡大してくれる結果、勾配消失を緩和できると考えればよいでしょう。

ただし、数値計算上、単純にlog(EI)のような実装をしてしまうと、予測モデルの予測上改善幅がほぼなく、予測の不確かさが非常に小さい場合に、EIが0になります。このとき、対数関数は入力0に対して定義されないので、log(EI)は定義不能な値になってしまいます。数学的にはEIは0にはならないのですが、数値計算上は0になってしまうことが起きえます。

そこで、数値計算上安定的かつ正確にlog(EI)を計算するために、本論文ではLogEIとして式1の実装を提案しています。 

式1.LogEI

これは数学的にlog(EI)と一致します。式1のlog_h(z)について、z>-1の場合の式が単純にlog(EI)を実装した場合に相当します。ちなみに、zとして入力されているのは、”改善量”=”予測値μ(x)-現在のベスト値””を予測の不確かさ(予測標準偏差とも呼ばれる)σ(x)で標準化した値です。logの中に入っているのは、それぞれ標準化された正規密度関数と累積分布関数になります。

単純な実装ではz>-1のケースでは問題ないのですが、-1≧zのケースで問題が生じるので、本論文では、一見非常に複雑な計算を行う式になっています。この中のlog1mexp、erfxcは、log(1-exp(z))、exp(z*z)erfc(z)の数値計算的に安定な実装で、erfcは相補誤差関数です。

数値実験による評価結果

提案手法を評価するための人工問題(最適化したい目的関数)を式2に示します。

式2.手法評価のための人工問題(最適化したい目的関数)

パラメータ次元数は10の、二乗の和の最適化問題です。この問題は最適化問題としては、非常に簡単な問題といえるものです。

今回、ランダムな初期値1024点から20回評価実験を行っています。

その評価結果を図3に示します。横軸は評価回数、縦軸はリグレット(真の最適解の評価結果と手法で得られた暫定ベスト評価結果との差分で、小さいほど良い)です。 図の実線は20回の評価実験の平均値で、薄い影は平均からの±2標準偏差を示しています。

図3.LogEIの数値実験による評価結果

図のように、EIは、評価数が75を超えたあたりから、リグレットの改善が見られなくなっています。対して、提案手法のLogEIは評価数が増えるにしたがって、リグレットが減少し続けています。 

非常に簡単な最適化問題でも、通常のEIではうまく最適化できず、LogEIではうまく最適化できるようになるケースが示されています。

おわりに

今回は、ベイズ最適化の代表的な獲得関数である期待改善量EIについて、パラメータが高次元である場合の課題を抽出し、EIの対数を計算するLogEIによって、シンプルに問題を解決する論文を解説しました。

手法を改善する上で、課題を特定することは非常に重要なことです。課題を特定できると、今回の論文のようにシンプルに問題を解決することができます。今回はEIに絞って解説しましたが、今回紹介した論文には、期待改善量をベースにした他の派生手法にも言及されており、非常に広範囲に影響する論文であり、ベイズ最適化を使う上で知っておくべき情報になると思います。

 また、今回は数学的に従来の期待改善量と変わらないが、数値計算つまり計算機で計算しようとしたときに発生する問題で実装寄りの話題になっています。実用上の成功には、アルゴリズムの数学的な考え方だけでなく、数値計算上も行き届いた考え方が必要なことを示唆しています。

  • メルマガ登録(ver
  • ライター
  • エンジニア_大募集!!

記事の内容等について改善箇所などございましたら、
お問い合わせフォームよりAI-SCHOLAR編集部の方にご連絡を頂けますと幸いです。
どうぞよろしくお願いします。

お問い合わせする