变分推断

dy=f(x1+dx)f(x1) dy = f(x_1+dx)-f(x_1)

dydyyy的微分,也就是函数的微分,是指的xx变化了一个极小值引起的因变量函数的变化。

泛函指的是,因变量为函数的函数。

函数泛函
f(x0)=y0f(x_0) = y_0ϕ(fθ0(x))=y0\phi(f_{\theta_0}(x))=y_0
当自变量为一个特定值,函数加工的结果对应特定值当自变量为一个特定的函数(可以理解为特定的分布)如y=xy=x,泛函加工为一个特定的值

变分指的是,当自变量函数做出微小变化yy+δyy \rarr y + \delta y时(可以理解为分布发生微小变化,如y=xy=x变为y=1.00001x,y=x+0.0001y=1.00001*x,y=x + 0.0001),泛函的函数值变化了δJ\delta J,这个变化值就是泛函的变分。

q(x)=iq(xi) q(x)=\prod_iq(x_i)

第一种分类
参数化方法(parametric),参数固定
非参数化方法(Nonparametric),模型的参数随着训练数据而变化,如最近邻方法,参数量与近邻数量相关。
第二种分类
判别模型(Discriminate Models),不管x,只关注目标y
生成模型(Generate Models),假设x服从p(x),是从其生成(采样)出来的,关注x携带的信息
第三种分类
频率派(Frequency),最小二乘估计,最大似然估计,用数据估计模型参数,p(x|a),a是一个未知的常数,是一个优化问题
贝叶斯派(Bayesian),将p(x|a)里的a看做随机变量,a~p(a),需要求的是后验p(a|x)=p(x|a)p(a)/p(x),是一个积分问题

贝叶斯学习认为模型p(xθ)p(x|\theta)中的参数θ\theta不是一个确定的未知参数,而是一个随机变量,假设为θ服从p(θλ)\theta 服从 p(\theta|\lambda),所以,需要通过贝叶斯定理求得后验p(θx)=p(xθ)p(θλ)p(x)p(\theta|x)=\frac{p(x|\theta)p(\theta|\lambda)}{p(x)}

需要计算p(θx)p(\theta|x)的值,抽样很多样本,使用期望来近似,贝叶斯公式中p(xθ)p(x|\theta)是数据的似然和p(θλ)p(\theta|\lambda) 是参数的先验分布,p(x)p(x)通过θp(xθ)p(θλ)dλ\int_{\theta} p(x|\theta)p(\theta|\lambda)d\lambda得到。

inference
精确推断
近似推断
确定性近似
变分推断(Variational Inference)
随机近似
蒙特卡洛采样(MCMC),吉布斯采样

通过原有样本XX来推断N个新的样本x^\hat x,即 p(x^X)=θp(x^,θX)dθ=θp(x^θ)p(θX)dθ=EθX[p(x^θ)] p(\hat x|X)=\int_\theta p(\hat x,\theta|X)d\theta =\int_\theta p(\hat x|\theta)\cdot p(\theta|X)d\theta =E_{\theta|X}[p(\hat x|\theta)]

使用ELBO来替代,含有隐变量的概率模型中,观测数据的对数概率logθp(x)\log_{\theta} p(x) 参数设定如下 XX : Observed data ZZ : latent variable + parameter (X,Z)(X,Z) : complete data + parameter 由于xx是观测数据,q(zx)q(z|x)简写为q(z)q(z) 根据贝叶斯定理 p(zx)=p(xz)p(z)p(x)=p(x,z)p(x) p(z|x) = \frac{p(x|z)p(z)}{p(x)} = \frac{p(x,z)}{p(x)} 移项取log logp(x)=logp(x,z)p(zx)=logp(x,z)q(z)p(zx)q(z)=logp(x,z)q(z)logp(zx)q(z) \log p(x)=\log \frac{p(x,z)}{p(z|x)}=\log \frac{\frac{p(x,z)}{q(z)}}{\frac {p(z|x)}{q(z)}}=\log \frac{p(x,z)}{q(z)} - \log \frac {p(z|x)}{q(z)} 左右两边对q(z)q(z)求进行积分 左边=zq(z)logp(x)dz=logp(x) 左边=\int_z q(z)\log p(x)dz = \log p(x) 右边=q(z)logp(x,z)q(z)dzq(z)logp(zx)q(z)dz 右边=\int q(z)\log \frac{p(x,z)}{q(z)}dz - \int q(z) \log \frac {p(z|x)}{q(z)}dz 右边=q(z)logp(x,z)q(z)dzELBO(evidence  lower  bound)+q(z)logq(z)p(zx)KL(qp)dz 右边=\underbrace{\int q(z)\log \frac{p(x,z)}{q(z)}dz}_{ELBO(evidence\;lower\;bound)} + \underbrace{\int q(z) \log \frac {q(z)}{p(z|x)}}_{KL(q||p)}dz 右边=L(q)关于q的变分+KL(qp)0 右边=\underbrace{\mathcal{L}(q)}_{关于q的变分}+\underbrace{KL(q||p)}_{\geqslant 0} 其中L(q)\mathcal{L}(q)是用来定义ELBO项的函数,用以说明其输入是一个qq函数,qq函数是我们随意找的一个概率密度函数,所以L(q)\mathcal{L}(q)是关于qq的变分,变分推断来自于此。 说明一下,当X固定时,右边的和固定,而由于KL散度的性质,KL(qp)KL(q||p)恒大于零,所以L(q)\mathcal{L}(q)最大就是logp(x)\log p(x)。 转为变分推断的关键问题,后验p(zx)p(z|x)无法求得,所以需要使用q(z)q(z)来近似它,即使得q(z)p(zx)q(z)\approx p(z|x)。此时KL(qp)KL(q||p)最小,趋近于零。反过来思考,当找到一个q(z)~\tilde {q(z)}使得变分L(q)\mathcal{L}(q)达到最大时,也能让KL(qp)KL(q||p)达到最小值,即使得q(z)~p(zx)\tilde {q(z)}\approx p(z|x),形式化表达如下。 q(z)~=argmaxq(z)  L(q)    q(z)~p(zx) \tilde {q(z)} = \mathop{\arg\max}_{q(z)}\ \ \mathcal{L}(q)\ \ \Rightarrow\ \ \tilde {q(z)}\approx p(z|x) 平均场理论 q(z)=i=1Mq(zi) q(z) = \prod_{i=1}^{M}q(z_i) logpθ(X)=logi=1Npθ(xi)=i=1Nlogpθ(xi) \log p_\theta(X) = \log \prod_{i=1}^N p_{\theta}(x^i)=\sum_{i=1}^N\log p_{\theta}(x^i) logpθ(xi)=ELBOL(q)+KL(qp)0)L(q) \log p_{\theta}(x^i) = \underbrace{ELBO}_{\mathcal L(q)} + \underbrace{KL(q||p)}_{\geqslant 0}) \geqslant \mathcal L(q) 需要求解的目标函数是 q(z)~=argminq(z)  KL(qp)=argmaxq(z)  L(q) \tilde {q(z)} = \mathop{\arg\min}_{q(z)}\ \ KL(q||p) =\mathop{\arg\max}_{q(z)}\ \ \mathcal{L}(q) 假设q(z)q(z)的分布参数为ϕ\phi,则变分L(q)\mathcal L(q)可以写成L(ϕ)\mathcal L(\phi),即观测分布表示为 logpθ(xi)=ELBOL(ϕ)+KL(qp)0)L(ϕ) \log p_{\theta}(x^i) = \underbrace{ELBO}_{\mathcal L(\phi)} + \underbrace{KL(q||p)}_{\geqslant 0}) \geqslant \mathcal L(\phi) ELBO=Eqϕ(z)[logpθ(xi,z)qϕ(z)] ELBO = E_{q_{\phi}(z)}[\log \frac{p_{\theta}(x^i,z)}{q_{\phi}(z)}] 那么我们想要最大化ELBOELBO时,q(z)q(z)分布的参数ϕ\phi形式化表达为 ϕ^=argmaxϕ L(ϕ) \hat \phi =\mathop{\arg\max}_{\phi} \ \mathcal L(\phi) 使用梯度随机梯度上升策略,需要求得L(ϕ)\mathcal L(\phi)ϕ\phi的梯度如下。 ϕL(ϕ)=ϕEqϕ[logpθ(xi,z)logqϕ(z)]=ϕqϕ[logpθ(xi,z)logqϕ(z)]dz=ϕqϕ[logpθ(xi,z)logqϕ(z)]dz+qϕϕ[logpθ(xi,z)logqϕ(z)]dz=qϕϕlogqϕ[logpθ(xi,z)logqϕ(z)]dz+0=Eqϕ[ϕlogqϕ[logpθ(xi,z)logqϕ(z)] \begin{equation} \begin{aligned} \nabla_{\phi} \mathcal L(\phi) &= \nabla_{\phi}E_{q_{\phi}}[\log p_{\theta}(x^i,z)-\log q_{\phi}(z)] \\ &=\nabla_{\phi}\int q_{\phi}[\log p_{\theta}(x^i,z)-\log q_{\phi}(z)]dz \\ &=\int \nabla_{\phi}q_{\phi}\cdot[\log p_{\theta}(x^i,z)-\log q_{\phi}(z)]dz + \int q_{\phi}\nabla_{\phi}[\log p_{\theta}(x^i,z)-\log q_{\phi}(z)]dz \\ &=\int q_{\phi}\cdot\nabla_{\phi}\log q_{\phi}\cdot[\log p_{\theta}(x^i,z)-\log q_{\phi}(z)]dz + 0 \\ &=E_{q_{\phi}}[\nabla_{\phi}\log q_{\phi}\cdot[\log p_{\theta}(x^i,z)-\log q_{\phi}(z)] \end{aligned} \end{equation} 如果使用蒙特卡罗的方式,梯度ϕL(ϕ)\nabla_{\phi} \mathcal L(\phi),即期望Eqϕ[ϕlogqϕ[logpθ(xi,z)logqϕ(z)]E_{q_{\phi}}[\nabla_{\phi}\log q_{\phi}\cdot[\log p_{\theta}(x^i,z)-\log q_{\phi}(z)]可以通过从qϕ(z)中采样Lzq_{\phi}(z)中采样L个z得到,即 z(l)qϕ(z),l=1,2,,LϕL(ϕ)1Ll=1Lϕlogqϕ(zi)[logpθ(xi,z)logqϕ(z)] z^{(l)} \backsim q_{\phi}(z),\quad l=1,2,\cdots,L \\ \nabla_{\phi} \mathcal L(\phi)\approx \frac{1}{L}\sum_{l=1}^L \nabla_{\phi}\log q_{\phi}(z^i)\cdot[\log p_{\theta}(x^i,z)-\log q_{\phi}(z)] Eqϕ[ϕlogqϕhigh variance[logpθ(xi,z)logqϕ(z)]E_{q_{\phi}}[\underbrace{\nabla_{\phi}\log q_{\phi}}_{high\ variance}\cdot[\log p_{\theta}(x^i,z)-\log q_{\phi}(z)]在采样时,由于log函数的性质,当qϕ(z)  0q_{\phi}(z)\ \rightarrow \ 0时,其中的ϕlogqϕ\nabla_{\phi}\log q_{\phi}项会带来高方差问题。这导致了采样需要的样本量巨大,且误差较大,甚至可以认为无法采样。因此,无法采用蒙特卡洛方式来近似梯度ϕL(ϕ)\nabla_{\phi} \mathcal L(\phi)。 故现在需要降低梯度表达的方差,即Variance Reduction问题。使用重参数化技巧(Reparameterization Trick)。目的是将随机变量zzϕ\phi的关系解耦,将zz的随机成分转移到ϵ\epsilon。 假设z=gϕ(ϵ,xi)z=g_{\phi}(\epsilon,x^i)ϵp(ϵ)\epsilon \backsim p(\epsilon)zqϕ(zxi)z\backsim q_{\phi}(z|x^i),则由于qϕ(zxi)dz=p(ϵ)dϵ=1\int q_{\phi}(z|x^i)dz = \int p(\epsilon)d\epsilon = 1,可以得出qϕ(zxi)dz=p(ϵ)dϵ|q_{\phi}(z|x^i)dz|=|p(\epsilon)\cdot d\epsilon|。 故梯度可以进行如下表达 ϕL(ϕ)=ϕEqϕ[logpθ(xi,z)logqϕ(z)]=ϕ[logpθ(xi,z)logqϕ(z)]qϕdz=ϕ[logpθ(xi,z)logqϕ(z)]p(ϵ)dϵ=ϕEp(ϵ)[logpθ(xi,z)logqϕ(z)]=Ep(ϵ)[ϕ(logpθ(xi,z)logqϕ(z))]带入z=gϕ(ϵ,xi)得,=Ep(ϵ)[z(logpθ(xi,z)logqϕ(z))ϕz]=Ep(ϵ)[z(logpθ(xi,z)logqϕ(z))ϕgϕ(ϵ,xi)] \begin{equation} \begin{aligned} \nabla_{\phi} \mathcal L(\phi) &= \nabla_{\phi}\underline{E_{q_{\phi}}}[\log p_{\theta}(x^i,z)-\log q_{\phi}(z)] \\ &=\nabla_{\phi}\int[\log p_{\theta}(x^i,z)-\log q_{\phi}(z)]\underline{q_{\phi}dz} \\ &=\nabla_{\phi}\int[\log p_{\theta}(x^i,z)-\log q_{\phi}(z)]\underline{p(\epsilon)d\epsilon} \\ &=\nabla_{\phi}\underline{E_{p(\epsilon)}}[\log p_{\theta}(x^i,z)-\log q_{\phi}(z)] \\ &=E_{p(\epsilon)}[\nabla_{\phi}(\log p_{\theta}(x^i,z)-\log q_{\phi}(z))] \\ 带入z=g_{\phi}(\epsilon,x^i)得, \\ &=E_{p(\epsilon)}[\nabla_z(\log p_{\theta}(x^i,z)-\log q_{\phi}(z))\cdot \underline{\nabla_{\phi}z}] \\ &=E_{p(\epsilon)}[\nabla_z(\log p_{\theta}(x^i,z)-\log q_{\phi}(z))\cdot \underline{\nabla_{\phi}g_{\phi}(\epsilon,x^i)}] \end{aligned} \end{equation} 此时,便可以采用蒙特卡罗采样来近似梯度ϕL(ϕ)\nabla_{\phi} \mathcal L(\phi),期望即是均值。 假设进行LL次采样,ϵ(l)p(ϵ),  l=1,2,,L\epsilon^{(l)}\sim p(\epsilon),\ \ l=1,2,\cdots,LϕL(ϕ)ϕL(ϕ)~=1Ll=1Lz(logpθ(xi,z)logqϕ(z))ϕgϕ(ϵ(l),xi) \nabla_{\phi} \mathcal L(\phi) \approx \widetilde {\nabla_{\phi} \mathcal L(\phi)}= \frac{1}{L} \sum_{l=1}^L\nabla_z(\log p_{\theta}(x^i,z)-\log q_{\phi}(z))\cdot \nabla_{\phi}g_{\phi}(\epsilon^{(l)},x^i) SGVI训练过程如下 ϕ(t+1)ϕ(t)+λ(t)ϕL(ϕ)~f \phi^{(t+1)} \leftarrow \phi^{(t)} + \lambda^{(t)} \cdot \widetilde {\nabla_{\phi} \mathcal L(\phi)}f 假设数据集X={x(i)}i=1NX=\{x^{(i)}\}^N_{i=1}服从NN i.i.d.。该集合中的数据由某些随机过程生成而来,过程中含有无法观测的连续随机变量z\bf z。这个随机过程包含两个步骤,首先,从先验分布pθ(z)p_{\theta ^*}(\bf z)中生成一个z(i)\bf z^{(i)}。步骤二是从条件分布pθ(xz)p_{\theta ^*}(\bf x |\bf z)中采样x(i)\bf x^{(i)}。假设pθ(z)p_{\theta ^*}(\bf z)pθ(xz)p_{\theta ^*}(\bf x |\bf z)来自pθ(z)p_{\theta}(\bf z)pθ(xz)p_{\theta}(\bf x |\bf z)的参数家族,并且他们的表达在提及θ\thetazz时都是可微的。这个过程的许多部分都是对我们不可见的:不论是真实的参数θ\theta ^*还是隐变量z(i)z^{(i)}都是未知的。

隐变量模型 Latent Variable Model

生成(Decoder) p(x|z,θ)
推断(Encoder) p(z|x,φ)
z
x
GMM 混合高斯模型,有限个高斯模型混合zz~Categorical Dist VAE 无限个(infinite)高斯模型混合: zN(0,I)z \sim N(0,\bf I) xzN(μθ(z),θ(z))x|z \sim N(\mu_{\theta}(z),\sum_{\theta}(z)),得到如下建模, pθ(x)=zpθ(x,z)dz = zp(z)pθ(xz)dz p_{\theta}(x) = \int_zp_{\theta}(x,z)dz \ = \ \int_z p(z)\cdot p_{\theta}(x|z)dz 其中pθ(x)p_{\theta}(x)为intractable。 如果需要使用VAE生成一个样本,先从p(z)p(z)中采样一个ziz^i,然后使用pθ(xz)p_{\theta}(x|z)(实际采用一个神经网络来逼近,即Decoder)来得到xix^i 。 由变分推断可知 logp(x)=ELBO+KL(qϕ(zx)pθ(zx)) \log p(x) = ELBO + KL(q_{\phi}(z|x)||p_{\theta}(z|x)) 优化目标如下 <θ^,ϕ^>=argmin<θ,ϕ> KL(qϕ(zx)pθ(zx))=argmax<θ,ϕ> ELBO=argmax<θ,ϕ> Eqϕ(zx)[logpθ(x,z)]+H[qϕ]=argmax<θ,ϕ> Eqϕ(zx)[logpθ(x,z)logqϕ(zx)]=argmax<θ,ϕ> Eqϕ(zx)[logpθ(xz)+logp(z)logqϕ(zx)]=argmax<θ,ϕ> Eqϕ(zx)[logpθ(xz)]+qϕ(zx)logp(z)logqϕ(zx)dz=argmax<θ,ϕ> Eqϕ(zx)[logpθ(xz)]真正的目标函数KL(qϕ(zx)p(z))看做正则化项,使编码器不坍缩 \begin{equation} \begin{aligned} <\hat \theta,\hat \phi> &= \mathop{\arg\min}_{<\theta, \phi>}\ KL(q_{\phi}(z|x)||p_{\theta}(z|x)) \\ &=\mathop{\arg\max}_{<\theta, \phi>}\ ELBO \\ &=\mathop{\arg\max}_{<\theta, \phi>}\ E_{q_{\phi}(z|x)}[\log p_{\theta}(x,z)]+H[q_{\phi}] \\ &=\mathop{\arg\max}_{<\theta, \phi>}\ E_{q_{\phi}(z|x)}[\log p_{\theta}(x,z)-\log q_{\phi}(z|x)] \\ &=\mathop{\arg\max}_{<\theta, \phi>}\ E_{q_{\phi}(z|x)}[\log p_{\theta}(x|z)+\log p(z)-\log q_{\phi}(z|x)] \\ &=\mathop{\arg\max}_{<\theta, \phi>}\ E_{q_{\phi}(z|x)}[\log p_{\theta}(x|z)]+\int q_{\phi}(z|x)\frac{\log p(z)}{\log q_{\phi}(z|x)}dz \\ &=\mathop{\arg\max}_{<\theta, \phi>}\underbrace{\ E_{q_{\phi}(z|x)}[\log p_{\theta}(x|z)]}_{真正的目标函数}-\underbrace{KL(q_{\phi}(z|x)||p(z))}_{看做正则化项,使编码器不坍缩} \end{aligned} \end{equation}

使用SGVI进行训练,重参数化技巧可以如下实现

x
NN*
μ
z
·
ε
ϵ\epsilon可以看做采样的噪声,ϵN(0,I)\epsilon \backsim N(0,\bf I)。假设zxN(μϕ(x),Σϕ(x))z|x \backsim N(\mu_{\phi}(x),\Sigma_{\phi}(x))z=μϕ(x)+Σϕ12(x)ϵ z=\mu_{\phi}(x)+\Sigma_{\phi}^{\frac{1}{2}}(x)\cdot \epsilon

https://www.bilibili.com/video/BV1DW41167vr?p=1&vd_source=309d79182a0075ce59fbfe1a028281fd

https://www.bilibili.com/video/BV1G34y1t7Dy/?p=2&spm_id_from=pageDriver&vd_source=309d79182a0075ce59fbfe1a028281fd

https://zhuanlan.zhihu.com/p/345597656