コスト関数の評価が遅い場合の最適化


59

勾配降下法や他の多くの方法は、コスト関数で局所的な最小値を見つけるのに役立ちます。それらは、数値的であろうと分析的であろうと、コスト関数が各ポイントで迅速に評価できる場合に効率的です。

異常な状況に見えるものがあります。私のコスト関数の評価はそれぞれ高価です。グラウンドトゥルースサーフェスに対して3Dサーフェスを最小化する一連のパラメーターを見つけようとしています。パラメーターを変更するたびに、サンプルコホート全体に対してアルゴリズムを実行して、その効果を測定する必要があります。勾配を計算するには、15個すべてのパラメーターを個別に変更する必要があります。つまり、すべてのサーフェスを再生成し、勾配ごとにサンプルコホート方法と比較する回数が多すぎます。

私はこの問題を回避する方法を開発し、現在評価していますが、高価なコスト関数の評価に関する文献にあまり見当たらないことに驚いています。これは、私が問題をそれよりも難しくしているのか、そしてすでに利用可能なより良い方法があるかもしれないのではないかと思うようになります。

だから私の質問は基本的にこれです:評価が遅いときに、凸関数であるかどうかにかかわらず、誰もがコスト関数を最適化する方法を知っていますか?または、アルゴリズムを再実行してサンプルコホートと何度も比較することで、そもそもばかげたことをしていますか?


5
確率的勾配降下について聞いたことがありますか?大規模なトレーニングセットに適用されるディープニューラルネットワークの場合、同様の問題がありますが(分析的に勾配を評価できます)、標準ソリューションは、単一サンプル(確率的)対コホート全体(バッチ)のみに基づいて勾配降下を行うことです
seanv507

3
私はその地域に漠然としか知らないので、これは答えではなくコメントです。しかし、あなたが議論されていることに聞こえる多くの不確実性の定量化の話題などは、多くの場合、ターゲット関数作られたテイク週間の単一評価は(少なくとも私のエンジニアリング同僚が直面する問題に)評価するエンジニア、が直面しています。これがどのように扱われるかの私の非常に限られた理解では、過去の評価やシンプルなエンジニアリング・モデルに基づいて評価し、その後、次の評価を選んだためにこれらのサロゲートモデルを使用する方がはるかに簡単です代理近似を行うことである...
クリフAB

2
...より高価なターゲット関数。私はそれを言うのは嫌いですが、現時点ではそのトピックについてもう知りません。エンジニアと研究トピックについて話し合っている間、私はそれについて簡単に話されただけです。興味深いことに、それは非常に挑戦的な研究分野のようです:良いモデルには物理学統計の両方をよく理解することが必要だと思います。
クリフAB

1
@ seanv507はい、ありがとう。しかし、私は同様の理由でそれを避けました。1つのサンプルを実行するには、約30秒から1分かかります。パラメータが15個ある場合、サンプルを1つしか使用していなくても、勾配計算ごとに約8分を見ています。スペースが大きい場合、非常に長い時間がかかる場合があります。他のアイデアをお考えの場合は私を修正してください。
ジャレッドベックスフォート16

5
「異常な状況のように思われます。コスト関数の評価は高額です。」一般的に、これは異常な状況ではありません。たとえば、コスト関数がシミュレーションの実行に由来する場合など、あらゆる場所に表示されます(たとえば、このペーパーのwhite.ucc.asn.au/publications/White2015PsoTransistorSizing.pdfでは、SPICEで10秒かかる回路をシミュレーションしています)。より科学的に言えば、実験科学では評価に時間がかかることがあります。友達のマスタープロジェクトの1つは、基本的に5つのパラメーターを最適化してDNAを挿入する最適な方法を見つけることです。各評価には24時間かかります。
リンドンホワイト

回答:


59

TL; DR

LIPOの使用をお勧めします。証明可能なほど正確であり、純粋なランダム検索(PRS)よりも証明可能なほど優れています。実装も非常に簡単で、ハイパーパラメーターはありません。私はLIPOとBOを比較する分析を行っていませんが、LIPOの単純さと効率性はLIPOがBOを上回ることを意味すると期待しています。

(参照:ベイジアンハイパーパラメーター最適化の欠点は何ですか?

ベイジアン最適化

ベイジアン最適化タイプの方法は、パラメータ空間を探索するためにガウスプロセス代理モデルを構築します。主な考え方は、互いに近いパラメータータプルが同様の関数値を持つため、ポイント間の共分散構造の仮定により、アルゴリズムは、次に試すのに最も価値のあるパラメータータプルについて、経験に基づいた推測を行うことができます。この戦略は、関数評価の回数を減らすのに役立ちます。実際、BOメソッドの動機は、「バッファロー全体を使用して」関数評価の回数をできる限り少なくして、次にテストするポイントを適切に推測することです。次の訪問ポイントを比較するために使用されるさまざまなメリットの数値(予想される改善、予想される変位値の改善、改善の確率...)があります。

これとは対照的に、グリッド検索のようなもので、以前の関数評価の情報を使用して次に進むべき場所を知らせることはありません。

ちなみに、これは強力な大域的最適化手法でもあるため、表面の凸性についての仮定はありません。さらに、関数が確率的である場合(たとえば、評価に固有のランダムノイズがある場合)、これはGPモデルで直接考慮することができます。

一方、反復ごとに少なくとも1つのGPを適合させる必要があります(またはいくつかのGP、「最良」の選択、代替案の平均化、または完全ベイズ法)。次に、このモデルを使用して、通常はマルチスタートローカル最適化の形式で(おそらく数千)の予測を行います。その際、最適化中の関数よりもGP予測関数を評価する方がはるかに安価です。しかし、この計算オーバーヘッドがあっても、非凸関数であっても、比較的少数の関数呼び出しで最適化できる場合があります。

このトピックに関して広く引用されている論文は、ジョーンズ他、「高価なブラックボックス関数の効率的なグローバル最適化」です。しかし、このアイデアには多くのバリエーションがあります。

ランダム検索

コスト関数の評価に費用がかかる場合でも、ランダム検索は依然として有用です。ランダム検索は実装が簡単です。研究者が行う唯一の選択は、結果が何らかの変位値qにある確率 を設定することです。残りは基本確率の結果を使用して自動的に進みます。p q

q=0.95p=0.95100×1q=5nqn=0.95n10.95n。すべてをまとめると、

1qnpnログ1pログq

私たちの特定のケースではこれは得n59

この結果は、ほとんどの人がランダム検索に試行タプルを推奨する理由です。n = 60は、中程度の数のパラメーターがあるときにGaussian Processベースの方法で良好な結果を得るために必要な実験の数に匹敵することに注意してください。Gaussian Processesとは異なり、クエリタプルの数は、検索するハイパーパラメーターの数によって変化しません。実際、多数のハイパーパラメーターの場合、ガウスのプロセスベースのメソッドは多くの反復を行って前進することができます。n=60n=60

結果がどれだけ良いのかを確率的に保証しているので、さらに実験を行う必要がないことを上司に納得させる説得力のあるツールになります。

LIPOとそのバリアント

これはエキサイティングな到着であり、もしそれが新しいものでなければ、私にとって確かに新しいものです。情報に基づいた境界を関数に配置することと、最適な境界からサンプリングすることと、二次近似を使用することを交互に行うことで続行します。私はまだすべての詳細に取り組んでいますが、これは非常に有望だと思います。これは素晴らしいブログ記事であり、論文はCédricMalherbeとNicolas Vayatisの「リプシッツ関数のグローバルな最適化」です。


1
これは、応答曲面法の最新のバリアントのようです!
kjetil bハルヴォルセン

1
実際、ランダム検索は非常にうまく機能します。argmin.net
Tim

1
@ティムはい、あなたのポイントはよく取られています。BOには本質的に無限の順列があり、それぞれが「最高の」ブラックボックスオプティマイザーであると主張しているため、この投稿で問題を「決定」したくありませんでした。ランダム検索は非常にうまく機能することに同意しますが、実際にはPRSよりもLIPOをお勧めします。LIPOはすべての実験で証明されており、PRSを(平均して)大幅に上回っています。LIPOの推定コストも最小限です。QPを最小化できる場合は、LIPOを使用できます。LIPOにはハイパーパラメーターがありません(BOとは対照的です)。
モニカを

この質問をもう一度確認したことを嬉しく思います。LIPOは素晴らしいようです。
ジャレッドベックスフォート

LIPOは素晴らしいです。少し時間を置いてから、回答を拡大して、LIPOの会計を改善します。
モニカ

40

fバツバツ

(非常に)高価なブラックボックス関数の評価の現在のゴールドスタンダードは、(グローバル)ベイジアン最適化(BO)です。SycoraxはすでにBOのいくつかの機能を説明しているので、役に立つ情報を追加するだけです。

出発点として、この概要ペーパー 1を読むことをお勧めします。また、最近のものもあります[2]。

ベイズの最適化は近年、機械学習で非常に実用的な用途があるため、一連の専用ワークショップ(例:BayesOpt、BOのシェフィールドワークショップからのこれらのビデオをチェック)でフィールドとして着実に成長しています。 MLアルゴリズムのハイパーパラメーターを最適化する方法については、たとえば、このペーパー [3]および関連ツールボックスSpearMintを参照してください。さまざまな種類のベイジアン最適化アルゴリズムを実装するさまざまな言語の他の多くのパッケージがあります。

前述したように、基礎となる要件は、各関数の評価に非常にコストがかかることであり、BO関連の計算ではオーバーヘッドが無視できるほどになります。球場を与えるために、関数が数分以上の時間で評価される場合、BOは間違いなく役立ちます。より高速な計算(数十秒など)にも適用できますが、使用するアルゴリズムによっては、さまざまな近似値を採用する必要があります。関数がの時間スケールで評価される場合、現在の研究の限界に達していると思います。おそらく他の方法がより有用になるかもしれません。また、私は言わなければならない、BOはめったに本当にブラックボックスではありません、あなたは、多くの場合、時々 、アルゴリズムを微調整しなければならない多くのことを、それが特定の実世界の問題と可能性を最大限に動作させるために、。

BOは別として、一般的な導関数を使用しない最適化手法のレビューについては、このレビュー [4]を見て、迅速な収束という優れた特性を持つアルゴリズムをチェックできます。たとえば、マルチレベル座標検索(MCS)は通常、最小値(もちろん、必ずしもグローバル最小値ではない)の近傍に非常に迅速に収束します。MCSはグローバルな最適化のために考えられていますが、適切なバインドされた制約を設定することでローカルにすることができます。

最後に、コストとノイズの両方が大きいターゲット関数のBOに興味があります。この質問に対する私の答えをご覧ください。


参照:

1 Brochu et al。、 "アクティブユーザーモデリングと階層型強化学習への応用を伴う、高価なコスト関数のベイズ最適化に関するチュートリアル"(2010)。

[2] Shahriari et al。、 "人間をループから外す:ベイジアン最適化のレビュー"(2015)。

[3] Snoekら、「機械学習アルゴリズムの実用的なベイズ最適化」、NIPS(2012)。

[4] Rios and Sahinidis、「デリバティブのない最適化:アルゴリズムのレビューとソフトウェア実装の比較」、Journal of Global Optimization(2013)。


4
+1これは素晴らしい答えです。特に、これらの論文はこのスレッドへの素晴らしい追加です。実際、私が説明した一般的な方法がベイジアン最適化と呼ばれることを知りませんでした。しかし、時間の経過とともにリンクが悪くなるのではないかと心配しています。将来のユーザーがこれらの論文にアクセスできるように、より完全な引用情報を追加しますか?
モニカの復活

ベイジアン最適化ペーパーは非常に役立ちます。答えてくれてありがとう。
ジャレッドベックスフォート16

1
@ user777:良い点。論文を回収するのに十分なはずの明示的な参照リストを最後に追加しました。
lacerbi

6

私はアルゴリズムを自分では知りませんが、あなたが探している最適化アルゴリズムの種類は、目的が高価であるかうるさい場合に使用される導関数のない最適化である信じています。

たとえば、この論文をご覧ください(Björkman、M.&Holmström、K. "Global Optimization of Costly Nonconvex Functions Using Using Radial Basis Functions。" Optimization and Engineering(2000)1:373. doi:10.1023 / A:1011584207202)これがまさにあなたが望むものであることを示していると思われる抽象:

この論文では、コストのかかる目的関数のグローバルな最適化、つまり、複数の局所的な最小値があり、各関数値の計算にかなりのCPU時間を要する場合のグローバルな最小値を見つける問題を検討します。このような問題は、関数値が時間のかかるコンピューターシミュレーションまたは最適化の結果である可能性がある産業および金融アプリケーションでしばしば発生します。デリバティブはほとんどの場合入手が難しく、提示されたアルゴリズムはそのような情報を利用しません。


2
リンクされた論文およびその他のリソースの完全な引用情報を含めてください。耐久性のある情報のリポジトリを構築したいのですが、リンクは時間の経過とともに悪化する傾向があります。
モニカを

Björkman、M.&Holmström、K.「放射基底関数を使用した高価な非凸関数のグローバル最適化」。最適化とエンジニアリング(2000)1:373. doi:10.1023 / A:1011584207202
jkdev

4

あなた一人じゃありません。

高価な評価システムは、有限要素法(FEM)モデルや計算流体力学(CFD)モデルなど、工学では非常に一般的です。これらの計算が高価なモデルの最適化は非常に必要であり、進化アルゴリズムは多くの場合、評価に費用のかかる問題の選択肢ではない数十万の問題の評価を必要とするためです。幸いなことに、この問題を解決するために利用できる多くの方法(アルゴリズム)があります。私の知る限り、それらのほとんどは代理モデル(メタモデル)に基づいています。いくつかを以下にリストします。

  • 効率的なグローバル最適化(EGO)[1]。EGOアルゴリズムは上記で言及されており、最も有名な代理ベースの最適化アルゴリズムである可能性があります。これは、クリギングモデルと予想改善関数(EI)と呼ばれる充填基準に基づいています。EGOアルゴリズムを含むRパッケージは、DiceOptimとDiceKrigingです。
  • モード追跡サンプリング(MPS)メソッド[2]。MPSアルゴリズムはRBFモデルに基づいて構築されており、候補サンプリングポイントを取得するために適応サンプリング戦略が使用されます。MATLABコードは、著者によってhttp://www.sfu.ca/~gwa5/software.htmlで公開されています。MPSアルゴリズムは最適な結果を得るためにより多くの評価を必要とするかもしれませんが、私の個人的な経験から、EGOアルゴリズムよりも複雑な問題を処理できます。
  • EnsembleはJulianeMüllerによるモデルを代理します[3]。彼女は複数のサロゲートを使用して検索機能を強化しました。MATLABツールボックスMATSuMoToは、https: //github.com/Piiloblondie/MATSuMoToで入手できます

夏季には、これらの代理ベースの最適化アルゴリズムは、可能な限り少ない評価を使用して、問題のグローバルな最適を見つけようとします。これは、代理(代理)が提供する情報を最大限に活用することで実現されます。計算上高価な問題の最適化に関するレビューは[4-6]にあります。


参照:

  1. DR Jones、M。Schonlau、およびWJ Welch、「高価なブラックボックス関数の効率的なグローバル最適化」、Journal of Global Optimization、vol。13、pp。455-492、1998。
  2. L. Wang、S。Shan、およびGG Wang、「高価なブラックボックス関数のグローバル最適化のためのモード追求サンプリング法」、Engineering Optimization、vol。36、pp。419-438、2004。
  3. J.ミュラー、「計算的に高価なブラックボックスグローバル最適化問題のためのサロゲートモデルアルゴリズム」、タンペレ工科大学、2012年。
  4. GG WangおよびS. Shan、「エンジニアリング設計の最適化をサポートするメタモデリングテクニックのレビュー」、Journal of Mechanical Design、vol。129、pp。370-380、2007。
  5. AI ForresterおよびAJ Keane、「代理ベースの最適化の最近の進歩」、Progress in Aerospace Sciences、vol。45、pp。50-79、2009。
  6. FACヴィアナ、TWシンプソ​​ン、V。バラバノフ、およびV.トロポフ、「学際的な設計最適化におけるメタモデリング:どれだけの距離まで本当に来たのか?」AIAA Journal、vol。52、pp。670-690、2014/04/01 2014。

3

過去に私が成功裏に使用した2つの単純な戦略は次のとおりです。

  1. 可能であれば、完全なコスト関数の評価を近似する、より単純な代理関数を見つけてみてください-典型的なシミュレーションに代わる分析モデル。この単純な関数を最適化します。次に、正確なコスト関数を使用して、結果のソリューションを検証および微調整します。
  2. 可能であれば、正確な「デルタコスト」関数を評価する方法を見つけてください。勾配を使用することによる近似とは対照的です。つまり、完全なコストが評価されている最初の15次元ポイントから、現在のポイントの15個のコンポーネントの1つ(または複数)を少し変更することで、コストの変化を導き出す方法を見つけます。特定の場合に小さな摂動のローカリゼーションプロパティを利用する必要があり、途中で内部状態変数を定義、キャッシュ、および更新する必要があります。

これらの戦略は非常にケース固有であり、あなたのケースに適用できるかどうかわかりません。そうでない場合は申し訳ありません。両方とも適用可能です(私の使用例のように)。「デルタコスト」戦略をより単純な分析モデルに適用します。パフォーマンスは数桁向上する可能性があります。

別の戦略は、通常、反復回数を減らす傾向がある2次法を使用することです(ただし、各反復はより複雑です)。たとえば、Levenberg–Marquardtアルゴリズムなどです。ただし、勾配を直接かつ効率的に評価する方法がないように思えると、この場合、おそらく実行可能なオプションではありません。


3

他の人が述べたように、代理モデル(応答曲面とも呼ばれます)は強力なアプローチです。私の意見では、人々が忘れている重要なことの1つは、マルチコアCPUを使用している場合、複数の関数評価を並行して実行できることです。

このコードをご覧になることをお勧めします。シンプルな応答モデルを使用しますが、マルチコアCPUでスケーリングするため、使用するコアの量と同等のスピードアップが得られます。この方法の背後にある数学については、このペーパーで説明します。


私はあなたがこの論文の最初の著者であると思います-もしそうなら、おそらく言及すべきです。この論文は、ベイジアン最適化やその他の代理手法などの最先端の手法との比較に欠けています(実際、ベンチマークはまったく提供されていません)。もう少し話していただけますか?
lacerbi

そこで使用されているモデルの方が優れていると言っているわけではありません。私はちょうど人々がモデルの品質についてあまりにも懸念していると、時には多くのコアが関与している時に大きな取引をすることができ、並列処理を忘れること言って...
ポール・

リンクされた論文およびその他のリソースの完全な引用情報を含めてください。耐久性のある情報のリポジトリを構築したいのですが、リンクは時間の経過とともに悪化する傾向があります。
モニカを

2
コミュニティによって用語がどの程度異なるかはわかりませんが、ここでは一般に「多項式サロゲートモデル」(通常は2次)の同義語として使用される応答曲面を使用します。したがって、代理モデリングは応答曲面モデリングのスーパーセットと考える傾向があります。(ただし、これは間違っている可能性があります。)
GeoMatt22

0

確率的勾配降下法では、目的関数の評価にも適用できる多くのトリックがあります。全体的な考えは、データのサブセットを使用して目的関数を近似しようとしています

これら2つの投稿での私の答えは、確率的勾配降下が機能する理由を説明しています。その背後にある直感は、データのサブセットを使用して勾配を近似することです。

確率的勾配降下は、標準の勾配降下と比較して、どのように時間を節約できますか?

ビッグデータを設定するために並列/分散方式で線形回帰を実行する方法は?

同じトリックが目的関数にも当てはまります。

Aバツb2AAb

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.