こんにちは. 新学期も始まり, そろそろ新しい環境にも慣れてきた頃でしょうか.

 

私は研究室に配属され, 今の所はまったり研究室ライフを送っています.(GW明けからはまったりとはいかないようです)

 

情報学科志望なのに何故か化学科に来てしまった私は, 実験漬けの研究生活を送るのか…と覚悟を決めていたのですが, 嬉しいことに情報系の研究をさせてもらえることになりました. やったあ

 

というわけで今回は私の研究テーマでもあるベイズ最適化について復習がてらにまとめようと思います.

 

みなさんベイズ最適化をご存じでしょうか. ベイズ最適化とは, 未知関数(ブラックボックス関数)の最大値または最小値を求める手法です. 関数がわからないのに最小値や最大値がわかるなんてすごいですよね.

 

このブラックボックス関数とは, 関数の中身はわからないけど値xを入力すると値yを出力してくれるものです.

 

もちろん, 何か入力したら出力があるのでかたっぱしから値を代入すればこの関数はどんな形かわかるし, 最大値・最小値もわかります.

でもこの方法はあんまり賢くないです. 計算量が増えて時間かかるし.

 

関数の中身はわからなくていいから, できるだけ少ない回数で最小値・最大値を求めたいよーって時にこのベイズ最適化を用います.

 

 

                   

 

それでは, 最小値を求める方法を考えます.

 

ここで, 真の関数 L(λ) (ブラックボックス関数 ) はわからないけどその関数上の5点だけわかる場合を考えます. とりあえずこの与えられた5点のパラメータから近似関数を推測します. これを獲得関数 a(λ) と呼びます. この推測ではガウス過程を用います.

 

(ガウス過程とは, パラメータを分布という確率密度で表現することで, あいまいさをもったモデル関数がわかるというものです. 難しいですね.)

 

次に, この a(λ) を最小にするλ' を求めます.

 

そして, このλ' を真の関数に代入し, L(λ')を求めてパラメータを増やします.

 

a(λ') がL(λ') の値に近ければ, λ' 付近の関数の確率密度は高くなります. すなわちλ' 付近に最小値があるのではないかと予測できます.

a(λ') がL(λ') の値から遠ければ, 獲得関数a(λ)を修正します.

 

このようにしてどんどんa(λ) を最小にするλ' を求め,真の関数 L(λ) 最小値を求めます. 

 

、、、とまあわかったようなわからないような話ですね. 今回は1 変数関数で考えましたが, これが多変数関数になるともっと難しい話になります.

 

一応化学系ですので, このベイズ最適化を化学系の研究で用いられるシュミレーションソフトに実装することが私の目標です.

 

とっても大変そうですがやりたいことをやらせてもらえるからには頑張ろうと思います!

 

__それでは。