正在學,把網上優質文章整理了一下。
我們經常利用貝葉斯公式求posterior distribution
P(Z∣X)
P(Z∣X)=∫zp(X,Z=z)dzp(X,Z)
但posterior distribution
P(Z∣X)求解用貝葉斯的方法是比較困難的,因爲我們需要去計算
∫zp(X=x,Z=z)dz,而
Z通常會是一個高維的隨機變量,這個積分計算起來就非常困難。在貝葉斯統計中,所有的對於未知量的推斷(inference
)問題可以看做是對後驗概率(posterior
)的計算。因此提出了Variational Inference
來計算posterior distribution
。
那Variational Inference
怎麼做的呢?其核心思想主要包括兩步:
- 假設一個分佈
q(z;λ) (這個分佈是我們搞得定的,搞不定的就沒意義了)
- 通過改變分佈的參數
λ,使
q(z;λ) 靠近
p(z∣x)。
總結稱一句話就是,爲真實的後驗分佈引入了一個參數話的模型。 即:用一個簡單的分佈
q(z;λ) 擬合複雜的分佈
p(z∣x)。
這種策略將計算
p(z∣x) 的問題轉化成優化問題了
λ∗=argλmindivergence(p(z∣x),q(z;λ))
收斂後,就可以用
q(z;λ) 來代替
p(z∣x)了。
KL散度
而用一個分佈去擬合另一個分佈通常需要衡量這兩個分佈之間的相似性,通常採用KL
散度,當然還有其他的一些方法,像JS
散度這種。下面介紹KL散度:
機器學習中比較重要的一個概念—相對熵(relative entropy
)。相對熵又被稱爲KL散度(Kullback–Leibler divergence
) 或信息散度 (information divergence
),是兩個概率分佈間差異的非對稱性度量 。在信息論中,相對熵等價於兩個概率分佈的信息熵的差值,若其中一個概率分佈爲真實分佈,另一個爲理論(擬合)分佈,則此時相對熵等於交叉熵與真實分佈的信息熵之差,表示使用理論分佈擬合真實分佈時產生的信息損耗 。其公式如下:
DKL(p∥q)=i=1∑N[p(xi)logp(xi)−p(xi)logq(xi)]
合併之後表示爲:
DKL(p∥q)=i=1∑Np(xi)log(q(xi)p(xi))
假設理論擬合出來的事件概率分佈
q(x)跟真實的分佈
p(x)一模一樣,即
p(x)=q(x),那麼
p(xi)logq(xi)就等於真實事件的信息熵,這一點顯而易見。在理論擬合出來的事件概率分佈跟真實的一模一樣的時候,相對熵等於0。而擬合出來不太一樣的時候,相對熵大於0。其證明如下:
i=1∑Np(xi)logp(xi)q(xi)≤i=1∑Np(xi)(p(xi)q(xi)−1)=i=1∑N[p(xi)−q(xi)]=0
其中第一個不等式是由
ln(x)≤x−1推導出來的,只在
p(xi)=q(xi)時取到等號。
這個性質很關鍵,因爲它正是深度學習梯度下降法需要的特性。假設神經網絡擬合完美了,那麼它就不再梯度下降,而不完美則因爲它大於0而繼續下降。
但它有不好的地方,就是它是不對稱的。也就是用
P 來擬合
Q 和用
Q 來擬合
P 的相對熵居然不一樣,而他們的距離是一樣的。這也就是說,相對熵的大小並不跟距離有一一對應的關係。
求解
中間引入了KL
散度,但是我們本文的目的還是來求這個變分推理,不要走偏了。下面涉及一些公式等價轉換:
logP(x)=logP(x,z)−logP(z∣x)=logQ(z;λ)P(x,z)−logQ(z;λ)P(z∣x)
等式兩邊同時對
Q(z)求期望,得:
Eq(z;λ)logP(x)logP(x)logP(x)=Eq(z;λ)logP(x,z)−Eq(z;λ)logP(z∣x)=Eq(z;λ)logq(z;λ)p(x,z)−Eq(z;λ)logq(z;λ)p(z∣x)=KL(q(z;λ)∥p(z∣x))+Eq(z;λ)logq(z;λ)p(x,z)=KL(q(z;λ)∥p(z∣x))+Eq(z;λ)logq(z;λ)p(x,z)
到這裏我們需要回顧一下我們的問題,我們的目標是使
q(z;λ) 靠近
p(z∣x) ,就是求解:
λminKL(q(z;λ)∣∣p(z∣x))
而由於
KL(q(z;λ)∣∣p(z∣x))中包含
p(z∣x),這項非常難求。藉助上述公示的推導變形得到的結論:
logP(x)=KL(q(z;λ)∥p(z∣x))+Eq(z;λ)logq(z;λ)p(x,z)
將
λ看做變量時,
logP(x) 爲常量,所以,
minλKL(q(z;λ)∣∣p(z∣x))等價於 :
λmaxEq(z;λ)logq(z;λ)p(x,z)
現在,variational inference
的目標變成:
λmaxEq(z;λ)[logp(x,z)−logq(z;λ)]
Eq(z;λ)[logp(x,z)−logq(z;λ)]稱爲Evidence Lower Bound(ELBO)
。
p(x)一般被稱之爲evidence
,又因爲
KL(q∣∣p)>=0, 所以
p(x)>=Eq(z;λ)[logp(x,z)−logq(z;λ)], 這就是爲什麼被稱爲ELBO
。
ELBO
ELBO
公式表達爲:
Eq(z;λ)[logp(x,z)−logq(z;λ)]
原公式可表示爲:
logP(x)=KL(q(z;λ)∥p(z∣x))+Eq(z;λ)logq(z;λ)p(x,z)
引入ELBO
表示爲:
logP(x)=KL(q(z;λ)∥p(z∣x))+ELBO
實際上EM
算法(Expectation-Maximization
)就是利用了這一特徵,它分爲交替進行的兩步:E step
假設模型參數不變,
q(z)=p(z∣x),計算對數似然率,在M step
再做ELBO
相對於模型參數的優化。與變分法比較,EM算法假設了當模型參數固定時,
p(z∣x) 是易計算的形式,而變分法並無這一限制,對於條件概率難於計算的情況,變分法仍然有效。
那如何來求解上述公式呢?下面介紹平均場(mean-field
)、蒙特卡洛、和黑盒變分推斷 (Black Box Variational Inference
) 的方法。
平均場變分族(mean-field variational family)
之前我們說我們選擇一族合適的近似概率分佈
q(Z;λ),那麼實際問題中,我們可以選擇什麼形式的
q(Z;λ) 呢?
一個簡單而有效的變分族爲平均場變分族(mean-field variational family
)。它假設了隱藏變量間是相互獨立的:
q(Z;λ)=k=1∏Kqk(Zk;λk)
這個假設看起來似乎比較強,但實際應用範圍還是比較廣泛,我們可以將其延展爲將有實際相互關聯的隱藏變量分組,而化爲各組聯合分佈的乘積形式即可。
利用ELBO
和平均場假設,我們就可以利用coordinate ascent variational inference
(簡稱CAVI
)方法來處理:
p(z1:m,x1:n)=p(x1:n)j=1∏mp(zj∣z1:(j−1),x1:n)
E[logq(z1:m)]=j=1∑mEj[logq(zj)]
將其代入ELBO
的定義得到:
ELBO=logp(x1:n)+j=1∑mE[logp(zj∣z1:(j−1),x1:n)]−Ej[logq(zj)]
將其對
zk 求導並令導數爲零有:
dq(zk)dELBO=E−k[logp(zk∣z−k,x)]−logq(zk)−1=0
由此得到coordinate ascent
的更新法則爲:
q∗(zk)∝expE−k[logp(zk,z−k,x)]
我們可以利用這一法則不斷的固定其他的
z 的座標來更新當前的座標對應的
z值,這與Gibbs Sampling
過程類似,不過Gibbs Sampling
是不斷的從條件概率中採樣,而CAVI
算法中是不斷的用如下形式更新:
q∗(zk)∝expE[log(conditional)]
其完整算法如下所示:
MCMC
MCMC
方法是利用馬爾科夫鏈取樣來近似後驗概率,變分法是利用優化結果來近似後驗概率,那麼我們什麼時候用MCMC
,什麼時候用變分法呢?
首先,MCMC
相較於變分法計算上消耗更大,但是它可以保證取得與目標分佈相同的樣本,而變分法沒有這個保證:它只能尋找到近似於目標分佈一個密度分佈,但同時變分法計算上更快,由於我們將其轉化爲了優化問題,所以可以利用諸如隨機優化(stochastic optimization
)或分佈優化(distributed optimization
)等方法快速的得到結果。所以當數據量較小時,我們可以用MCMC
方法消耗更多的計算力但得到更精確的樣本。當數據量較大時,我們用變分法處理比較合適。
另一方面,後驗概率的分佈形式也影響着我們的選擇。比如對於有多個峯值的混合模型,MCMC
可能只注重其中的一個峯而不能很好的描述其他峯值,而變分法對於此類問題即使樣本量較小也可能優於MCMC
方法。
黑盒變分推斷(BBVI)
ELBO
公式表達爲:
Eq(z;λ)[logp(x,z)−logq(z;λ)]
對用參數
θ替代
λ,並對其求導:
∇θELBO(θ)=∇θEq(logp(x,z)−logqθ(z))
直接展開計算如下:
===∂θ∂∫qθ(z)(logp(x,z)−logqθ(z))dz∫∂θ∂[qθ(z)(logp(x,z)−logqθ(z))]dz∫∂θ∂(qθ(z)logp(x,z))−∂θ∂(qθ(z)logqθ(z))dz∫∂θ∂qθ(z)logp(x,z)−∂θ∂qθ(z)logqθ(z)−∂θ∂qθ(z)dz
由於:
∫∂θ∂qθ(z)dz=∂θ∂∫qθ(z)dz=∂θ∂1=0
因此:
∇θELBO(θ)=∫∂θ∂qθ(z)(logp(x,z)−logqθ(z))dz=∫qθ(z)∂θ∂logqθ(z)(logp(x,z)−logqθ(z))dz=∫qθ(z)∇θlogqθ(z)(logp(x,z)−logqθ(z))dz=Eq[∇θloggqθ(z))dz=∫qθ(z)∂θ∂logqθ(z)(logp(x,z)−logqθ(z))dz=∫qθ(z)∇θlogqθ(z)(logp(x,z)−logqθ(z))dz=Eq[∇θlogqθ(z)(logp(x