好,會寫這篇的原因是因為最近拜讀了一篇由大神David Blei團隊所寫的這篇文章,順便邊讀邊寫,
這個方法的賣點是不需要手動計算複雜的積分也可以做Variational Inference。
先複習一下,Variational Bayes的精神就是找一個替代的替身 q(θ) 並且讓它和posterior p(θ,x) 越像越好,也就是盡全力把 KL[q(θ),p(θ,x)] 變得很小就對了!接下來,
KL[q(θ),p(θ|x)]
=∫q(θ)logq(θ)p(θ,x)dθ−∫q(θ)logp(x)dθ
=∫q(θ)logq(θ)p(θ,x)dθ−logp(x)
=Eq[q(θ)]−Eq[logp(θ,x)]−C
ELBO=Eq[logp(θ,x)]−Eq[q(θ)]
只要不斷讓ELBO越來越大, KL[q(θ),p(θ,x)] 就會越來越小。
好現在假設我們的其中一個替身叫做q(θ|λ),最佳化 λ 的梯度(gradient)就是
=∫∇λ(logp(θ,x)−logq(θ|λ))q(θ|λ)dθ
+∫∇λq(θ|λ)(logp(θ,x)−logq(θ|λ))dθ
其中,
∫∇λ(logp(θ,x)−logq(θ|λ))q(θ|λ)dθ
=−Eq[∇λlogq(θ|λ)]=0
剩下另外一個,因為
∇λq(θ|λ)=q(θ|λ)∇λlogq(θ|λ)
就可以寫成
∫∇λlogq(θ|λ)(logp(θ,x)−logq(θ|λ))q(θ|λ)dθ
=Eq[∇λlogq(θ|λ)(logp(θ,x)−logq(θ|λ))]
這個東西是可以用Monte Carlo integration估計的,只要從 q 中抽樣就可以了。
因此說了一堆,黑箱版本的好處其實就是不需要手動計算複雜的積分(再次強調)也可以找出梯度,然後一次做最佳化就可以了。