当前位置: 代码迷 >> 综合 >> 22-变分推断-variational inference
  详细解决方案

22-变分推断-variational inference

热度:38   发布时间:2024-01-09 05:59:30.0

文章目录

  • 1.背景
    • 1.1 频率派
      • 1.1.1 回归问题
      • 1.1.2 SVM支持向量机(分类问题)
      • 1.1.3 EM
    • 1.2 贝叶斯派
  • 2.公式推导
    • 2.1平均场理论
  • 3.再回首
    • 3.1 符号规范
  • 4. SGVI-随机梯度变分推断
    • 4.1求梯度 ? ? L ( ? ) \nabla_{\phi}L(\phi) ???L(?)
    • 4.2 梯度采样
    • 4.3 重参数化技巧

1.背景

关于变分推断,现在补充一点背景知识,以便让每一个模块都很独立。我们指导机器学习可以分为频率派和贝叶斯派两大派系,关于这两个派系都有各自不同的特点。

1.1 频率派

我们知道从频率派角度来看,最终会演化为一个优化问题。比如我们熟悉的回归问题

1.1.1 回归问题

假设我们有一堆数据 D = { ( x i , y i ) } i = 1 N , x i ∈ R P , y i ∈ R ; D=\{(x_i,y_i)\}_{i=1}^N,x_i\in R^P,y_i\in R; D={ (xi?,yi?)}i=1N?,xi?RP,yi?R;,我们定义的模型为:
f ( x ) = W T X (1) f(x)=W^TX\tag1 f(x)=WTX(1)

  • 定义一条线,我们需要结合数据X把W估计出来。
    为了更好的拟合上述数据,我们提出了损失函数Loss Function:
    L ( W ) = ∑ i = 1 N ∣ ∣ w T x i ? y i ∣ ∣ 2 (2) L(W)=\sum_{i=1}^{N}||w^Tx_i-y_i||^2\tag2 L(W)=i=1N?wTxi??yi?2(2)
    最后估计出来的w用 w ^ \hat w w^表示:
    w ^ = arg ? min ? w L ( W ) (3) \hat w =\mathop{\arg\min}\limits_{w}L(W)\tag3 w^=wargmin?L(W)(3)

  • 这是一种无约束的优化问题。
    求解上述优化问题我们有两种方法:

  • 解析解:
    ? L ( W ) ? w = 0 → W ? = ( X T X ) ? 1 X T Y (4) \frac{\partial L(W)}{\partial w}=0\rightarrow W^*=(X^TX)^{-1}X^TY\tag4 ?w?L(W)?=0W?=(XTX)?1XTY(4)

  • 数值解:
    当解析解无法求解的时候,我们用梯度下降的方式求解GD,或者用随机梯度下降的方式求解SGD

1.1.2 SVM支持向量机(分类问题)

SVM支持向量机本质上就是一个分类问题。我们定义SVM的模型为:
f ( w ) = s i g n ( w T x + b ) (5) f(w)=sign(w^Tx+b)\tag5 f(w)=sign(wTx+b)(5)
我们定义SVM支持向量机的Loss Function损失函数为:
L ( W ) = 1 2 w T w ; s . t : y i ( w T x i + b ) ≥ 1 , i = 1 , 2 , . . . , N (6) L(W)=\frac{1}{2}w^Tw;s.t:y_i(w^Tx_i+b)\geq1,i=1,2,...,N\tag6 L(W)=21?wTw;s.t:yi?(wTxi?+b)1,i=1,2,...,N(6)

  • 这是一个约束问题,也是一个凸优化问题。
    解法是用QP套件或者用拉格朗日对偶来求解。

1.1.3 EM

EM算法也是一种优化问题的思想,通过不停的迭代,来找到最好的参数:迭代公式如下:
θ ( t + 1 ) = arg ? max ? θ ∫ z log ? P ( X , Z ∣ θ ) ? P ( Z ∣ X , θ ( t ) ) d z (7) \theta^{(t+1)}=\mathop{\arg\max}\limits_{\theta}\int_z \log P(X,Z|\theta)·P(Z|X,\theta^{(t)})dz\tag 7 θ(t+1)=θargmax?z?logP(X,Zθ)?P(ZX,θ(t))dz(7)

  • 故EM算法也是一个迭代优化问题

1.2 贝叶斯派

我们知道从频率派角度来看,最终会演化为一个积分问题。由贝叶斯公式可得:
P ( θ ∣ X ) = P ( X ∣ θ ) ? P ( θ ) P ( X ) (8) P(\theta|X)=\frac{P(X|\theta)·P(\theta)}{P(X)}\tag8 P(θX)=P(X)P(Xθ)?P(θ)?(8)

  • P ( θ ∣ X ) : 后 验 P(\theta|X):后验 P(θX):
  • P ( X ∣ θ ) : 似 然 P(X|\theta):似然 P(Xθ):
  • P ( θ ) : 先 验 P(\theta):先验 P(θ):
  • P ( X ) = ∫ θ P ( X ∣ θ ) ? P ( θ ) d θ : 对 参 数 空 间 X 的 积 分 P(X)=\int_{\theta}P(X|\theta)·P(\theta)d\theta:对参数空间X的积分 P(X)=θ?P(Xθ)?P(θ)dθX
    贝叶斯推断指的是在贝叶斯框架中需要把后验的分布 P ( θ ∣ X ) P(\theta|X) P(θX)求出来;贝叶斯决策就可以简单的理解为预测的意思。假设X为已经有的N个样本, X ^ \hat X X^为新的样本,决策的目标是为了求 P ( X ^ ∣ X ) P(\hat X|X) P(X^X)的值,为了求得新的 X ^ \hat X X^,那么我们就会引入一个新的参数 θ ; 使 得 \theta;使得 θ使
    X ^ → θ → X (9) \hat X \rightarrow \theta \rightarrow X\tag 9 X^θX(9)
    从而转变为如下公式:
    P ( X ^ ∣ X ) = ∫ θ P ( X ^ , θ ∣ X ) d θ = ∫ θ P ( X ^ , θ ∣ X ) ? P ( θ ∣ X ) d θ = E { θ ∣ X } [ P ( X ^ ∣ θ ) ] (10) P(\hat X|X)=\int _{\theta}P(\hat X,\theta|X)d \theta=\int_{\theta}P(\hat X,\theta|X)·P(\theta|X)d \theta=E_{\{\theta|X\}}[P(\hat X|\theta)]\tag {10} P(X^X)=θ?P(X^,θX)dθ=θ?P(X^,θX)?P(θX)dθ=E{ θX}?[P(X^θ)](10)
    所以最终的目标是求后验 P ( θ ∣ X ) P(\theta|X) P(θX),也就是推断inference。
    常见的推断分为两种:
  • 精确推断
  • 近似推断
    1.确定性近似推断:比如:VI 变分推断
    2.随机性近似推断:比如 MCMC,MH,Gibbs

2.公式推导

变分推断VI的目的就是想办法找到一个分布q(z)去逼近我们没有办法计算求得解析解的后验分布p(z|x).我们定义

  • X : o b s e r v e d ? d a t a 观 测 数 据 ; X:observed-data观测数据; X:observed?data
  • Z : l a t e n t ? v a r i a b l e + p a r a m e t e r 隐 变 量 Z:latent-variable+parameter隐变量 Zlatent?variable+parameter
  • ( X , Z ) : c o m p l e t e ? d a t a 完 整 数 据 (X,Z):complete-data 完整数据 (X,Z):complete?data
    现在我们来根据贝叶斯公式来求导后验分布:
    由贝叶斯公式可得:

P ( X ) = P ( X , Z ) P ( Z ∣ X ) = P ( X , Z ) / q ( Z ) P ( Z ∣ X ) / q ( Z ) P(X)=\frac{P(X,Z)}{P(Z|X)}=\frac{P(X,Z)/q(Z)}{P(Z|X)/q(Z)} P(X)=P(ZX)P(X,Z)?=P(ZX)/q(Z)P(X,Z)/q(Z)?

两边取对数可得:

log ? P ( X ) = log ? [ P ( X , Z ) / q ( Z ) ] ? log ? [ P ( Z ∣ X ) / q ( Z ) ] \log P(X)=\log [P(X,Z)/q(Z)] - \log [{P(Z|X)/q(Z)}] logP(X)=log[P(X,Z)/q(Z)]?log[P(ZX)/q(Z)]

两边同时对分布q(Z)求期望:

左边:

∫ q ( z ) log ? P ( X ) d Z = ∫ Z log ? P ( X ) q ( Z ) d Z = log ? P ( X ) ∫ Z q ( Z ) d Z = log ? P ( X ) \int_{q(z)}\log P(X)dZ=\int_Z \log P(X)q(Z)dZ=\log P(X)\int_Z q(Z)dZ=\log P(X) q(z)?logP(X)dZ=Z?logP(X)q(Z)dZ=logP(X)Z?q(Z)dZ=logP(X)

右边:
∫ Z q ( Z ) log ? P ( X , Z ) q ( Z ) d Z ? E L B O + ∫ Z ( ? q ( Z ) log ? P ( Z ∣ X ) q ( Z ) d Z ) ? K L ( q ∣ ∣ p ) (11) \underbrace{\int_Z q(Z)\log \frac{P(X,Z)}{q(Z)} dZ}_{ELBO}+\underbrace{\int_Z(- q(Z)\log \frac{P(Z|X)}{q(Z)}dZ)}_{KL(q||p)}\tag{11} ELBO Z?q(Z)logq(Z)P(X,Z)?dZ??+KL(qp) Z?(?q(Z)logq(Z)P(ZX)?dZ)??(11)
则:
log ? P ( X ) = ∫ Z q ( Z ) log ? P ( X , Z ) q ( Z ) d Z ? E L B O = L ( q ) + ∫ Z ( ? q ( Z ) log ? P ( Z ∣ X ) q ( Z ) d Z ) ? K L ( q ∣ ∣ p ) (12) \log P(X)=\underbrace{\int_Z q(Z)\log \frac{P(X,Z)}{q(Z)} dZ}_{ELBO=L(q)}+\underbrace{\int_Z(- q(Z)\log \frac{P(Z|X)}{q(Z)}dZ)}_{KL(q||p)}\tag{12} logP(X)=ELBO=L(q) Z?q(Z)logq(Z)P(X,Z)?dZ??+KL(qp) Z?(?q(Z)logq(Z)P(ZX)?dZ)??(12)
我们定义一个函数L(q)来代替ELBO,用来说明ELBO的输入是关于q的函数,q是我们随意找到的概率密度函数,其中函数L(q)就是我们的所指的变分。由于我们求不出P(Z|X),我们的目的是找到一个q(Z),使得P(Z|X)近似于q(Z),也就是希望KL(q||p)越来越小,这样我们求得的ELBO越接近于 log ? P ( X ) \log P(X) logP(X),那么我们的目标可以等价于:
q ( Z ) ^ = arg ? max ? q ( Z ) L ( q ) → q ( Z ) ^ ≈ p ( Z ∣ X ) (13) \hat{q(Z)}=\mathop{\arg\max}\limits_{q(Z)} L(q)\rightarrow \hat{q(Z)}\approx p(Z|X)\tag{13} q(Z)^?=q(Z)argmax?L(q)q(Z)^?p(ZX)(13)

2.1平均场理论

为了求解q(Z),因为Z是一组隐变量组成的随机变量组合。我们假设q(Z)可以划分为M个组,且每个组之间是相互独立的。这种思想来自于物理学的平均场理论,表达如下:
q ( Z ) = ∏ i = 1 M q i ( Z i ) (14) q(Z)=\prod_{i=1}^{M}q_i(Z_i)\tag{14} q(Z)=i=1M?qi?(Zi?)(14)
平均场理论主要思想如下:
现在我们把q(Z)代入到L(q)中,因为q(Z)有M个划分,我们的想法是先求解第j项,所以我们需要固定其他所有项(固定 { 1 , 2 , . . . , j ? 1 , j + 1 , . . . , M } \{1,2,...,j-1,j+1,...,M\} { 1,2,...,j?1,j+1,...,M}).这样我们就一个一个求解 q j q_j qj?后再求积得到q(Z)即可。

  • 将q(Z)代入到L(q)中
    L ( q ) = ∫ Z q ( Z ) log ? P ( X , Z ) d Z ? 1 ? ∫ Z q ( Z ) log ? q ( Z ) d Z ? 2 (15) L(q)=\underbrace{\int_Zq(Z)\log P(X,Z)dZ}_{1}-\underbrace{\int_Zq(Z)\log q(Z)dZ}_{2}\tag {15} L(q)=1 Z?q(Z)logP(X,Z)dZ???2 Z?q(Z)logq(Z)dZ??(15)
    1 = ∫ Z ∏ i = 1 M q i ( Z i ) log ? P ( X , Z ) d Z 1 d Z 2 . . . d Z M 1=\int_Z\prod_{i=1}^{M}q_i(Z_i)\log P(X,Z)dZ_1dZ_2...dZ_M 1=Z?i=1M?qi?(Zi?)logP(X,Z)dZ1?dZ2?...dZM?

= ∫ Z j q j ( Z j ) d Z j ? [ ∏ i = 1 , 且 i ≠ j M q i ( Z i ) log ? P ( X , Z ) d Z 1 d Z 2 d Z j ? 1 d Z j + 1 . . d Z M ] =\int_{Z_j}q_j(Z_j)dZ_j·[\prod_{i=1,且i≠j}^{M}q_i(Z_i)\log P(X,Z)dZ_1dZ_2dZ_{j-1}dZ_{j+1}..dZ_M] =Zj??qj?(Zj?)dZj??[i=1,i??=jM?qi?(Zi?)logP(X,Z)dZ1?dZ2?dZj?1?dZj+1?..dZM?]

= ∫ Z j q j ( Z j ) d Z j ? ∫ Z i ; i = 1 , . . . j ? 1 , j + 1 , . . . M log ? P ( X , Z ) ∏ i ≠ j M q i ( Z i ) d Z i =\int_{Z_j}q_j(Z_j)dZ_j·\int_{Z_i;i=1,...j-1,j+1,...M}\log P(X,Z)\prod_{i≠j}^Mq_i(Z_i)dZ_i =Zj??qj?(Zj?)dZj??Zi?;i=1,...j?1,j+1,...M?logP(X,Z)i??=jM?qi?(Zi?)dZi?

= ∫ Z j q j ( Z j ) ? E ∏ i ≠ j M q i ( Z i ) [ log ? P ( X , Z ) ] d Z j =\int_{Z_j}q_j(Z_j)·E_{\prod_{i≠j}^Mq_i(Z_i)}[\log P(X,Z)]dZ_j =Zj??qj?(Zj?)?Ei??=jM?qi?(Zi?)?[logP(X,Z)]dZj?

2 = ∫ Z q ( Z ) log ? q ( Z ) d Z 2=\int_Zq(Z)\log q(Z)dZ 2=Z?q(Z)logq(Z)dZ

= ∫ Z ∏ i = 1 M q i ( Z i ) log ? ∏ i = 1 M q i ( Z i ) d Z =\int_Z\prod_{i=1}^{M}q_i(Z_i)\log \prod_{i=1}^{M}q_i(Z_i)dZ =Z?i=1M?qi?(Zi?)logi=1M?qi?(Zi?)dZ

= ∫ Z ∏ i = 1 M q i ( Z i ) [ ∑ i = 1 M log ? q i ( Z i ) ] d Z =\int_Z\prod_{i=1}^{M}q_i(Z_i)[\sum_{i=1}^{M}\log q_i(Z_i)]dZ =Z?i=1M?qi?(Zi?)[i=1M?logqi?(Zi?)]dZ

将求和展开后拿出第一项目进行分析:

第 一 项 = ∫ Z ∏ i = 1 M q i ( Z i ) log ? q 1 ( Z 1 ) ] d Z 第一项=\int_Z\prod_{i=1}^{M}q_i(Z_i)\log q_1(Z_1)]dZ =Z?i=1M?qi?(Zi?)logq1?(Z1?)]dZ

= ∫ Z 1 q 1 ( Z 1 ) log ? q 1 ( Z 1 ) d Z 1 ? ∫ Z 2 . . . Z M ∏ i = 2 M q i ( Z i ) d Z 2 . . . d Z M ? = 1 = ∫ Z 1 q 1 ( Z 1 ) log ? q 1 ( Z 1 ) d Z 1 =\int_{Z_1}q_1(Z_1)\log q_1(Z_1)dZ_1·\underbrace{\int _{Z_2...Z_M}\prod_{i=2}^{M}q_i(Z_i)dZ_2...dZ_M}_{=1}=\int_{Z_1}q_1(Z_1)\log q_1(Z_1)dZ_1 =Z1??q1?(Z1?)logq1?(Z1?)dZ1??=1 Z2?...ZM??i=2M?qi?(Zi?)dZ2?...dZM???=Z1??q1?(Z1?)logq1?(Z1?)dZ1?
同理可得:

2 = ∫ Z ∏ i = 1 M q i ( Z i ) [ ∑ i = 1 M log ? q i ( Z i ) ] d Z 2=\int_Z\prod_{i=1}^{M}q_i(Z_i)[\sum_{i=1}^{M}\log q_i(Z_i)]dZ 2=Z?i=1M?qi?(Zi?)[i=1M?logqi?(Zi?)]dZ

= ∫ Z 1 q 1 ( Z 1 ) log ? q 1 ( Z 1 ) d Z 1 + ∫ Z 2 q 2 ( Z 2 ) log ? q 2 ( Z 2 ) d Z 2 + . . . + ∫ Z M q M ( Z M ) log ? q M ( Z M ) d Z M =\int_{Z_1}q_1(Z_1)\log q_1(Z_1)dZ_1+\int_{Z_2}q_2(Z_2)\log q_2(Z_2)dZ_2+...+\int_{Z_M}q_M(Z_M)\log q_M(Z_M)dZ_M =Z1??q1?(Z1?)logq1?(Z1?)dZ1?+Z2??q2?(Z2?)logq2?(Z2?)dZ2?+...+ZM??qM?(ZM?)logqM?(ZM?)dZM?

= ∑ i = 1 M ∫ Z i q i ( Z i ) log ? q i ( Z i ) d Z i =\sum_{i=1}^{M}\int_{Z_i} q_i(Z_i)\log q_i(Z_i)dZ_i =i=1M?Zi??qi?(Zi?)logqi?(Zi?)dZi?
由于我们现在只关心第j项目,其他项目已经固定,所以上式可变为如下:

2 = ∫ Z j q j ( Z j ) log ? q j ( Z j ) d Z j + C 常 数 2=\int_{Z_j} q_j(Z_j)\log q_j(Z_j)dZ_j+C_{常数} 2=Zj??qj?(Zj?)logqj?(Zj?)dZj?+C?
综上所述:
我们发现1和2中的式子不一致,不方便化简,所以我们希望1中的式子也跟2中的log保持一致,这样就方便后续计算,所以我们定义如下:
因为:

1 = ∫ Z j q j ( Z j ) ? E ∏ i ≠ j M q i ( Z i ) [ log ? P ( X , Z ) ] d Z j 1=\int_{Z_j}q_j(Z_j)·E_{\prod_{i≠j}^Mq_i(Z_i)}[\log P(X,Z)]dZ_j 1=Zj??qj?(Zj?)?Ei??=jM?qi?(Zi?)?[logP(X,Z)]dZj?

为方便后续计算,转换如下:

1 = ∫ Z j q j ( Z j ) ? log ? P ^ ( X , Z j ) d Z j 1=\int_{Z_j}q_j(Z_j)·\log \hat{P}(X,Z_j)dZ_j 1=Zj??qj?(Zj?)?logP^(X,Zj?)dZj?

又因为:
2 = ∫ Z j q j ( Z j ) log ? q j ( Z j ) d Z j + C 常 数 2=\int_{Z_j} q_j(Z_j)\log q_j(Z_j)dZ_j+C_{常数} 2=Zj??qj?(Zj?)logqj?(Zj?)dZj?+C?

L ( q ) = 1 ? 2 = ∫ Z j q j ( Z j ) ? log ? P ^ ( X , Z j ) q j ( Z j ) d Z j ? C = ? K L ( q j ( Z j ) ∣ ∣ P ^ ( X , Z j ) ) ? C 常 数 L(q)=1-2=\int_{Z_j}q_j(Z_j)·\log \frac{\hat{P}(X,Z_j)}{q_j(Z_j)}dZ_j-C=-KL(q_j(Z_j)||\hat{P}(X,Z_j))-C_{常数} L(q)=1?2=Zj??qj?(Zj?)?logqj?(Zj?)P^(X,Zj?)?dZj??C=?KL(qj?(Zj?)P^(X,Zj?))?C?
又由于我们要求最值问题,所以尝试C可以忽略,只关心KL项即可。

L ( q ) = 1 ? 2 = ? K L ( q j ( Z j ) ∣ ∣ P ^ ( X , Z j ) ) ≤ 0 L(q)=1-2=-KL(q_j(Z_j)||\hat{P}(X,Z_j))\leq0 L(q)=1?2=?KL(qj?(Zj?)P^(X,Zj?))0

  • q j ( Z j ) = P ^ ( X , Z j ) ? C 常 数 时 , 上 式 不 等 式 取 等 号 . q_j(Z_j)=\hat{P}(X,Z_j)·C_{常数}时,上式不等式取等号. qj?(Zj?)=P^(X,Zj?)?C?.

3.再回首

我们已经讲解了基于平均场理论的变分推断,即:(VI-mean field),也称经典推断classical VI;

  • 假设将q(Z)分为M份,且M份之间是相互独立的,这个假设比较强:
    A s s u m p t i o n : q ( Z ) = ∏ i = 1 M q i ( Z i ) (16) Assumption:q(Z)=\prod_{i=1}^{M}q_i(Z_i)\tag{16} Assumption:q(Z)=i=1M?qi?(Zi?)(16)
  • 结论:
    log ? q j ( Z j ) = E i ≠ j , q i ( Z i ) [ log ? P ( X , Z ∣ θ ) ] + C O N S T 常 数 (17) \log q_j(Z_j)=E_{i≠j,q_i(Z_i)}[\log P(X,Z|\theta)]+CONST_{常数}\tag{17} logqj?(Zj?)=Ei??=j,qi?(Zi?)?[logP(X,Zθ)]+CONST?(17)
  • = ∫ q 1 ∫ q 2 . . . ∫ q j ? 1 ∫ q j + 1 . . . ∫ q M q 1 q 2 . . . q j ? 1 q j + 1 [ log ? P ( x ( i ) , z ] d q 1 . . . d q j ? 1 d q j + 1 . . . d q M + C O N S T 常 数 \int_{q_1}\int_{q_2}...\int_{q_{j-1}}\int_{q_{j+1}}...\int_{q_{M}}q_1q_2...q_{j-1}q_{j+1}[\log P(x^{(i)},z]d_{q_1}...d_{q_{j-1}}d_{q_{j+1}}...d_{q_M}+CONST_{常数} q1??q2??...qj?1??qj+1??...qM??q1?q2?...qj?1?qj+1?[logP(x(i),z]dq1??...dqj?1??dqj+1??...dqM??+CONST?
  • 可以看出上述公式展开后就式一个迭代式。将上述公式迭代可得如下:
  • q 1 ^ ( z 1 ) = ∫ q 2 . . . ∫ q M q 2 . . . q M [ log ? P ( x ( i ) , z ] d q 2 . . . . . . d q M \hat{q_1}(z_1)=\int_{q_2}...\int_{q_M}q_2...q_M[\log P(x^{(i)},z]d_{q_2}......d_{q_M} q1?^?(z1?)=q2??...qM??q2?...qM?[logP(x(i),z]dq2??......dqM??
  • q 2 ^ ( z 2 ) = ∫ q ^ 1 ∫ q 3 . . . ∫ q M q ^ 1 q 3 . . . q M [ log ? P ( x ( i ) , z ] d q ^ 1 d q 3 . . . d q M \hat{q_2}(z_2)=\int_{\hat{q}_1}\int_{q_3}...\int_{q_M}\hat{q}_1q_3...q_M[\log P(x^{(i)},z]d_{\hat{q}_1}d_{q_3}...d_{q_M} q2?^?(z2?)=q^?1??q3??...qM??q^?1?q3?...qM?[logP(x(i),z]dq^?1??dq3??...dqM??
  • q M ^ ( z M ) = ∫ q ^ 1 . . . ∫ q ^ M ? 1 q ^ 1 . . . q ^ M ? 1 [ log ? P ( x ( i ) , z ] d q ^ 1 d q ^ 2 . . . d q ^ M ? 1 \hat{q_M}(z_M)=\int_{\hat{q}_1}...\int_{\hat{q}_{M-1}}\hat{q}_1...\hat{q}_{M-1}[\log P(x^{(i)},z]d_{\hat{q}_1}d_{\hat{q}_2}...d_{\hat{q}_{M-1}} qM?^?(zM?)=q^?1??...q^?M?1??q^?1?...q^?M?1?[logP(x(i),z]dq^?1??dq^?2??...dq^?M?1??

这种迭代方式就跟坐标上升法算法一样的思想。以上是一个经典的基于平均场理论的变分推断方法,但这种方法也有缺点

  • 这种平均分割q(z)为M份的假设太强了。对于某些简单模型是可以实现的,但对于一些复杂的模型来说是不能成立的。比如深度玻尔兹曼机和深度神经网络就没法切割成相互独立的M份。
  • 即使假设M份是成立的,但是对于复杂模型来说, log ? q j ( Z j ) = E i ≠ j , q i ( Z i ) [ log ? P ( x ( i ) , z ] \log q_j(Z_j)=E_{i≠j,q_i(Z_i)}[\log P(x^{(i)},z] logqj?(Zj?)=Ei??=j,qi?(Zi?)?[logP(x(i),z]积分也是非常难求出来的。

变分推断说到底还是推断,推断在概率图模型中指的往往是求后验是什么,EM和变分推断在推导过程中用的是同一套理论(ELBO)。只是处理问题有些不同而已。因为变分推断关心的是后验,所以我们应该弱化参数 θ \theta θ.
log ? P θ ( X ) = E L B O ? L ( q ) + K L ( q ∣ ∣ p ) ? ≥ 0 ≥ L ( q ) (18) \log P_{\theta}(X)=\underbrace{ELBO}_{L(q)}+\underbrace{KL(q||p)}_{\geq0}\geq L(q)\tag{18} logPθ?(X)=L(q) ELBO??+0 KL(qp)??L(q)(18)

  • 为了求最大的 log ? P θ ( X ) \log P_{\theta}(X) logPθ?(X),我们其实就是为了求ELBO中最大的q(z),KL(q||p)中最小的q;
    q ^ = arg ? min ? q K L ( q ∣ ∣ p ) = arg ? max ? q L ( q ) (19) \hat{q}=\mathop{\arg\min}\limits_{q}KL(q||p)=\mathop{\arg\max}\limits_{q}L(q)\tag{19} q^?=qargmin?KL(qp)=qargmax?L(q)(19)
  • 这样我们就将一个求后验的变分问题转换成一个优化问题.

3.1 符号规范

为了以后更加方便描述数学问题,我们定义用小写表示随机变量:

  • x:observed - variable 观测随机变量
  • z:latent - variable 隐含随机变量
  • x i : 表 示 维 度 x_i:表示维度 xi?
  • x ( i ) : 表 示 第 i 个 x 样 本 ; X = { x ( i ) } i = 1 N x^{(i)}:表示第i个x样本;X=\{x^{(i)}\}_{i=1}^{N} x(i)ix;X={ x(i)}i=1N?
  • z ( i ) : 表 示 第 i 个 z 样 本 ; Z = { z ( i ) } i = 1 N z^{(i)}:表示第i个z样本;Z=\{z^{(i)}\}_{i=1}^{N} z(i)iz;Z={ z(i)}i=1N?
    我们假设每个样本 x ( i ) x^{(i)} x(i)之间是满足独立同分布的。所以可得如下:
    log ? P θ ( X ) = log ? ∏ i = 1 N P θ ( x ( i ) ) = ∑ i = 1 N log ? P θ ( x ( i ) ) (20) \log P_{\theta}(X)=\log \prod_{i=1}^{N}P_{\theta}(x^{(i)})=\sum_{i=1}^{N}\log P_{\theta}(x^{(i)})\tag{20} logPθ?(X)=logi=1N?Pθ?(x(i))=i=1N?logPθ?(x(i))(20)
  • 我们的目标是求得最大的 log ? P θ ( X ) \log P_{\theta}(X) logPθ?(X),所以我们的想法是只需要求得每一个 log ? P θ ( x ( i ) ) \log P_{\theta}(x^{(i)}) logPθ?(x(i))最大值即可。所以我们的研究对象变成了 log ? P θ ( x ( i ) ) \log P_{\theta}(x^{(i)}) logPθ?(x(i))
    E L B O = E q ( z ) [ log ? P θ ( x ( i ) z ) q ( z ) ] = E q ( z ) [ log ? P θ ( x ( i ) , z ) ] + H [ q ( z ) ] (21) ELBO=E_{q(z)}[\log \frac{P_{\theta}(x^{(i)}z)}{q(z)}]=E_{q(z)}[\log P_{\theta}(x^{(i)},z)]+H[q(z)]\tag{21} ELBO=Eq(z)?[logq(z)Pθ?(x(i)z)?]=Eq(z)?[logPθ?(x(i),z)]+H[q(z)](21)
    K L ( q ∣ ∣ p ) = ∫ q ( z ) ? log ? q ( z ) P θ ( z ∣ x ( i ) ) d z (22) KL(q||p)=\int q(z)·\log \frac{q(z)}{P_{\theta}(z|x^{(i)})}dz \tag{22} KL(qp)=q(z)?logPθ?(zx(i))q(z)?dz(22)
  • 注:这里的 z i z_i zi?不是指一个数据维度的集合,而指的是一个类似的最大团的概念。也就是多个维度结合在一起。

4. SGVI-随机梯度变分推断

4.1求梯度 ? ? L ( ? ) \nabla_{\phi}L(\phi) ???L(?)

Stochastic Gradient Variational Inference简称SGVI算法,即随机梯度变分推断算法。对于Z和X组成的模型,我们常常按如下方式区分生成模型和推断模型。
在这里插入图片描述
我们上一节分析了基于平均场理论的变分推断,通过平均假设得到了变分推断的结论。可以看到它是一种坐标上升法的思想去处理问题,那么,既然坐标上升法能够处理变分推断问题,那么我们也可以用梯度上升法来解决这个问题,这样我们就自然而然地想到了随机梯度变分推断SGVI。我们知道对于随机梯度算法来说,它的更新是需要方向和步长的,满足如下公式:
θ ( t + 1 ) = θ ( t ) + λ ( t ) ? L ( q ) (23) \theta^{(t+1)}=\theta^{(t)}+\lambda^{(t)}\nabla L(q) \tag{23} θ(t+1)=θ(t)+λ(t)?L(q)(23)

  • 注:这样我们只需要求得 ? L ( q ) \nabla L(q) ?L(q)即可;
  • 由于q是关于z和x的概率分布,即q(z|x)在这里我们通篇是忽略x 的,因为x是观测变量,为了简化起见,我们用q(z)表示q(z|x),我们令q(z)是一个指数族分布,那么为了求q(z)这个分布,本质上是为了求关于分布q(z)所需的参数 ? \phi ?,所以我们令所求的分布为 q ? ( z ) q_{\phi}(z) q??(z),所以我们的目标函数可以化简为如下:
    E L B O = E q ? ( z ) [ log ? P θ ( x ( i ) z ) q ? ( z ) ] = E q ? ( z ) [ log ? P θ ( x ( i ) , z ) ? log ? q ? ( z ) ] = L ( ? ) (24) ELBO=E_{q_{\phi}(z)}[\log \frac{P_{\theta}(x^{(i)}z)}{q_{\phi}(z)}]=E_{q_{\phi}(z)}[\log P_{\theta}(x^{(i)},z)-\log q_{\phi}(z)]=L(\phi)\tag{24} ELBO=Eq??(z)?[logq??(z)Pθ?(x(i)z)?]=Eq??(z)?[logPθ?(x(i),z)?logq??(z)]=L(?)(24)
    L ( ? ) = E q ? ( z ) [ log ? P θ ( x ( i ) , z ) ? log ? q ? ( z ) ] (25) L(\phi)=E_{q_{\phi}(z)}[\log P_{\theta}(x^{(i)},z)-\log q_{\phi}(z)]\tag{25} L(?)=Eq??(z)?[logPθ?(x(i),z)?logq??(z)](25)
    整理上式可得目标函数为:
    ? ^ = arg ? max ? ? L ( ? ) = arg ? max ? ? E q ? ( z ) [ log ? P θ ( x ( i ) , z ) ? log ? q ? ( z ) ] (26) \hat{\phi}=\mathop{\arg\max}\limits_{\phi}L(\phi)=\mathop{\arg\max}\limits_{\phi}E_{q_{\phi}(z)}[\log P_{\theta}(x^{(i)},z)-\log q_{\phi}(z)]\tag{26} ?^?=?argmax?L(?)=?argmax?Eq??(z)?[logPθ?(x(i),z)?logq??(z)](26)
    对 上 式 关 于 ? 求 导 , 我 们 令 ? L ( ? ) ? ? = ? ? L ( ? ) 对上式关于\phi求导,我们令\frac{\partial L(\phi)}{\partial \phi}=\nabla_{\phi}L(\phi) ????L(?)?=???L(?):
    ? ? L ( ? ) = ? ? E q ? ( z ) [ log ? P θ ( x ( i ) , z ) ? log ? q ? ( z ) ] (27) \nabla_{\phi}L(\phi)=\nabla_{\phi}E_{q_{\phi}(z)}[\log P_{\theta}(x^{(i)},z)-\log q_{\phi}(z)]\tag{27} ???L(?)=???Eq??(z)?[logPθ?(x(i),z)?logq??(z)](27)
    具体步骤如下:

? ? L ( ? ) = ? ? E q ? ( z ) [ log ? P θ ( x ( i ) , z ) ? log ? q ? ( z ) ] \nabla_{\phi}L(\phi)=\nabla_{\phi}E_{q_{\phi}(z)}[\log P_{\theta}(x^{(i)},z)-\log q_{\phi}(z)] ???L(?)=???Eq??(z)?[logPθ?(x(i),z)?logq??(z)]

= ? ? { ∫ z q ? ( z ) ? [ log ? P θ ( x ( i ) , z ) ? log ? q ? ( z ) ] d z } =\nabla_{\phi}\{\int_z q_{\phi}(z)·[\log P_{\theta}(x^{(i)},z)-\log q_{\phi}(z)]dz\} =???{ z?q??(z)?[logPθ?(x(i),z)?logq??(z)]dz}

  • 注:d(AB)=d(A)B+Ad(B),积分号与求导符号互换位置。

= ∫ z [ ? ? { q ? ( z ) } ? d ( A ) ? { [ log ? P θ ( x ( i ) , z ) ? log ? q ? ( z ) ] } ? B ] d z =\int_z[ \underbrace{\nabla_{\phi}\{ q_{\phi}(z)\}}_{d(A)}·\underbrace{\{[\log P_{\theta}(x^{(i)},z)-\log q_{\phi}(z)]\}}_{B}]dz =z?[d(A) ???{ q??(z)}???B { [logPθ?(x(i),z)?logq??(z)]}??]dz

+ ∫ z [ { q ? ( z ) } ? A ? ? ? { [ log ? P θ ( x ( i ) , z ) ? log ? q ? ( z ) ] } ? d ( B ) ] d z +\int_z[ \underbrace{\{ q_{\phi}(z)\}}_{A}·\underbrace{\nabla_{\phi}\{[\log P_{\theta}(x^{(i)},z)-\log q_{\phi}(z)]\}}_{d(B)}]dz +z?[A { q??(z)}???d(B) ???{ [logPθ?(x(i),z)?logq??(z)]}??]dz

我们对于上式分开解析:

1 = ∫ z [ ? ? { q ? ( z ) } ? { [ log ? P θ ( x ( i ) , z ) ? log ? q ? ( z ) ] } ] d z 1=\int_z[\nabla_{\phi}\{ q_{\phi}(z)\}·\{[\log P_{\theta}(x^{(i)},z)-\log q_{\phi}(z)]\}]dz 1=z?[???{ q??(z)}?{ [logPθ?(x(i),z)?logq??(z)]}]dz

2 = ∫ z [ { q ? ( z ) } ? ? ? { [ log ? P θ ( x ( i ) , z ) ? log ? q ? ( z ) ] } ] d z 2=\int_z[ \{ q_{\phi}(z)\}·\nabla_{\phi}\{[\log P_{\theta}(x^{(i)},z)-\log q_{\phi}(z)]\}]dz 2=z?[{ q??(z)}????{ [logPθ?(x(i),z)?logq??(z)]}]dz

我 们 知 道 : log ? P θ ( x ( i ) z ) 与 ? 无 关 , 故 导 数 为 0. 我们知道:\log P_{\theta}(x^{(i)}z)与\phi无关,故导数为0. logPθ?(x(i)z)?,0.

2 = ∫ z [ { q ? ( z ) } ? ? ? { [ log ? P θ ( x ( i ) , z ) ? 与 ? 无 关 ? log ? q ? ( z ) ] } ] d z 2=\int_z[ \{ q_{\phi}(z)\}·\nabla_{\phi}\{\underbrace{[\log P_{\theta}(x^{(i)},z)}_{与\phi无关}-\log q_{\phi}(z)]\}]dz 2=z?[{ q??(z)}????{ ? [logPθ?(x(i),z)???logq??(z)]}]dz
2 = ∫ z [ { q ? ( z ) } ? ? ? { ? log ? q ? ( z ) } ] d z 2=\int_z[ \{ q_{\phi}(z)\}·\nabla_{\phi}\{-\log q_{\phi}(z)\}]dz 2=z?[{ q??(z)}????{ ?logq??(z)}]dz

= ∫ z [ { q ? ( z ) } ? ? ? { ? log ? q ? ( z ) } ] d z =\int_z[ \{ q_{\phi}(z)\}·\nabla_{\phi}\{-\log q_{\phi}(z)\}]dz =z?[{ q??(z)}????{ ?logq??(z)}]dz

= ? ∫ z [ { q ? ( z ) } ? 1 q ? ( z ) ? ? { q ? ( z ) } ] d z =-\int_z[ \{ q_{\phi}(z)\}·\frac{1}{q_{\phi}(z)}\nabla_{\phi}\{q_{\phi}(z)\}]dz =?z?[{ q??(z)}?q??(z)1????{ q??(z)}]dz

= ? ∫ z [ ? ? { q ? ( z ) } ] d z =-\int_z[\nabla_{\phi}\{q_{\phi}(z)\}]dz =?z?[???{ q??(z)}]dz

= ? ? ? ∫ z [ { q ? ( z ) } ] d z =-\nabla_{\phi}\int_z[\{q_{\phi}(z)\}]dz =????z?[{ q??(z)}]dz

= ? ? ? ∫ z [ { q ? ( z ) } ] ? = 1 d z =-\nabla_{\phi}\underbrace{\int_z[\{q_{\phi}(z)\}]}_{=1}dz =????=1 z?[{ q??(z)}]??dz

= ? ? ? 1 = 0 =-\nabla_{\phi}1=0 =????1=0

结论:
? ? L ( ? ) = ∫ z [ ? ? { q ? ( z ) } ? { [ log ? P θ ( x ( i ) , z ) ? log ? q ? ( z ) ] } ] d z (28) \nabla_{\phi}L(\phi)=\int_z[\nabla_{\phi}\{ q_{\phi}(z)\}·\{[\log P_{\theta}(x^{(i)},z)-\log q_{\phi}(z)]\}]dz\tag{28} ???L(?)=z?[???{ q??(z)}?{ [logPθ?(x(i),z)?logq??(z)]}]dz(28)

  • 因为 ? ? { q ? ( z ) } = q ? ( z ) ? ? log ? { q ? ( z ) } , 故 上 式 可 变 如 下 : \nabla_{\phi}\{ q_{\phi}(z)\}= q_{\phi}(z)\nabla_{\phi}\log \{ q_{\phi}(z)\},故上式可变如下: ???{ q??(z)}=q??(z)???log{ q??(z)},
    ? ? L ( ? ) = ∫ z [ q ? ( z ) ? ? log ? { q ? ( z ) } ? { [ log ? P θ ( x ( i ) , z ) ? log ? q ? ( z ) ] } ] d z (29) \nabla_{\phi}L(\phi)=\int_z[q_{\phi}(z)\nabla_{\phi}\log \{ q_{\phi}(z)\}·\{[\log P_{\theta}(x^{(i)},z)-\log q_{\phi}(z)]\}]dz\tag{29} ???L(?)=z?[q??(z)???log{ q??(z)}?{ [logPθ?(x(i),z)?logq??(z)]}]dz(29)

  • 转换成关于分布 q ( ? ) q(\phi) q(?)的期望形式:

结论:
? ? L ( ? ) = E { q ? ( z ) } [ ? ? log ? { q ? ( z ) } ? { [ log ? P θ ( x ( i ) , z ) ? log ? q ? ( z ) ] } ] (30) \nabla_{\phi}L(\phi)=E_{\{q_{\phi}(z)\}}[\nabla_{\phi}\log \{ q_{\phi}(z)\}·\{[\log P_{\theta}(x^{(i)},z)-\log q_{\phi}(z)]\}]\tag{30} ???L(?)=E{ q??(z)}?[???log{ q??(z)}?{ [logPθ?(x(i),z)?logq??(z)]}](30)

  • 所以我们的梯度可以用一个期望表示,这样我们用蒙特卡罗的方式近似求得期望,最后得到梯度。
    将上述得到的梯度代入如下公式即可得到梯度法求解的迭代公式:
    θ ( t + 1 ) = θ ( t ) + λ ( t ) ? L ( q ) (31) \theta^{(t+1)}=\theta^{(t)}+\lambda^{(t)}\nabla L(q) \tag{31} θ(t+1)=θ(t)+λ(t)?L(q)(31)

4.2 梯度采样

我们已经把梯度转换成期望的公式,现在就是如何求这个期望,们采用的是蒙特卡罗采样法,具体步骤如下:

  • 假 设 z l 来 自 于 分 布 即 : z l ? q ? ( z ) ; l = 1 , 2 , . . , L , 那 么 可 得 如 下 : 假设z^l 来自于分布即:z^l \sim q_{\phi}(z);l=1,2,..,L,那么可得如下: zlzl?q??(z)l=1,2,..,L,
  • ? ? L ( ? ) ≈ 1 L ∑ l = 1 L [ ? ? log ? { q ? ( z ( l ) ) } ? { log ? P θ ( x ( i ) , z ( l ) ) ? log ? q ? ( z ( l ) ) } ] (32) \nabla_{\phi}L(\phi)≈\frac{1}{L}\sum_{l=1}^{L}[\nabla_{\phi}\log \{ q_{\phi}(z^{(l)})\}·\{\log P_{\theta}(x^{(i)},z^{(l)})-\log q_{\phi}(z^{(l)})\}]\tag{32} ???L(?)L1?l=1L?[???log{ q??(z(l))}?{ logPθ?(x(i),z(l))?logq??(z(l))}](32)
    对于上式最大的问题是,当我们在 q ? ( z ) q_{\phi}(z) q??(z)中采样的时候,会有概率采到 q ? ( z ) q_{\phi}(z) q??(z)在某一个时刻非常的小,所以就会导致 ∣ log ? { q ? ( z ( l ) ) } ∣ |\log \{ q_{\phi}(z^{(l)})\}| log{ q??(z(l))}会非常的大,从而出现方差较大的情况(high variance),当方差越大的时候,就会出现需要更多的样本L去平衡方差,那么现实过程中就出现无法采样的现象发生。即:
    lim ? q ? ( z ) ? > 0 log ? { q ? ( z ( l ) ) } = ∞ (33) \lim_{q_{\phi}(z)->0}\log \{ q_{\phi}(z^{(l)})\}=∞\tag{33} q??(z)?>0lim?log{ q??(z(l))}=(33)
    为了解决因方差较大时,上述无法采样的现象,我们提出新的方法重参数化技巧[Reparameterization Trick]

4.3 重参数化技巧

重参数化技巧的核心思想是对 q ? ( z ) q_{\phi}(z) q??(z)进行简化,假设我们得到一个确定的解 P ( ? ) P(\epsilon) P(?),那么我们就很容易解决上述期望不好求的问题。

? ? L ( ? ) = ? ? E { q ? ( z ) } [ log ? { q ? ( z ) } ? { [ log ? P θ ( x ( i ) , z ) ? log ? q ? ( z ) ] } ] (34) \nabla_{\phi}L(\phi)=\nabla_{\phi}E_{\{q_{\phi}(z)\}}[\log \{ q_{\phi}(z)\}·\{[\log P_{\theta}(x^{(i)},z)-\log q_{\phi}(z)]\}]\tag{34} ???L(?)=???E{ q??(z)}?[log{ q??(z)}?{ [logPθ?(x(i),z)?logq??(z)]}](34)

注:因为z来自于 q ? ( z ) q_{\phi}(z) q??(z),如果我们能够想办法将z中的随机变量分离出来,将 z 的随机性用另外一个变量 ? \epsilon ?表示出来,我们定义一个函数,表示变量 ? \epsilon ?与随机变量z之间的关系:
z = g ? ( ? , x ( i ) ) → ? ? P ( ? ) (36) z=g_{\phi}(\epsilon,x^{(i)})\quad\rightarrow\quad \epsilon \sim P(\epsilon)\tag{36} z=g??(?,x(i))??P(?)(36)

  • 这样做的好处是:不再是连续的关于 ? \phi ?的采样了,可以有效的降低方差,并且,z是关于 ? \epsilon ?的函数,我们将随机性转移到了 ? \epsilon ?中,那么上述问题可以简化为如下:
    z ? q ? ( z ∣ x ( i ) ) → ? ? p ( ? ) (37) z \sim q_{\phi}(z|x^{(i)})\quad\rightarrow \quad \epsilon\sim p(\epsilon)\tag{37} z?q??(zx(i))??p(?)(37)
    我们引入如下等式:
    ∣ q ? ( z ∣ x ( i ) ) d z ∣ = ∣ p ( ? ) d ? ∣ (38) |q_{\phi}(z|x^{(i)})dz|=|p(\epsilon)d\epsilon|\tag{38} q??(zx(i))dz=p(?)d?(38)

由于 z = g ? ( ? , x ( i ) ) z=g_{\phi}(\epsilon,x^{(i)}) z=g??(?,x(i))是一个函数关系,即映射关系,那么我们可以知道发生z的概率跟发生 ? \epsilon ?的概率一致;
我们令PA为发生z的概率,故 P A = q ? ( z ∣ x ( i ) ) d z PA=q_{\phi}(z|x^{(i)})dz PA=q??(zx(i))dz;同理令PB为发生 ? \epsilon ?的概率 P B = p ( ? ) d ? PB=p(\epsilon)d\epsilon PB=p(?)d?,故可得:
P A = ∣ q ? ( z ∣ x ( i ) ) d z ∣ = P B = ∣ p ( ? ) d ? ∣ (39) PA=|q_{\phi}(z|x^{(i)})dz|=PB=|p(\epsilon)d\epsilon|\tag{39} PA=q??(zx(i))dz=PB=p(?)d?(39)
现在我们根据上述公式更新梯度:
? ? L ( ? ) = ? ? ∫ z [ { q ? ( z ) } ? { [ log ? P θ ( x ( i ) , z ) ? log ? q ? ( z ) ] } ] d z (40) \nabla_{\phi}L(\phi)=\nabla_{\phi}\int_z[\{ q_{\phi}(z)\}·\{[\log P_{\theta}(x^{(i)},z)-\log q_{\phi}(z)]\}]dz\tag{40} ???L(?)=???z?[{ q??(z)}?{ [logPθ?(x(i),z)?logq??(z)]}]dz(40)
= ? ? ∫ z [ { [ log ? P θ ( x ( i ) , z ) ? log ? q ? ( z ) ] } ] { q ? ( z ) } d z (41) =\nabla_{\phi}\int_z[\{[\log P_{\theta}(x^{(i)},z)-\log q_{\phi}(z)]\}]\{ q_{\phi}(z)\}dz\tag{41} =???z?[{ [logPθ?(x(i),z)?logq??(z)]}]{ q??(z)}dz(41)
= ? ? ∫ z [ { [ log ? P θ ( x ( i ) , z ) ? log ? q ? ( z ) ] } ] p ( ? ) d ? (42) =\nabla_{\phi}\int_z[\{[\log P_{\theta}(x^{(i)},z)-\log q_{\phi}(z)]\}]p(\epsilon)d\epsilon\tag{42} =???z?[{ [logPθ?(x(i),z)?logq??(z)]}]p(?)d?(42)
= ? ? ∫ ? [ log ? P θ ( x ( i ) , z ) ? log ? q ? ( z ) ] p ( ? ) d ? (43) =\nabla_{\phi}\int_{\epsilon}[\log P_{\theta}(x^{(i)},z)-\log q_{\phi}(z)]p(\epsilon)d\epsilon\tag{43} =?????[logPθ?(x(i),z)?logq??(z)]p(?)d?(43)
= ? ? E { P ? } [ log ? P θ ( x ( i ) , z ) ? log ? q ? ( z ) ] (44) =\nabla_{\phi}E_{\{P_{\epsilon}\}}[\log P_{\theta}(x^{(i)},z)-\log q_{\phi}(z)]\tag{44} =???E{ P??}?[logPθ?(x(i),z)?logq??(z)](44)
= E { P ? } ? ? [ log ? P θ ( x ( i ) , z ) ? log ? q ? ( z ) ] (45) =E_{\{P_{\epsilon}\}}\nabla_{\phi}[\log P_{\theta}(x^{(i)},z)-\log q_{\phi}(z)]\tag{45} =E{ P??}????[logPθ?(x(i),z)?logq??(z)](45)
= E { P ? } ? z [ log ? P θ ( x ( i ) , z ) ? log ? q ? ( z ) ] ? ? z (46) =E_{\{P_{\epsilon}\}}\nabla_{z}[\log P_{\theta}(x^{(i)},z)-\log q_{\phi}(z)]\nabla_{\phi}z\tag{46} =E{ P??}??z?[logPθ?(x(i),z)?logq??(z)]???z(46)

  • 我们之前定义了 q ? ( z ) = q ? ( z ∣ x ( i ) ) ; z = g ? ( ? , x ( i ) ) q_{\phi}(z)=q_{\phi}(z|x^{(i)});z=g_{\phi}(\epsilon,x^{(i)}) q??(z)=q??(zx(i));z=g??(?,x(i))
    ? ? L ( ? ) = E { P ? } { ? z [ log ? P θ ( x ( i ) , z ) ? log ? q ? ( z ∣ x ( i ) ) ] } ? ? ? g ? ( ? , x ( i ) ) (47) \nabla_{\phi}L(\phi)=E_{\{P_{\epsilon}\}}\{\nabla_{z}[\log P_{\theta}(x^{(i)},z)-\log q_{\phi}(z|x^{(i)})]\}·\nabla_{\phi}g_{\phi}(\epsilon,x^{(i)})\tag{47} ???L(?)=E{ P??}?{ ?z?[logPθ?(x(i),z)?logq??(zx(i))]}????g??(?,x(i))(47)
    那么我们的关于期望的采样就简化了很多,因为 p ( ? ) p(\epsilon) p(?) ? \phi ?无关,我们可以先求 [ log ? P θ ( x ( i ) , z ) ? log ? q ? ( z ∣ x ( i ) ) ] [\log P_{\theta}(x^{(i)},z)-\log q_{\phi}(z|x^{(i)})] [logPθ?(x(i),z)?logq??(zx(i))]关于z的导数,然后再求 g ? ( ? , x ( i ) ) g_{\phi}(\epsilon,x^{(i)}) g??(?,x(i))关于 ? \phi ?的导数,这三者之间是相互分离开的,最后我们对结果进行采样,可得:
    ? ( l ) ? p ( ? ) ; l = 1 , 2 , . . , L (48) \epsilon^{(l)}\sim p(\epsilon);l=1,2,..,L\tag{48} ?(l)?p(?);l=1,2,..,L(48)
    经过上述公式转换后的期望,因函数简化后,我们可以用蒙特卡洛的方法进行采样了。
    ? ? L ( ? ) ≈ 1 L ∑ i = 1 L [ { ? z [ log ? P θ ( x ( i ) , z ) ? log ? q ? ( z ∣ x ( i ) ) ] } ? ? ? g ? ( ? , x ( i ) ) ] (49) \nabla_{\phi}L(\phi)≈\frac{1}{L}\sum_{i=1}^{L}[\{\nabla_{z}[\log P_{\theta}(x^{(i)},z)-\log q_{\phi}(z|x^{(i)})]\}·\nabla_{\phi}g_{\phi}(\epsilon,x^{(i)})]\tag{49} ???L(?)L1?i=1L?[{ ?z?[logPθ?(x(i),z)?logq??(zx(i))]}????g??(?,x(i))](49)

  • 其中 z = g ? ( ? ( i ) , x ( i ) ) , 最 后 将 上 式 的 值 代 入 迭 代 公 式 即 可 : z=g_{\phi}(\epsilon^{(i)},x^{(i)}),最后将上式的值代入迭代公式即可: z=g??(?(i),x(i)),
    θ ( t + 1 ) = θ ( t ) + λ ( t ) ? ? L ( ? ) (50) \theta^{(t+1)}=\theta^{(t)}+\lambda^{(t)}\nabla_{\phi}L(\phi)\tag{50} θ(t+1)=θ(t)+λ(t)???L(?)(50)
    证毕。

  相关解决方案