両方のプロセスは、未知の関数の最大値を推定するために使用されているようであり、明らかにその方法が異なります。
しかし、実際にはどちらの方法も本質的に交換可能ですか?どこで使用したいですか?
https://en.wikipedia.org/wiki/Simulated_annealing
同様の質問
ベイズ最適化または勾配降下?
両方のプロセスは、未知の関数の最大値を推定するために使用されているようであり、明らかにその方法が異なります。
しかし、実際にはどちらの方法も本質的に交換可能ですか?どこで使用したいですか?
https://en.wikipedia.org/wiki/Simulated_annealing
同様の質問
ベイズ最適化または勾配降下?
回答:
シミュレーテッドアニーリング(SA)は、ベイジアン最適化(BO)と比較して非常に単純なアルゴリズムです。どちらの方法もコスト関数の凸性を想定しておらず、どちらの方法も勾配情報に大きく依存していません。
SAは、ある程度教育を受けたランダムウォークです。候補解は、特定のジャンプスケジュール(冷却パラメーター)を持つ解空間を飛び越えます。あなたは前に着陸した場所を気にしません、あなたはあなたが次に着陸する場所を知りません。これは典型的なマルコフ連鎖アプローチです。基礎となるソリューションサーフェスに関する強力な仮定をモデル化しません。MCMCの最適化はSAから遠くまで進んでいますが(たとえば、ハミルトニアンモンテカルロを参照)、これ以上は拡張しません。SAの重要な問題の1つは、「高速」で何度も評価する必要があることです。そして、それは理にかなっています。可能な限り多くの状態(候補ソリューション)を探索するには、できるだけ多くのサンプルが必要です。ほんの少しの勾配情報のみを使用します(ほとんど常に「より良い」解を受け入れます)。
今BOを見てください。BO(またはコスト関数評価に対する単純なガウスプロセス(GP)回帰)は、関数評価に関して正反対のことを試みます。それはあなたが行う評価の数を最小化しようとします。ノイズを想定することが多いコスト関数の特定のノンパラメトリックモデル(通常はGP)を構築します。グラデーション情報は一切使用しません。BOを使用すると、少数の関数評価でコスト関数の有益なモデルを構築できます。その後、このフィットされた関数をその極値について「クエリ」します。再び悪魔は細部にあります。あなたはインテリジェントにサンプリングする必要があります(そしてあなたの以前のものも半分合理的であると仮定します)。特に関数が時間の経過とともに実際にわずかに進化することがわかっている場合(たとえば、ここ)、次に関数を評価する場所に関する作業があります。
BOに対するSAの明らかな利点は、SA内でソリューションスペースに制約を課すことが非常に簡単であることです。たとえば、非負の解が必要な場合は、サンプル分布を非負の解に限定します。同じことはBOではそれほど直接的ではありません。制約(たとえば、非負)に従って関数を評価する場合でも、実際にプロセスを制約する必要があるためです。このタスクは不可能ではありませんが、より複雑です。
一般に、コスト関数の評価が安価な場合はSAを、コスト関数の評価が高価な場合はBOを選択します。SAはゆっくりではあるが着実に好意から外れていると思う。特に、勾配のない最適化の作業(例:NEWQUA、BOBYQA)は、微分を評価する必要のない標準の勾配降下法と比較して、その主要な利点の1つを取り除きます。同様に、アダプティブMCMCでの作業(たとえば、上記の参照を参照)は、ほとんどすべてのケースでMCMC最適化の点で無駄になります。