ベイズ最適化を使ってみた
最近の個人的流行は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として最適化を行うようにしました。直感的にもこちらの方がいいですね。
この記事が気に入ったらサポートをしてみませんか?