勾配ベースのオプティマイザに近似勾配を提供しても役に立たないですか?


9

数値勾配しか提供できない場合、勾配ベースの最適化アルゴリズムを使用しても意味がありませんか?そうでない場合、最適化ライブラリ自体に対して有限微分を実行するのが簡単なのに、なぜ最初に数値勾配を提供するのですか?

[編集]

  • 明確にするために、私の質問は確かに特定のアプリケーションよりも一般的な意味です。私の応用分野は、たまたま、さまざまな統計フレームワークの下での尤度最適化です。

  • 自動微分に関する私の問題は、常に問題があるように見えることです。ADライブラリーが外部ライブラリー呼び出し(BLASなど)に伝搬できないか、ワークフローを大幅にやり直さなければならないため、対処するのが面倒になります...特に、タイプ依存の言語で作業している場合。ADに対する私の不満は、まったく別の問題です。でも信じたい!

  • 私は私の質問をよりよく定式化する必要があると思いますが、私はそれをうまくやっていません。導関数なしの最適化アルゴリズムまたは導関数ベースの最適化アルゴリズムのいずれかを使用するオプションがあり、私がそれに与えることができるのは数値勾配のみであるという警告がある場合、平均してどちらが優れていますか?


2
有限差分を使用しておおよその勾配を計算するのではなく、なぜ分析勾配を提供するのかと尋ねようとしていますか?
spektr 2016

1
別の言い方をすると、私の質問は、方程式が分析勾配を計算するにはあまりにも複雑すぎると仮定した場合、勾配依存最適化アルゴリズムは、勾配をまったく必要としないものよりも優れているのでしょうか?
bigglesworth教授、16

それはあなたが上で提起したものとは別の質問です。有限要素など、他の方法で数値導関数を計算できる場合があります。
nicoguaro

1
@nicoguaroはい、偏微分方程式を使用した最適化のコンテキストでは、確かにそうです(そして、これは私の研究分野の1つであり、私も最初に考えました)。しかし、質問はその方向で何も言及していません(この一般性の中でより有用です。私は思う)。
クリスチャンクラソン16

1
また、その場合でも、それは合理的な質問です。PDEの(システム)が非常に複雑で、勾配を取得するために数値的に解く随伴方程式を導出できない場合はどうなりますか?(これらのことは、特に非標準の境界条件が関係している場合は、かなり厄介になる可能性があります。)
クリスチャンクラソン'19 / 07/16

回答:


11

ブライアンの優れた答えを補足するために、少し(社説)の背景を述べさせてください。導関数なしの最適化メソッドは、関数評価のみを使用するメソッドとして定義され、基本的には「許容セットを体系的にサンプリングし、最適な関数値を保存する」のすべてのバリエーションです-これは、情報を与えられれば実行できるすべてです。これらのメソッドは、おおよそ次のように分類できます。

  1. 確率論的方法。サンプルの選択は基本的にランダムです(ランダム性が重要なコンポーネントであることを意味します。他の確定的なコンポーネントが存在する場合もあります)。これらの方法はしばしば物理的または生物学的プロセスによって動機付けられ、「シミュレーテッドアニーリング」、「遺伝的アルゴリズム」、または「粒子群/ホタル/蟻塚法」などの対応する名前があります。「十分に長く試した場合、すべてのポイント(最小化を含む)を確率ヒットする」(それが起こる可能性があるかどうか-確率で-宇宙の熱死が別の問題になる前に)を超える収束理論はめったにありません。...)数学者として、私はこれらの方法を最後の手段と考えます:何も知らない場合1 あなたの機能については、これがあなたができるすべてであり、あなたは幸運になるかもしれません。

  2. 決定論的方法。サンプルの選択はランダムではありません。つまり、以前の関数評価にのみ基づいています。最も有名な例は、おそらくネルダー・ミードのシンプレックス法です。他はセット検索メソッドを生成しています。これが機能するのは、異なるポイントでの関数の値の間に(悪用可能な)関係がある場合にのみ機能することを理解することが重要です。つまり、関数の滑らかさです。実際、ネルダー・ミード法などの収束理論は、不均一性の構築に基づいています。シンプレックスの頂点での関数値に基づく勾配の有限差分近似であり、シンプレックスが点に収縮すると、正確な勾配とゼロの両方に収束することを示します。(標準の有限差分近似に基づくバリアントは、コンパス検索と呼ばれます。)

  3. モデルベースの方法。関数値を使用して関数のローカルモデルを作成し(たとえば、内挿による)、標準の(勾配/ヘッシアンベースの)メソッドを使用して最小化します。有限差分近似は多項式内挿の正確な導関数と同等であるため、従来の「数値勾配」アプローチもこのクラスに分類されます。

ご覧のとおり、これらのクラス間の境界は流動的であり、多くの場合、単なる解釈の問題です。しかし、道徳は明確でなければなりません:最小化している関数に関するすべての利用可能な情報を使用してください。Cornelius Lanczosを引用するには:

情報の欠如は、数学的トリックでは解消できません。

結局のところ、関数について何も知らなければ、それは完全にランダムになる可能性もあり、ランダム値を最小化することは愚か者の用事です...


17

目的が滑らかな場合、微分に有限差分近似を使用する方が、微分なしの最適化アルゴリズムを使用するよりも効果的であることがよくあります。導関数を正確に計算するコードがある場合、通常は有限差分近似を使用するのではなく、そのコードを使用するのが最善です。

一部の最適化ライブラリは、ヒューリスティックを使用して自動的に有限差分近似を計算し、ステップサイズパラメーターを決定しますが、適切なステップサイズについての知識があるか、またはコードが利用できる関数内の特別な構造。

しばしば価値があるもう1つのオプションは、自動微分手法を使用して、目的関数自体を計算するためのソースコードから分析的導関数を計算するサブルーチンを生成することです。


3
+1で自動微分。これは多くの場合、勾配のアプリオリシンボリック式または有限差分近似よりもはるかに優れています。
leftaroundabout '19

自動微分の使用もお勧めします。Fortranについては、ソース変換に基づくINRIA Sophia-AntipolisのTapenadeを試してください。C / C ++には、adol-c、adept、sacado(Trilinosの一部)などの選択肢があります。これらはすべて、オペレーターのオーバーロードに基づいており、使いやすいですが、非常に大きな問題に対してはあまり効率的ではありません。
cfdlab

自動微分(AD)を適用することが難しい場合もありますが、複雑なステップ微分は、ADとほぼ同じになる場合があります(リバースモードで一度に勾配全体を計算できないこともあります)。 AD)は適用可能で、比較的簡単に適用できます。
マークL.ストーン

改訂された質問への応答:目的がスムーズである場合(そうでない場合、微分ベースの最適化アルゴリズムを使用しても意味がありません)、変数の数がかなり少ない場合(有限差分微分を行うことは、PDE制約付き最適化では機能しません) )、その場合は、DFO手法を使用するよりも、有限差分近似を使用した微分ベースの最適化手法を使用する方が良いでしょう。
Brian Borchers

4

あなたの質問は勾配ベースのオプティマイザについて尋ねているので、ブライアンは正しかったと思います。私は現在、私自身がそれに苦労しているので、いくつかの問題を共有します。

有限差分の問題は、1)各次元に対して関数を再評価する必要があるためパフォーマンスであり、2)適切なステップサイズを選択するのは難しい場合があります。ステップが大きすぎると、関数の線形性の仮定が成り立たなくなる可能性があります。ステップが小さすぎる場合、微分はノイズを増幅するため、関数自体のノイズに遭遇する可能性があります。関数が微分方程式の解法を含む場合、後者は実際の問題になる可能性があります。勾配を分析的に、または感度方程式を使用して計算することが可能である場合、それは確かにより正確であり、おそらくより速くなります。

ソフトウェアにあまり多くの時間を費やしていない場合に試すことができる別のアプローチがあり、それは複雑な算術で実行することです。これは、複雑なステップ微分と呼ばれます。基本的な考え方は、関数を評価するときに、パラメーターXに関する勾配が必要な場合、Xの虚数部を非常に小さな数epsに設定することです。計算を行った後、関数の値の虚数部をepsで除算すると、Xに関する勾配になります。もちろん、Yに関する勾配が必要な場合は、すべてをもう一度行う必要があります。それについて興味深いのは、そのepsです。非常に小さくすることができます。これが機能する理由は、微分計算の通常の規則が複雑な計算の規則に正確に反映されているためです。

とは言っても、複雑な計算で複雑な関数を実行するのは必ずしも簡単ではないため、万能薬ではないと考えています。勾配を分析的に計算できればそれは価値がありません。微分方程式の場合は、感度方程式とまったく同じです。、必要に応じて行っています。


主な利点の1つは、この複雑な有限差分式で減算を行わないことです。しばらく前にこの方法の派生について話している論文を読んだとき、それは彼らが他の有限差分公式と比較して実験的に検証しているように見えるポイントの1つでした。この違いにより、丸め誤差が問題になる前に、より小さいステップサイズを選択できました。
spektr

@choward:そうです。それがいいところです。でも私は懐疑的でした。私の同僚の何人かは、それを魔法の弾丸だと思っているようでした。私はそれが感度方程式と同等であると疑い、私の同僚の1人である応用数学者がそれを証明しました。
Mike Dunlavey、2016

感度方程式については、これでかっこいいです。これは興味深いアプローチですが、実装とトレードオフの関係にある可能性があります。これを使用する場合、関数の複雑なバージョンを定義してから、追加の複雑な変数代数/計算を実行する必要があります。これにより、各関数の評価が長くなります。これは、より遅い関数評価が追加された微分精度に値するかどうかを判断する必要があることの1つです。
spektr 2016

@choward:それが私が見つけた結論です。さらに、通常はベクトルを最適化します。つまり、繰り返し評価を行います。もちろん、代わりの方法は、感度方程式を導き出すのが難しいことです。私は記号による微分を使用していますが、それらはまだトリッキーです。全体の主題は少し地雷原です。
Mike Dunlavey 16
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.