非常に高価な目的関数を持つ問題の並列最適化アルゴリズム


15

10〜20個の変数の関数を最適化しています。悪いニュースは、各関数の評価が高価で、約30分のシリアル計算であるということです。幸いなことに、数十の計算ノードを自由に使用できるクラスターがあります。

したがって、質問:その計算能力をすべて効率的に使用できる最適化アルゴリズムはありますか?

スペクトルの片側には徹底的な検索があります。検索空間全体を細かいグリッドに分割し、各グリッド点で関数を個別に計算します。これは確かに非常に並列計算ですが、アルゴリズムは恐ろしく非効率的です。

スペクトルの反対側には、準ニュートンアルゴリズムがあります。以前の履歴に基づいて、パラメータの次の推定値をインテリジェントに更新します。これは効率的なアルゴリズムですが、並列化する方法がわかりません。「以前の履歴に基づいたパラメーターの推定」という概念は、シリアル計算のように聞こえます。

二次アルゴリズムは中間のどこかにあるように見えます。値の束を並列に計算することで初期の「代理モデル」を構築できますが、残りの反復が並列化可能かどうかはわかりません。

クラスター上でどのような種類のグラジエントフリー最適化方法がうまく機能するかについての提案はありますか?また、現在利用可能な最適化アルゴリズムの並列実装はありますか?


1
常に並列で勾配を計算し(有限差分を使用する準ニュートン法の場合)、パラメーターの数に比例する高速化、つまり10x-20xを得ることができます。
stali 14年

@stali:最適化の準ニュートン法にはヘッセ行列が必要です。関数評価の有限差分を介してヘッセ行列を計算することは、実際には良い考えではありません。最適化のために勾配の有限差分近似を計算することも、一般に良い考えではありません。
ジェフオックスベリー14年

BFGSなどの多くの準ニュートン法は、ヘッセ行列を明示的に必要としません。グラデーションをL-BFGSと組み合わせて使用​​することで、OPは彼が望むものを素早く達成できると思います。
stali 14年

@stali:勾配に対する有限差分近似を使用することが、私の答えでは悪い考えになる理由を指摘しました。準ニュートン反復の右側にエラーを導入することにより、収束を低下させます。また、(サロゲートメソッドとは異なり)古い評価を再利用する機会がないため、関数評価を無駄にします。BFGSを使用しても、提案するアプローチの問題の半分しか解決できません。
ジェフオックスベリー14年

これはより適切にはコメントであり、回答ではありません。しかし、コメントを投稿するのに十分な担当者がいないため、選択の余地はありません。マイケル、私は非常によく似たタイプの問題を抱えています。クラスターで実行される複雑なシミュレーションを伴う高価な関数評価です。関数評価にクラスターでのシミュレーションが含まれる場合、最適化の実行に適したコードを見つけましたか?
MoonMan

回答:


16

ポールが述べているように、これ以上の情報がなければ、仮定なしに助言を与えることは困難です。

10〜20個の変数と高価な関数評価では、派生物のない最適化アルゴリズムを推奨する傾向があります。私はPaulのアドバイスに強く反対します:何らかの特別な方法を使用していない限り、一般的に機械精度の勾配が必要です(たとえば、機械学習の確率的勾配降下は、合理的な方法を考え出すために目的の形式を活用します勾配推定値)。

各準ニュートンステップは次の形式になります。

Hバツkdk=fバツk

ここで、ヘッセ行列のいくつかの近似である、探索方向である、、現在の反復で決定変数の値であり、あなたの目的関数であり、は目的の勾配であり、決定変数はように更新されます。ここでHdkバツkffバツk+1=バツk+αkdkαkは、何らかの方法(行検索など)で決定されるステップサイズです。特定の方法でヘッセ行列を近似することで逃げることができ、反復が収束しますが、正確な勾配によるヘッセ行列の有限差分近似のようなものを使用すると、条件が悪いために問題が発生する可能性があります。通常、ヘッセ行列は勾配を使用して近似されます(たとえば、ヘッシアンのランク1更新を使用するBFGSタイプのメソッド)。

ヘッシアンと勾配の両方を有限差分で近似することは、いくつかの理由から悪い考えです。

  • 勾配に誤差が生じるため、適用する準ニュートン法は、ノイズの多い関数の根を見つけることに似ています。
  • 関数の評価に費用がかかり、変数に関する勾配を評価しようとすると、反復ごとにN個の関数の評価がかかりますNN
  • 勾配に誤差がある場合、ヘッセ行列にさらに誤差が生じることになります。これは、線形システムの調整に関して大きな問題です
  • ...そして、反復ごとに関数評価のコストがかかりますN2

準ニュートンの悪い繰り返しを1つ取得するには、評価ごとに30分で最大420回の関数評価のようなことをしています。つまり、繰り返しごとにしばらく待つか、関数の評価のためだけに大きなクラスターが必要です。実際の線形解は20行20列の行列(最大で!)になるため、それらを並列化する理由はありません。たとえば、随伴問題を解くことによって勾配情報を取得できる場合、それはより価値があるかもしれません。その場合、Nocedal&Wrightのような本を見る価値があるかもしれません。

多数の関数評価を並行して行う場合は、代わりに、サロゲートモデリングアプローチを検討するか、準ニュートンアプローチを検討する前にセット検索メソッドを生成する必要があります。古典的なレビュー記事は、2012年に公開された、非常に優れた、幅広い比較を提供する、誘導体を使用しない方法に関するリオスとサヒニディスによるものです。2009年のMore and Wildによるベンチマーク記事。Conn、Scheinberg、およびVicenteによる2009年の教科書「Derivative-Free Optimizationの紹介」。そして、コルダ、ルイス、およびTorczonによる設定の検索方法の生成に関するレビュー記事 2003年から。

上記にリンクされているように、DAKOTAソフトウェアパッケージはこれらのメソッドの一部を実装します。また、DIRECTを実装するNLOPTと、パウエルの代理モデリングメソッドのいくつかも実装します。MCSご覧ください。MATLABで書かれていますが、MATLAB実装を選択した言語に移植することができます。DAKOTAは基本的に、高価なシミュレーションを実行し、最適化アルゴリズムのデータを収集するために使用できるスクリプトのコレクションです。NLOPTには多数の言語のインターフェイスがあるため、どちらのソフトウェアパッケージを使用する場合でもプログラミング言語の選択は大きな問題ではありません。ただし、DAKOTAは学習に時間がかかり、ふるいにかけるための膨大な量のドキュメントがあります。


2
完全に間違っていて、その過程で新しく有用なものを学ぶことができて嬉しいです:)。
ポール

ありがとう!ただもう一つの明確化:これらのアルゴリズムのどれが機能評価を並行して実行できるか?たとえば、反復1、...、nから得られた情報のみに基づいて反復n + 1、...、n + kを実行するk-wayグリッド上で?
マイケル14年

k

3

おそらく、代理ベースの最適化アルゴリズムがあなたが探しているものです。これらのアルゴリズムは、最適化プロセス中に代理モデルを使用して実際の計算コストの高いモデルを置き換え、計算コストの高いモデルの可能な限り少ない評価を使用して適切なソリューションを取得しようとします。

私が思うにサンプリング方法を追求モードはあなたの問題を解決するために使用することができます。このアルゴリズムはRBF代理モデルを使用して、高価な目的関数を近似し、非線形制約を処理できます。さらに重要なことは、複数の候補を選択して高価な関数評価を行うため、これらの候補を並列コンピューティングに配布して、検索プロセスをさらに高速化することができます。コードはオープンソースであり、MATLABで記述されています。

参照

Wang、L.、Shan、S.、&Wang、GG(2004)。高価なブラックボックス関数のグローバル最適化のためのモード追跡サンプリング方法。エンジニアリング最適化、36(4)、419-438。


2

並列アルゴリズムが本当にあなたが探しているものかどうかはわかりません。非常にコストがかかるのは、関数の評価です。あなたがしたいことは、関数自体を並列化することであり、必ずしも最適化アルゴリズムではありません。

それができない場合、徹底的な検索とニュートンアルゴリズムの中間にあるのは、モンテカルロ法です。異なるコア/ノードの束で、ローカル最適化に陥りやすい同じアルゴリズム(準ニュートンアルゴリズムなど)を開始できますが、すべて初期条件がランダムです。真の最適値に対する最良の推測は、最小値の最小値です。これは並列化するのは簡単であり、任意の方法を拡張するために使用できます。完全に効率的ではありませんが、十分な計算能力がある場合、プログラミングの生産性とアルゴリズムパフォーマンスの戦いで勝つことができます(多くの計算能力がある場合、これはより手の込んだアルゴリズムの作成が完了する前に終了できます)。


0

最適化アルゴリズムの選択(およびその並列化)は、目的関数と制約の特性に大きく依存します。問題について詳しく知ることなく、意味のあるアドバイスを提供することは困難です。

しかし、ニュートン法の考慮から、私はあなたの目的関数が微分可能であると推測します。可能であれば、関数の評価を並列化することで問題が大幅に改善されます。不可能な場合は、正確な勾配/ヘッシアンを有限差分近似で置き換える不正確なニュートン法を検討することもできます。その後、@ staliが示唆するように、これらのすべてのプロセッサを自由に使用して、ヤコビアンの各非ゼロ要素を計算できます。

詳細については、Nocedal&Wrightの数値最適化、第7章を参照してください。これを並行して実装する最適化ソフトウェアパッケージが多数あります。最も広く使用されているフリーウェアには、DAKOTAソフトウェアパッケージ(Sandia National Labs)があります。


5
N

-2

これが問題の解決策です。

この論文では数学的方法の説明を提供します。


3
SciComp.SEへようこそ。論文に記載され、ソフトウェアに実装されているアプローチの詳細を提供できますか?使用される方法は何ですか?なぜそれが良いのですか?このアプローチでは、他の回答ではカバーされないものは何ですか?
ニコグアロ

2
また、これはあなた自身の仕事のようです。それが当てはまる場合は、回答で明示的に述べてください。
ニコグアロ

@nicoguaro:ありがとう、しかしリンクをクリックする方法は知っている。
マイケル

2
@マイケル、それはあなたのためではありません。このサイトの哲学は、回答の集まりになることです。あなたは今日あなたの答えを得ていますが、将来、他の誰かが同じ助けを必要とするかもしれません。それが、良い答えが何であるかの事実上標準がある理由です。
ニコグアロ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.