ベイズ最適化を使ってみた

最近の個人的流行はSCDVなのですが、その流れでパラメータの最適化をする必要があって、ベイズ最適化を使ってみました。(なお、別に詳しいわけではないのでグリッドサーチとかとの比較は特にしていません)

ベイズ最適化には、Bayesian Optimizationを使いました。ポイントかな、と思った点を残しておきます。

メソッドがMaximizeしかない

自分の場合はある関数の出力が最小化されるパラメータの値を知りたかったので、maximizeだと不都合が生じました。なので、マイナスにして最大化しました。(それ以上でもそれ以下でもありません)

関数に最適化対象のパラメータしか渡せない

ある関数において、リターンを最大化するパラメータを探せ、と書くのですが、その時に関数にデータを渡すことができませんでした。なので、むりやりグローバル変数化して渡しました。正解かどうかは知りません。

重みの設定方法を間違えた

これはBayesian Optimizationの問題ではないですが、f(x) = a * x + yでaの最適化を最初はしていました。0 =< a =< 100として。とすると、おそらくBayesian Optimizationでは初期の「あたり付け」で0~100の中のランダムで選ぶのでxの重みが大きくなることがほとんど前提になってしまいます。

なので、f(x) = a * x + (100 - a) * yとして最適化を行うようにしました。直感的にもこちらの方がいいですね。


この記事が気に入ったらサポートをしてみませんか?