经典机器学习系列(十)【变分推断】

  贝叶斯推断的优势在于可以结合一些我们已知的先验信息。对于复杂的一些问题建模也非常灵活,很适合用于应用统计方面的工作。但是贝叶斯模型有一些问题,如果用传统的MCMC来求的话速度会非常慢,而现今问题的数据量和维度都比较大,在这样的问题上做贝叶斯推理的话就会有很大的挑战。

贝叶斯与近似贝叶斯

  贝叶斯推断(Bayesian Inference),在贝叶斯推断中我们有观测数据 x = { x 1 , x 2 , ⋯   , x n } x=\{x_{1},x_{2},\cdots, x_{n}\} x={x1,x2,,xn},将模型的参数设置为 z z z,它具有 m m m个参数 z = { z 1 , z 2 , ⋯   , z m } z=\{z_{1},z_{2},\cdots,z_{m}\} z={z1,z2,,zm}。给定一个先验(prior)分布 p ( z ) p(z) p(z),在我们观测到数据 x x x之后,我们依据这个数据对 z z z的分布有一个更新。这种更新我们通常称之为计算后验分布(posterior distribution) p ( z ∣ x ) p(z|x) p(zx)

p ( z ∣ x ) = p ( x , z ) p ( x ) = p ( x ∣ z ) p ( z ) p ( x ) p(z|x) = \frac{p(x,z)}{p(x)} \\ = \frac{p(x|z)p(z)}{p(x)} p(zx)=p(x)p(x,z)=p(x)p(xz)p(z)

  其中 p ( z ∣ x ) p(z|x) p(zx)是后验分布; p ( x ∣ z ) p(x|z) p(xz)likelihood,相当于是一个方程,将数据 x x x和我们所关心的参数 z z z联系在了一起; p ( z ) p(z) p(z)是参数的先验prior信息;而 p ( x ) p(x) p(x)是我们对于数据的信息,通常称之为evidence

  一般来说,贝叶斯建模需要走以下几步:

  1. 选一个prior,然后去选一个给定的likelihood。一般我们需要有一些假设,比如prior或者likelihood是服从某种分布的。
  2. 基于观测数据,去计算后验分布。
  3. 如果后验分布变量 z z z的维度非常高的话,我们就没办法将其全部表示出来,我们一般用后验分布的一些统计量,来代表整个后验分布。比如常见的用posterior mean and variances

  但是有一个问题,就是要去计算后验分布 p ( z ∣ x ) p(z|x) p(zx)的话,我们需要去计算 p ( x ) = ∫ z p ( x , z ) d z p(x)=\int_{z} p(x, z) d z p(x)=zp(x,z)dz这个积分,如果是高维度上的积分,数值上计算是非常困难的。并且有些情况是可能不存在解析解的。常用的方法有Markov Chain Monte Carlo(MCMC),但是计算比较慢。

  另外一种思路,把贝叶斯模型的计算问题转化为一个优化问题。之后就可以通过一些优化上的手段来进行加速。

KL散度

  而用一个分布去拟合另一个分布通常需要衡量这两个分布之间的相似性,通常采用KL散度,当然还有其他的一些方法,像JS散度这种。下面介绍KL散度

  机器学习中比较重要的一个概念—相对熵(relative entropy)。相对熵又被称为KL散度(Kullback–Leibler divergence) 或信息散度 (information divergence),是两个概率分布间差异的非对称性度量 。在信息论中,相对熵等价于两个概率分布的信息熵的差值,若其中一个概率分布为真实分布,另一个为理论(拟合)分布,则此时相对熵等于交叉熵与真实分布的信息熵之差,表示使用理论分布拟合真实分布时产生的信息损耗 。其公式如下:

D K L ( p ∥ q ) = ∑ i = 1 N [ p ( x i ) log ⁡ p ( x i ) − p ( x i ) log ⁡ q ( x i ) ] D_{K L}(p \| q)=\sum_{i=1}^{N}\left[p\left(x_{i}\right) \log p\left(x_{i}\right)-p\left(x_{i}\right) \log q\left(x_{i}\right)\right] DKL(pq)=i=1N[p(xi)logp(xi)p(xi)logq(xi)]

  合并之后表示为:

D K L ( p ∥ q ) = ∑ i = 1 N p ( x i ) log ⁡ ( p ( x i ) q ( x i ) ) D_{K L}(p \| q)=\sum_{i=1}^{N} p\left(x_{i}\right) \log \left(\frac{p\left(x_{i}\right)}{q\left(x_{i}\right)}\right) DKL(pq)=i=1Np(xi)log(q(xi)p(xi))

  假设理论拟合出来的事件概率分布 q ( x ) q(x) q(x)跟真实的分布 p ( x ) p(x) p(x)一模一样,即 p ( x ) = q ( x ) p(x)=q(x) p(x)=q(x),那么 p ( x i ) log ⁡ q ( x i ) p\left(x_{i}\right) \log q\left(x_{i}\right) p(xi)logq(xi)就等于真实事件的信息熵,这一点显而易见。在理论拟合出来的事件概率分布跟真实的一模一样的时候,相对熵等于0。而拟合出来不太一样的时候,相对熵大于0。其证明如下:

∑ i = 1 N p ( x i ) log ⁡ q ( x i ) p ( x i ) ≤ ∑ i = 1 N p ( x i ) ( q ( x i ) p ( x i ) − 1 ) = ∑ i = 1 N [ p ( x i ) − q ( x i ) ] = 0 \sum_{i=1}^{N} p\left(x_{i}\right) \log \frac{q\left(x_{i}\right)}{p\left(x_{i}\right)} \leq \sum_{i=1}^{N} p\left(x_{i}\right)\left(\frac{q\left(x_{i}\right)}{p\left(x_{i}\right)}-1\right)=\sum_{i=1}^{N}\left[p\left(x_{i}\right)-q\left(x_{i}\right)\right]=0 i=1Np(xi)logp(xi)q(xi)i=1Np(xi)(p(xi)q(xi)1)=i=1N[p(xi)q(xi)]=0

  其中第一个不等式是由 l n ( x ) ≤ x − 1 ln(x) \leq x -1 ln(x)x1推导出来的,只在 p ( x i ) = q ( x i ) p(x_{i})=q(x_{i}) p(xi)=q(xi)时取到等号。

  这个性质很关键,因为它正是深度学习梯度下降法需要的特性。假设神经网络拟合完美了,那么它就不再梯度下降,而不完美则因为它大于0而继续下降。

  但它有不好的地方,就是它是不对称的。也就是用 P P P 来拟合 Q Q Q 和用 Q Q Q 来拟合 P P P 的相对熵居然不一样,而他们的距离是一样的。这也就是说,相对熵的大小并不跟距离有一一对应的关系。

变分贝叶斯

  我们经常利用贝叶斯公式求posterior distribution P ( Z ∣ X ) P(Z | X) P(ZX)

P ( Z ∣ X ) = p ( X , Z ) ∫ z p ( X , Z = z ) d z P(Z | X)=\frac{p(X, Z)}{\int_{z} p(X, Z=z) d z} P(ZX)=zp(X,Z=z)dzp(X,Z)

  但posterior distribution P ( Z ∣ X ) P(Z | X) P(ZX)求解用贝叶斯的方法是比较困难的,因为我们需要去计算 ∫ z p ( X = x , Z = z ) d z \int_{z} p(X=x, Z=z) d z zp(X=x,Z=z)dz,而 Z Z Z通常会是一个高维的随机变量,这个积分计算起来就非常困难。在贝叶斯统计中,所有的对于未知量的推断(inference)问题可以看做是对后验概率(posterior)的计算。因此提出了Variational Inference来计算posterior distribution

  那Variational Inference怎么做的呢?其核心思想主要包括两步:

  1. 假设一个分布 q ( z ; λ ) q(z ; \lambda) q(z;λ) (这个分布是我们搞得定的,搞不定的就没意义了)
  2. 通过改变分布的参数 λ \lambda λ,使 q ( z ; λ ) q(z ; \lambda) q(z;λ) 靠近 p ( z ∣ x ) p(z|x) p(zx)

  总结称一句话就是,为真实的后验分布引入了一个参数话的模型。 即:用一个简单的分布 q ( z ; λ ) q(z ; \lambda) q(z;λ) 拟合复杂的分布 p ( z ∣ x ) p(z|x) p(zx)

  这种策略将计算 p ( z ∣ x ) p(z|x) p(zx) 的问题转化成优化问题了

λ ∗ = arg ⁡ min ⁡ λ divergence ⁡ ( p ( z ∣ x ) , q ( z ; λ ) ) \lambda^{*}=\arg \min _{\lambda} \operatorname{divergence}(p(z | x), q(z ; \lambda)) λ=argλmindivergence(p(zx),q(z;λ))

  收敛后,就可以用 q ( z ; λ ) q(z;\lambda) q(z;λ) 来代替 p ( z ∣ x ) p(z|x) p(zx)了。

  本文的目的还是来求这个变分推理,不要走偏了。下面涉及一些公式等价转换:

log ⁡ P ( x ) = log ⁡ P ( x , z ) − log ⁡ P ( z ∣ x ) = log ⁡ P ( x , z ) Q ( z ; λ ) − log ⁡ P ( z ∣ x ) Q ( z ; λ ) \begin{aligned} \log P(x) &=\log P(x, z)-\log P(z | x) \\ &=\log \frac{P(x, z)}{Q(z ; \lambda)}-\log \frac{P(z | x)}{Q(z ; \lambda)} \end{aligned} logP(x)=logP(x,z)logP(zx)=logQ(z;λ)P(x,z)logQ(z;λ)P(zx)

  等式两边同时对 Q ( z ) Q(z) Q(z)求期望,得:

E q ( z ; λ ) log ⁡ P ( x ) = E q ( z ; λ ) log ⁡ P ( x , z ) − E q ( z ; λ ) log ⁡ P ( z ∣ x ) log ⁡ P ( x ) = E q ( z ; λ ) log ⁡ p ( x , z ) q ( z ; λ ) − E q ( z ; λ ) log ⁡ p ( z ∣ x ) q ( z ; λ ) = K L ( q ( z ; λ ) ∥ p ( z ∣ x ) ) + E q ( z ; λ ) log ⁡ p ( x , z ) q ( z ; λ ) log ⁡ P ( x ) = K L ( q ( z ; λ ) ∥ p ( z ∣ x ) ) + E q ( z ; λ ) log ⁡ p ( x , z ) q ( z ; λ ) \begin{aligned} \mathbb{E}_{q(z ; \lambda)} \log P(x) &=\mathbb{E}_{q(z ; \lambda)} \log P(x, z)-\mathbb{E}_{q(z ; \lambda)} \log P(z | x) \\ \log P(x) &=\mathbb{E}_{q(z ; \lambda)} \log \frac{p(x, z)}{q(z ; \lambda)}-\mathbb{E}_{q(z ; \lambda)} \log \frac{p(z | x)}{q(z ; \lambda)} \\ &=K L(q(z ; \lambda) \| p(z | x))+\mathbb{E}_{q(z ; \lambda)} \log \frac{p(x, z)}{q(z ; \lambda)} \\ \log P(x) &=K L(q(z ; \lambda) \| p(z | x))+\mathbb{E}_{q(z ; \lambda)} \log \frac{p(x, z)}{q(z ; \lambda)} \end{aligned} Eq(z;λ)logP(x)logP(x)logP(x)=Eq(z;λ)logP(x,z)Eq(z;λ)logP(zx)=Eq(z;λ)logq(z;λ)p(x,z)Eq(z;λ)logq(z;λ)p(zx)=KL(q(z;λ)p(zx))+Eq(z;λ)logq(z;λ)p(x,z)=KL(q(z;λ)p(zx))+Eq(z;λ)logq(z;λ)p(x,z)

  到这里我们需要回顾一下我们的问题,从另一个角度再来思考一遍,寻找一个近似后验 q ∗ ( z ) ∈ Q q^{*}(z) \in Q q(z)Q去近似 p ( z ∣ x ) p(z|x) p(zx)

q ∗ ( z ) = arg min ⁡ q ( z ) ∈ Q L ( q ( z ) , p ( z ∣ x ) ) q^{*}(z) = \argmin_{q(z) \in Q} L(q(z),p(z|x)) q(z)=q(z)QargminL(q(z),p(zx))

  这里有两个注意点。1. 如何来选取这个 Q Q Q。2. L L L表示它们之间的距离度量,通常用KL-divergence来表示: L ( q ( z ) , p ( z ∣ x ) ) = K L ( q ( z ) ∣ ∣ p ( z ∣ x ) ) L(q(z),p(z|x)) = KL(q(z) || p(z|x)) L(q(z),p(zx))=KL(q(z)∣∣p(zx))。用KL的原因在于它满足一些凸性,可导等性质。另一方面在于它具备一些性质:

q ∗ ( z ) = arg min ⁡ q ( z ) ∈ Q K L ( q ( z ) , p ( z ∣ x ) ) = arg min ⁡ q ( z ) ∈ Q − ∫ z q ( z ) l o g [ p ( z ∣ x ) q ( z ) ] q^{*}(z) = \argmin_{q(z) \in Q} KL(q(z),p(z|x)) \\ = \argmin_{q(z) \in Q} - \int_{z} q(z) log[\frac{p(z|x)}{q(z)}] q(z)=q(z)QargminKL(q(z),p(zx))=q(z)Qargminzq(z)log[q(z)p(zx)]

   p ( z ∣ x ) p(z|x) p(zx)是我们的target q ( z ) q(z) q(z)是我们提出的,需要去优化的分布。要去算这个优化的目标函数,我们需要已知 p ( z ∣ x ) p(z|x) p(zx)这个后验分布,但是我们不知道这个后验分布是什么。因此,上述这个公式我们是无法直接计算的。这就变成了一个循环的问题,为了要去算 p ( z ∣ x ) p(z|x) p(zx),要去计算 q ( z ) q(z) q(z),而要计算 q ( z ) q(z) q(z)又需要计算 p ( z ∣ x ) p(z|x) p(zx)。在没有其它约束的情况下,当 q ∗ = p ( z ∣ x ) q^{*}=p(z|x) q=p(zx)的时候能够取到理论的最优值,但是 p ( z ∣ x ) p(z|x) p(zx)并不知道。

  我们对KL Divergence最小化的问题做一些形式上的转变,期望去找到一个等价的问题:

K L ( q ( z ) ∥ p ( z ∣ x ) ) = − ∫ z q ( z ) log ⁡ [ p ( z ∣ x ) q ( z ) ] d z = ∫ z q ( z ) log ⁡ q ( z ) d z − ∫ z q ( z ) log ⁡ p ( z ∣ x ) d z = E q [ log ⁡ q ( z ) ] − E q [ log ⁡ p ( z ∣ x ) ] = E q [ log ⁡ q ( z ) ] − E q [ log ⁡ [ p ( x , z ) p ( x ) ] ] = E q [ log ⁡ q ( z ) ] − E q [ log ⁡ p ( x , z ) ] + E q [ log ⁡ p ( x ) ] = E q [ log ⁡ q ( z ) ] − E q [ log ⁡ p ( x , z ) ] ⏟ − ELBO  + log ⁡ p ( x ) \begin{aligned} \mathrm{KL}(q(z) \| p(z \mid x)) &=-\int_{z} q(z) \log \left[\frac{p(z \mid x)}{q(z)}\right] d z \\ &=\int_{z} q(z) \log q(z) d z-\int_{z} q(z) \log p(z \mid x) d z \\ &=\mathbb{E}_{q}[\log q(z)]-\mathbb{E}_{q}[\log p(z \mid x)] \\ &=\mathbb{E}_{q}[\log q(z)]-\mathbb{E}_{q}\left[\log \left[\frac{p(x, z)}{p(x)}\right]\right] \\ &=\mathbb{E}_{q}[\log q(z)]-\mathbb{E}_{q}[\log p(x, z)]+\mathbb{E}_{q}[\log p(x)] \\ &=\underbrace{\mathbb{E}_{q}[\log q(z)]-\mathbb{E}_{q}[\log p(x, z)]}_{-\text {ELBO }}+\log p(x) \end{aligned} KL(q(z)p(zx))=zq(z)log[q(z)p(zx)]dz=zq(z)logq(z)dzzq(z)logp(zx)dz=Eq[logq(z)]Eq[logp(zx)]=Eq[logq(z)]Eq[log[p(x)p(x,z)]]=Eq[logq(z)]Eq[logp(x,z)]+Eq[logp(x)]=ELBO  Eq[logq(z)]Eq[logp(x,z)]+logp(x)

  上述公式经过一定的变型之后,ELBO就是log-likelihood的一个下界函数:

log ⁡ p ( x ) = E L B O ( q ) + K L ( q ( z ) ∥ p ( z ∣ x ) ) ≥ E L B O ( q ) \begin{aligned} \log p(x) &=\mathrm{ELBO}(q)+\mathrm{KL}(q(z) \| p(z \mid x)) \\ & \geq \mathrm{ELBO}(q) \end{aligned} logp(x)=ELBO(q)+KL(q(z)p(zx))ELBO(q)

  因为 log ⁡ p ( x ) \log p(x) logp(x)是一个与 q q q无关的常数,那么对 K L ( q ( z ) ∥ p ( z ∣ x ) ) \mathrm{KL}(q(z) \| p(z \mid x)) KL(q(z)p(zx))Minimizing问题就可以等价于Maximizing ELBO( q q q)。

  我们为什么要去做这样的一个替换呢?之前我们并不知道 q ∗ ( z ) = arg min ⁡ q ( z ) ∈ Q K L ( q ( z ) , p ( z ∣ x ) ) q^{*}(z) = \argmin_{q(z) \in Q} KL(q(z),p(z|x)) q(z)=argminq(z)QKL(q(z),p(zx))中的后验分布 p ( z ∣ x ) p(z|x) p(zx)。因为想要计算它的话,需要计算一个积分。而ELBO的表达式如下:

E L B O ( q ) = E q [ log ⁡ p ( x , z ) ] − E q [ log ⁡ q ( z ) ] = ∫ z q ( z ) log ⁡ [ p ( x , z ) q ( z ) ⏞ known  ] d z \begin{aligned} \mathrm{ELBO}(q) &=\mathbb{E}_{q}[\log p(x, z)]-\mathbb{E}_{q}[\log q(z)] \\ &=\int_{z} q(z) \log [\overbrace{\frac{p(x, z)}{q(z)}}^{\text {known }}] d z \end{aligned} ELBO(q)=Eq[logp(x,z)]Eq[logq(z)]=zq(z)log[q(z)p(x,z) known ]dz

  其中 p ( x , z ) = p ( x ∣ z ) p ( z ) p(x,z)=p(x|z)p(z) p(x,z)=p(xz)p(z),是一个先验分布与likelihood的乘积。因此可以对ELBO做优化求解。现在,variational inference的目标变成:

max ⁡ λ E q ( z ; λ ) [ log p ( x , z ) − log q ( z ; λ ) ] \max_{\lambda}\mathbb E_{q(z;\lambda)}[\text{log}p(x,z)-\text{log}q(z;\lambda)] λmaxEq(z;λ)[logp(x,z)logq(z;λ)]

   E q ( z ; λ ) [ log p ( x , z ) − log q ( z ; λ ) ] \mathbb E_{q(z;\lambda)}[\text{log}p(x,z)-\text{log}q(z;\lambda)] Eq(z;λ)[logp(x,z)logq(z;λ)]称为Evidence Lower Bound(ELBO) p ( x ) p(x) p(x)一般被称之为evidence,又因为 K L ( q ∣ ∣ p ) > = 0 KL(q||p)>=0 KL(q∣∣p)>=0, 所以 p ( x ) > = E q ( z ; λ ) [ log p ( x , z ) − log q ( z ; λ ) ] p(x)>=E_{q(z;\lambda)}[\text{log}p(x,z)-\text{log}q(z;\lambda)] p(x)>=Eq(z;λ)[logp(x,z)logq(z;λ)], 这就是为什么被称为ELBO

  实际上EM算法(Expectation-Maximization)就是利用了这一特征,它分为交替进行的两步:E step假设模型参数不变, q ( z ) = p ( z ∣ x ) q(z)=p(z|x) q(z)=p(zx),计算对数似然率,在M step再做ELBO相对于模型参数的优化。与变分法比较,EM算法假设了当模型参数固定时, p ( z ∣ x ) p(z|x) p(zx) 是易计算的形式,而变分法并无这一限制,对于条件概率难于计算的情况,变分法仍然有效。

  那如何来求解上述公式呢?下面介绍平均场(mean-field)、蒙特卡洛、和黑盒变分推断 (Black Box Variational Inference) 的方法。

平均场变分族(mean-field variational family)

  之前我们说我们选择一族合适的近似概率分布 q ( Z ; λ ) q(Z;\lambda) q(Z;λ),那么实际问题中,我们可以选择什么形式的 q ( Z ; λ ) q(Z;\lambda) q(Z;λ) 呢?

  一个简单而有效的变分族为平均场变分族(mean-field variational family)。它假设了隐藏变量间是相互独立的:

q ( Z ; λ ) = ∏ k = 1 K q k ( Z k ; λ k ) q(Z;\lambda) = \prod_{k=1}^{K}q_k(Z_k;\lambda_k) q(Z;λ)=k=1Kqk(Zk;λk)

  这个假设看起来似乎比较强,但实际应用范围还是比较广泛,我们可以将其延展为将有实际相互关联的隐藏变量分组,而化为各组联合分布的乘积形式即可。

  利用ELBO和平均场假设,我们就可以利用coordinate ascent variational inference(简称CAVI)方法来处理:

  • 利用条件概率分布的链式法则有

p ( z 1 : m , x 1 : n ) = p ( x 1 : n ) ∏ j = 1 m p ( z j ∣ z 1 : ( j − 1 ) , x 1 : n ) p\left(z_{1: m}, x_{1: n}\right)=p\left(x_{1: n}\right) \prod_{j=1}^{m} p\left(z_{j} | z_{1:(j-1)}, x_{1: n}\right) p(z1:m,x1:n)=p(x1:n)j=1mp(zjz1:(j1),x1:n)

  • 变分分布的期望为

E [ log ⁡ q ( z 1 : m ) ] = ∑ j = 1 m E j [ log ⁡ q ( z j ) ] E\left[\log q\left(z_{1: m}\right)\right]=\sum_{j=1}^{m} E_{j}\left[\log q\left(z_{j}\right)\right] E[logq(z1:m)]=j=1mEj[logq(zj)]

  将其代入ELBO的定义得到:

E L B O = logp ⁡ ( x 1 : n ) + ∑ j = 1 m E [ log ⁡ p ( z j ∣ z 1 : ( j − 1 ) , x 1 : n ) ] − E j [ log ⁡ q ( z j ) ] E L B O=\operatorname{logp}\left(x_{1: n}\right)+\sum_{j=1}^{m} E\left[\log p\left(z_{j} | z_{1:(j-1)}, x_{1: n}\right)\right]-E_{j}\left[\log q\left(z_{j}\right)\right] ELBO=logp(x1:n)+j=1mE[logp(zjz1:(j1),x1:n)]Ej[logq(zj)]

  将其对 z k z_{k} zk 求导并令导数为零有:

d E L B O d q ( z k ) = E − k [ log ⁡ p ( z k ∣ z − k , x ) ] − log ⁡ q ( z k ) − 1 = 0 \frac{d E L B O}{d q\left(z_{k}\right)}=E_{-k}\left[\log p\left(z_{k} | z_{-k}, x\right)\right]-\log q\left(z_{k}\right)-1=0 dq(zk)dELBO=Ek[logp(zkzk,x)]logq(zk)1=0

  由此得到coordinate ascent 的更新法则为:

q ∗ ( z k ) ∝ exp ⁡ E − k [ log ⁡ p ( z k , z − k , x ) ] q^{*}\left(z_{k}\right) \propto \exp E_{-k}\left[\log p\left(z_{k}, z_{-k}, x\right)\right] q(zk)expEk[logp(zk,zk,x)]

  我们可以利用这一法则不断的固定其他的 z z z 的坐标来更新当前的坐标对应的 z z z值,这与Gibbs Sampling过程类似,不过Gibbs Sampling是不断的从条件概率中采样,而CAVI算法中是不断的用如下形式更新:

q ∗ ( z k ) ∝ exp ⁡ E [ log ⁡ ( conditional ) ] q^{*}\left(z_{k}\right) \propto \exp E[\log (\text {conditional})] q(zk)expE[log(conditional)]

Proof

E L B O ( q ) = E q [ log ⁡ p ( x , z ) ] − E q [ log ⁡ q ( z ) ] = ∫ z q ( z ) log ⁡ p ( z , x ) d z − [ E q j [ log ⁡ q j ( z j ) ] + ∑ i ≠ j E q i [ log ⁡ q i ( z i ) ] ⏟ const  ] = ∫ z j q j ( z j ) [ ∫ z − j q − j ( z − j ) log ⁡ p ( z , x ) d z − j ] d z j − E q j [ log ⁡ q j ( z j ) ] −  const  = ∫ z j q j ( z j ) E q − j [ log ⁡ p ( z , x ) ] d z j − ∫ z j q j ( z j ) log ⁡ q j ( z j ) d z j −  const  \begin{aligned} \mathrm{ELBO}(q)=& \mathbb{E}_{q}[\log p(x, z)]-\mathbb{E}_{q}[\log q(z)] \\ =& \int_{z} q(z) \log p(z, x) d z-\left[\mathbb{E}_{q_{j}}\left[\log q_{j}\left(z_{j}\right)\right]+\underbrace{\sum_{i \neq j} \mathbb{E}_{q_{i}}\left[\log q_{i}\left(z_{i}\right)\right]}_{\text {const }}\right] \\ =& \int_{z_{j}} q_{j}\left(z_{j}\right)\left[\int_{z_{-j}} q_{-j}\left(z_{-j}\right) \log p(z, x) d z_{-j}\right] d z_{j} \\ &-\mathbb{E}_{q_{j}}\left[\log q_{j}\left(z_{j}\right)\right]-\text { const } \\ =& \int_{z_{j}} q_{j}\left(z_{j}\right) \mathbb{E}_{q-j}[\log p(z, x)] d z_{j}-\int_{z_{j}} q_{j}\left(z_{j}\right) \log q_{j}\left(z_{j}\right) d z_{j}-\text { const } \end{aligned} ELBO(q)====Eq[logp(x,z)]Eq[logq(z)]zq(z)logp(z,x)dz Eqj[logqj(zj)]+const  i=jEqi[logqi(zi)] zjqj(zj)[zjqj(zj)logp(z,x)dzj]dzjEqj[logqj(zj)] const zjqj(zj)Eqj[logp(z,x)]dzjzjqj(zj)logqj(zj)dzj const 

  定义一个新的分布:

log ⁡ p ~ j ( z j , x ) = E q − j [ log ⁡ p ( z , x ) ] +  const  \log \tilde{p}_{j}\left(z_{j}, x\right)=\mathbb{E}_{q-j}[\log p(z, x)]+\text { const } logp~j(zj,x)=Eqj[logp(z,x)]+ const 

  此时的ELBO就可以写成如下形式:

E L B O ( q ) = ∫ z j q j ( z j ) log ⁡ p ~ j ( z j , x ) d z j − ∫ z j q j ( z j ) log ⁡ q j ( z j ) d z j +  const  = ∫ z j q j ( z j ) log ⁡ p ~ j ( z j , x ) q j ( z j ) d z j +  const  = − K L ( q j ( z j ) ∥ p ~ j ( z j , x ) ) +  const  \begin{aligned} \mathrm{ELBO}(q) &=\int_{z_{j}} q_{j}\left(z_{j}\right) \log \tilde{p}_{j}\left(z_{j}, x\right) d z_{j}-\int_{z_{j}} q_{j}\left(z_{j}\right) \log q_{j}\left(z_{j}\right) d z_{j}+\text { const } \\ &=\int_{z_{j}} q_{j}\left(z_{j}\right) \log \frac{\tilde{p}_{j}\left(z_{j}, x\right)}{q_{j}\left(z_{j}\right)} d z_{j}+\text { const } \\ &=-\mathrm{KL}\left(q_{j}\left(z_{j}\right) \| \tilde{p}_{j}\left(z_{j}, x\right)\right)+\text { const } \end{aligned} ELBO(q)=zjqj(zj)logp~j(zj,x)dzjzjqj(zj)logqj(zj)dzj+ const =zjqj(zj)logqj(zj)p~j(zj,x)dzj+ const =KL(qj(zj)p~j(zj,x))+ const 

  此时的KL divergence达到最小值时,当:

q j ∗ ( z j ) = p ~ j ( z j , x ) ∝ exp ⁡ { E q − j [ log ⁡ p ( z , x ) ] } (  normalize  ) = exp ⁡ { E q − j [ log ⁡ p ( z , x ) ] } ∫ z j exp ⁡ { E q − j [ log ⁡ p ( z , x ) ] } d z j \begin{aligned} q_{j}^{*}\left(z_{j}\right) &=\tilde{p}_{j}\left(z_{j}, x\right) \\ & \propto \exp \left\{\mathbb{E}_{q-j}[\log p(z, x)]\right\} \\ (\text { normalize }) &=\frac{\exp \left\{\mathbb{E}_{q-j}[\log p(z, x)]\right\}}{\int_{z_{j}} \exp \left\{\mathbb{E}_{q_{-j}}[\log p(z, x)]\right\} d z_{j}} \end{aligned} qj(zj)( normalize )=p~j(zj,x)exp{Eqj[logp(z,x)]}=zjexp{Eqj[logp(z,x)]}dzjexp{Eqj[logp(z,x)]}

  其完整算法如下所示:

CAVI算法流程

MCMC

  MCMC方法是利用马尔科夫链取样来近似后验概率,变分法是利用优化结果来近似后验概率,那么我们什么时候用MCMC,什么时候用变分法呢?

  首先,MCMC相较于变分法计算上消耗更大,但是它可以保证取得与目标分布相同的样本,而变分法没有这个保证:它只能寻找到近似于目标分布一个密度分布,但同时变分法计算上更快,由于我们将其转化为了优化问题,所以可以利用诸如随机优化(stochastic optimization)或分布优化(distributed optimization)等方法快速的得到结果。所以当数据量较小时,我们可以用MCMC方法消耗更多的计算力但得到更精确的样本。当数据量较大时,我们用变分法处理比较合适。

  另一方面,后验概率的分布形式也影响着我们的选择。比如对于有多个峰值的混合模型,MCMC可能只注重其中的一个峰而不能很好的描述其他峰值,而变分法对于此类问题即使样本量较小也可能优于MCMC方法。

黑盒变分推断(BBVI)

  ELBO公式表达为:

E q ( z ; λ ) [ log p ( x , z ) − log q ( z ; λ ) ] \mathbb E_{q(z;\lambda)}[\text{log}p(x,z)-\text{log}q(z;\lambda)] Eq(z;λ)[logp(x,z)logq(z;λ)]

  对用参数 θ \theta θ替代 λ \lambda λ,并对其求导:

∇ θ ELBO ⁡ ( θ ) = ∇ θ E q ( log ⁡ p ( x , z ) − log ⁡ q θ ( z ) ) \nabla_{\theta} \operatorname{ELBO}(\theta)=\nabla_{\theta} \mathbb{E}_{q}\left(\log p(x, z)-\log q_{\theta}(z)\right) θELBO(θ)=θEq(logp(x,z)logqθ(z))

  直接展开计算如下:

∂ ∂ θ ∫ q θ ( z ) ( log ⁡ p ( x , z ) − log ⁡ q θ ( z ) ) d z = ∫ ∂ ∂ θ [ q θ ( z ) ( log ⁡ p ( x , z ) − log ⁡ q θ ( z ) ) ] d z = ∫ ∂ ∂ θ ( q θ ( z ) log ⁡ p ( x , z ) ) − ∂ ∂ θ ( q θ ( z ) log ⁡ q θ ( z ) ) d z = ∫ ∂ q θ ( z ) ∂ θ log ⁡ p ( x , z ) − ∂ q θ ( z ) ∂ θ log ⁡ q θ ( z ) − ∂ q θ ( z ) ∂ θ d z \begin{aligned} & \frac{\partial}{\partial \theta} \int q_{\theta}(z)\left(\log p(x, z)-\log q_{\theta}(z)\right) d z \\ =& \int \frac{\partial}{\partial \theta}\left[q_{\theta}(z)\left(\log p(x, z)-\log q_{\theta}(z)\right)\right] d z \\ =& \int \frac{\partial}{\partial \theta}\left(q_{\theta}(z) \log p(x, z)\right)-\frac{\partial}{\partial \theta}\left(q_{\theta}(z) \log q_{\theta}(z)\right) d z \\ =& \int \frac{\partial q_{\theta}(z)}{\partial \theta} \log p(x, z)-\frac{\partial q_{\theta}(z)}{\partial \theta} \log q_{\theta}(z)-\frac{\partial q_{\theta}(z)}{\partial \theta} d z \end{aligned} ===θ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 ) ∂ θ d z = ∂ ∂ θ ∫ q θ ( z ) d z = ∂ ∂ θ 1 = 0 \int \frac{\partial q_{\theta}(z)}{\partial \theta} d z=\frac{\partial}{\partial \theta} \int q_{\theta}(z) d z=\frac{\partial}{\partial \theta} 1=0 θqθ(z)dz=θqθ(z)dz=θ1=0

  因此:

∇ θ ELBO ⁡ ( θ ) = ∫ ∂ q θ ( z ) ∂ θ ( log ⁡ p ( x , z ) − log ⁡ q θ ( z ) ) d z = ∫ q θ ( z ) ∂ log ⁡ q θ ( z ) ∂ θ ( log ⁡ p ( x , z ) − log ⁡ q θ ( z ) ) d z = ∫ q θ ( z ) ∇ θ log ⁡ q θ ( z ) ( log ⁡ p ( x , z ) − log ⁡ q θ ( z ) ) d z = E q [ ∇ θ log ⁡ q θ ( z ) ( log ⁡ p ( x , z ) − log ⁡ q θ ( z ) ) ] \begin{aligned} \nabla_{\theta} \operatorname{ELBO}(\theta) &=\int \frac{\partial q_{\theta}(z)}{\partial \theta}\left(\log p(x, z)-\log q_{\theta}(z)\right) d z \\ &=\int q_{\theta}(z) \frac{\partial \log q_{\theta}(z)}{\partial \theta}\left(\log p(x, z)-\log q_{\theta}(z)\right) d z \\ &=\int q_{\theta}(z) \nabla_{\theta} \log q_{\theta}(z)\left(\log p(x, z)-\log q_{\theta}(z)\right) d z \\ &=\mathbb{E}_{q}\left[\nabla_{\theta} \log q_{\theta}(z)\left(\log p(x, z)-\log q_{\theta}(z)\right)\right] \end{aligned} θ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[θlogqθ(z)(logp(x,z)logqθ(z))]

  然后写成 SGD,就是所谓 Black Box Variational Inference (BBVI)

E z ∼ q θ ( z ) [ ∇ θ log ⁡ q θ ( z ) ( log ⁡ p ( x , z ) − log ⁡ q θ ( z ) ) ] ≈ 1 N ∑ i = 1 N ∇ θ log ⁡ q θ ( z i ) ( log ⁡ p ( x , z i ) − log ⁡ q θ ( z i ) ) \begin{aligned} & \mathbb{E}_{z \sim q_{\theta}(z)}\left[\nabla_{\theta} \log q_{\theta}(z)\left(\log p(x, z)-\log q_{\theta}(z)\right)\right] \\ \approx & \frac{1}{N} \sum_{i=1}^{N} \nabla_{\theta} \log q_{\theta}\left(z_{i}\right)\left(\log p\left(x, z_{i}\right)-\log q_{\theta}\left(z_{i}\right)\right) \end{aligned} Ezqθ(z)[θlogqθ(z)(logp(x,z)logqθ(z))]N1i=1Nθlogqθ(zi)(logp(x,zi)logqθ(zi))

  其中 z i ∼ q θ ( z ) z_{i} \sim q_{\theta}(z) ziqθ(z)

Black Box Variational Inference (BBVI)

参考

  • https://www.jianshu.com/p/b8ecabf9af07
  • https://blog.csdn.net/weixinhum/article/details/85064685
  • https://zhuanlan.zhihu.com/p/51567052
  • https://zhuanlan.zhihu.com/p/49401976
  • https://space.bilibili.com/491707363/channel/detail?cid=162191

我的微信公众号名称:小小何先生
公众号介绍:主要研究分享深度学习、机器博弈、强化学习等相关内容!期待您的关注,欢迎一起学习交流进步!

  • 18
    点赞
  • 48
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: 变分推断(variational inference)是一种用于在概率模型中近似推断潜在变量的方法。在概率模型中,我们通常有观测数据和潜在变量两个部分。我们希望通过观测数据集来估计潜在变量的后验分布。然而,由于计算复杂度的限制,我们无法直接计算后验分布。 变分推断通过近似后验分布为一个简化的分布来解决这个问题。它会选择一个与真实后验分布相似的分布族,然后通过最小化这个分布与真实后验分布之间的差异来得到一个最佳的近似分布。这个问题可以转化为一个最优化问题,通常使用变分推断的一个常用方法是最大化证据下界(evidence lower bound,ELBO)来近似后验分布。 变分推断的一个重要特点是可以处理大规模和复杂的概率模型。由于近似分布是通过简化的分布族来表示的,而不是直接计算后验分布,所以它可以减少计算复杂度。此外,变分推断还可以通过引入额外的约束或假设来进一步简化近似分布,提高计算效率。 然而,变分推断也有一些缺点。因为近似分布是通过简化的分布族来表示的,所以它会引入一定的偏差。此外,变分推断的结果依赖于所选择的分布族,如果分布族选择不合适,可能会导致较差的近似结果。 总之,变分推断是一种用于近似计算概率模型中后验分布的方法,通过选择一个与真实后验分布相似的分布族,并最小化与真实后验分布之间的差异来得到一个最佳的近似分布。它具有处理大规模和复杂模型的能力,但也有一些局限性。 ### 回答2: 转变分推断(variational inference)是一种用于近似求解复杂概率模型的方法。它的核心思想是将复杂的后验分布近似为一个简单的分布,通过最小化这两个分布之间的差异来求解模型的参数。 变分推断通过引入一个简单分布(称为变分分布)来近似复杂的后验分布。这个简单分布通常属于某个已知分布族,例如高斯分布或指数分布。变分推断通过最小化变分分布和真实后验分布之间的差异,来找到最优的参数。 为了实现这一点,变分推断使用了KL散度(Kullback-Leibler divergence)这一概念。KL散度是用来衡量两个概率分布之间的差异的指标。通过最小化变分分布与真实后验分布之间的KL散度,我们可以找到一个最优的变分分布来近似真实后验分布。 变分推断的步骤通常包括以下几个步骤: 1. 定义变分分布:选择一个简单的分布族作为变分分布,例如高斯分布。 2. 定义目标函数:根据KL散度的定义,定义一个目标函数,通常包括模型的似然函数和变分分布的熵。 3. 最优化:使用数值方法(例如梯度下降法)最小化目标函数,找到最优的变分参数。 4. 近似求解:通过最优的变分参数,得到近似的后验分布,并用于模型的推断或预测。 变分推断的优点是可以通过选择合适的变分分布,来控制近似精度和计算复杂度之间的平衡。它可以应用于各种概率模型和机器学习任务,例如潜在变量模型、深度学习和无监督学习等。 总而言之,转变分推断是一种用于近似求解复杂概率模型的方法,通过近似后验分布来求解模型的参数。它通过最小化变分分布与真实后验分布之间的差异来实现近似求解。这个方法可以应用于各种概率模型和机器学习任务,具有广泛的应用价值。 ### 回答3: 变分推断(Variational Inference)是一种用于概率模型中的近似推断方法。它的目标是通过近似的方式来近似估计概率分布中的某些未知参数或隐变量。 在概率模型中,我们通常希望得到后验概率分布,即给定观测数据的情况下,未知参数或隐变量的概率分布。然而,由于计算复杂性的原因,我们往往无法直接计算后验分布。 变分推断通过引入一个称为变分分布的简化分布,将原问题转化为一个优化问题。具体来说,我们假设变分分布属于某个分布族,并通过优化一个目标函数,使得变分分布尽可能接近真实的后验分布。 目标函数通常使用卡尔贝克-勒勒散度(Kullback-Leibler divergence)来度量变分分布与真实后验分布之间的差异。通过最小化这个目标函数,我们可以找到最优的近似分布。在这个优化问题中,我们通常将问题转化为一个变分推断问题,其中我们需要优化关于变分分布的参数。 变分推断的一个优点是可以应用于各种类型的概率模型,无论是具有连续随机变量还是离散变量。此外,变分推断还可以解决复杂的后验推断问题,如变分贝叶斯方法和逐步变分推断等。 然而,变分推断也存在一些限制。例如,它通常要求选择一个合适的变分分布族,并且该族必须在计算上可以处理。此外,变分推断还可能导致近似误差,因为我们将问题简化为一个优化问题,可能会导致对真实后验分布的一些信息丢失。 总而言之,变分推断是一种强大的近似推断方法,可以用于概率模型中的参数和隐变量的估计。它通过引入变分分布来近似计算复杂的后验概率分布,从而转化为一个优化问题。然而,需要注意选择合适的变分分布族和可能的近似误差。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值