ふと、ベイズ最適化って何がベイズなんだ?と思ったので調べました。
ベイズ最適化とは
ベイズ最適化の目的:未知の目的関数 f の global maximizer (minimizer) を発見すること。
x∗=x∈Xargmaxf(x)
ベイズ最適化を利用すると、効率的に入力の空間 X を探索して目的関数 f の最適値を求めることができます。
具体的には、ベイズ的な更新を利用して獲得関数 αn:X→R を導出し、探索を効率化します。αn を最大化するように xn+1 を選ぶことで、f を最大化するのに有用な候補点を選択できるということです。
アルゴリズム 1: ベイズ最適化
- 獲得関数 αn を最適化するように新しい点 xn+1 を選ぶ。
xn+1=xargmax αn(x;Dn)
- 点 xn+1 に対応する出力 yn+1=f(xn+1) を取得する。
- データを拡張する。 Dn+1={Dn,(xn+1,yn+1)}
- 獲得関数を定める統計モデル p(w∣Dn) を更新する。
p(w∣Dn+1)=p((xn+1,yn+1))p((xn+1,yn+1)∣w)×p(w∣Dn)
- 手順 1 から手順 4 を繰り返す。
ベイズ更新は、ベイズの定理から導かれます。
p(A∣B,C)=p(C)p(C∣A)p(B)p(B∣A)p(A)=p(C)p(C∣A)×p(A∣B)
なるほど。"ベイズ的に獲得関数を更新していく"からベイズ最適化というのか。
以下では、パラメトリックな方法とノンパラメトリックな方法によるベイズ最適化を見ていきます。
パラメトリックなベイズ最適化
ここでは、線形モデルを利用したパラメトリックなベイズ最適化について考えます。この場合、目的関数 f を線形モデルとしてモデリングします。
fw(x)=x⊤w
線形モデルなので、観測値 y は平均 x⊤w、分散 σ2 の正規分布に従うとします。
y∼N(x⊤w, σ2)
正規分布の共役事前分布として、正規逆ガンマ分布 (NIG) を利用します。
事前分布 |
尤度 |
事後分布 |
正規逆ガンマ分布 |
正規分布 |
正規逆ガンマ分布 |
p(y ∣ x,w,σ2)p(w,σ2)=N(y ∣ x⊤w, σ2)=NIG(w,σ2∣w0,V0,α0,β0)
このとき、共役性から事後分布も正規逆ガンマ分布となります。
p(w,σ2 ∣ y,x)=NIG(w,σ2∣y,x,wn,Vn,αn,βn)Vnwnαnβn=(V0−1+x⊤x)−1=Vn(V0w0+x⊤y)=α0+n/2=β0+21(w0⊤V0−1w0+y2−wnVnwn)
したがって、事後分布からサンプリングした w~ を利用し、次の点を決めることができます。(サンプリングして獲得関数を生成します。)
w~∼p(w∣Dn),xnew=x∈Xargmax x⊤w~
引き続き xnew に対応する出力を取得してベイズ更新を繰り返せば、効率的に local maximizer に辿り着くことができます。これが線形モデルを用いたベイズ最適化です。
アルゴリズム 2: ベイズ最適化(線形モデル)
- 線形モデルを用意する。
p(y ∣ x,w,σ2)p(w,σ2)p(w,σ2 ∣ y,x)=N(y ∣ x⊤w, σ2)=NIG(w,σ2∣w0,V0,α0,β0)=NIG(w,σ2∣y,x,wn,Vn,αn,βn)
- 獲得関数 αn を最適化するように新しい点 xn+1 を選ぶ。
w~∼p(w∣Dn),αn(x)=x⊤w~xn+1=xargmax αn(x;Dn)
- 点 xn+1 に対応する出力 yn+1=f(xn+1) を取得する。
- データを拡張する。 Dn+1={Dn,(xn+1,yn+1)}
- 線形モデルを更新する。
p(w,σ2 ∣Dn+1)=NIG(w,σ2∣Dn+1,wn+1,Vn+1,αn+1,βn+1)
- 手順 1 から手順 4 を繰り返す。
ノンパラメトリックなベイズ最適化
目的関数に明示的なモデルを設定しないノンパラメトリックなベイズ最適化も利用されています。そのうち最も良く利用されているのがガウス過程です。
ガウス過程 GP による回帰では、次のような生成モデル(観測誤差ありのガウス過程回帰)を考えます。
p(y ∣ f,σ2)p(f ∣ X)=N(y∣f,σ2I)=N(f∣m,K)
ただし、X=(x1,…,xn), y=(y1,…,yn), f=(f(x1),…,f(xn)) と表記します。また、m が平均ベクトル、K はカーネル行列で、その要素はカーネル関数 Kij=k(xi,xj) になっています。
X が与えられたときの y の分布は f に関して周辺化することで求められます。
p(y∣X)=∫p(y,f∣X) df=∫p(y∣f) p(f∣X) df=∫N(y∣f,σ2I) N(f∣m,K) df=N(y∣m,K+σ2I)
したがって、y は X から計算できる正規分布に従うことがわかります。これは、カーネル関数を
k′(xi,xj)=k(xi,xj)+σ2δij
とおきかえたガウス過程になっています。
f∼GP( m(x), k′(x,x′) )
f を明示的にモデル化しなくても、その同時分布が正規分布になっていて、f がブラックボックスのままで X から y の分布が計算できます。さらに、新しい入力 xnew に対する ynew の予測分布は、
p(ynew∣xnew,y,X)m∗K∗k∗=N( ynew ∣ m∗,K∗ )=m(xnew)+k∗(K′)−1(y−m)=k′(xnew,xnew)−k∗⊤(K′)−1k∗=(k′(xnew,x1),…,k′(xnew,xn))⊤
と計算できます。
獲得関数には色々なものが提案されていて、以下の Expected Improvement (EI) という方法がよく用いられるようです。ここで、Φ,ϕ はそれぞれ標準正規分布の分布関数と密度関数です。
α(x)=(m(x)−τ)Φ(z)+k′(x,x)ϕ(z)( τ=1≤i≤nmax(yi), z=k′(x,x)m(x)−τ )
アルゴリズム 3: ベイズ最適化(ガウス過程)
- ガウス過程モデルを用意する。
p(y ∣ X)f=N(y∣m,K)∼GP( m(x), k(x,x) )
- 獲得関数 αn を最適化するように新しい点 xn+1 を選ぶ。
αn(x)=(m(x)−τ)Φ(z)+k(x,x)ϕ(z)xn+1=xargmax αn(x;Dn)
- 点 xn+1 に対応する出力 yn+1=f(xn+1) を取得する。
- データを拡張する。 Dn+1={Dn,(xn+1,yn+1)}
- ガウス過程モデルを更新する。
[yyn+1]∼N([mm(xn+1)],[Kk∗⊤k∗k(xn+1,xn+1)])
- 手順 1 から手順 4 を繰り返す。
Reference
- Shahriari, B., Swersky, K., Wang, Z., Adams, R. P., & De Freitas, N. (2015). Taking the human out of the loop: A review of Bayesian optimization. Proceedings of the IEEE, 104(1), 148-175.
- 持橋大地, 大羽成征, & 講談社サイエンティフィク. (2019). ガウス過程と機械学習 = Gaussian process and machine learning. 講談社.
- 明治大学講演資料「機械学習と自動ハイパーパラメタ最適化」 佐野正太郎
- ベイズ最適化 (その2):獲得関数
- Thompson Samplingのアルゴリズム
- Frazier, P. I. (2018). A tutorial on bayesian optimization. arXiv preprint arXiv:1807.02811.
- AI手法(ガウス過程)を用いた予測―理論篇