作者:卢健波_785 | 来源:互联网 | 2023-08-08 15:24
作者:CHEONG
公众号:AI机器学习与知识图谱
研究方向:自然语言处理与知识图谱
阅读本文之前,首先注意以下两点:
1. 机器学习系列文章常含有大量公式推导证明,为了更好理解,文章在最开始会给出本文的重要结论,方便最快速度理解本文核心。需要进一步了解推导细节可继续往后看。
2. 文中含有大量公式,若读者需要获取含公式原稿Word文档,可关注公众号【AI机器学习与知识图谱】后回复:变分推断第三讲,可添加微信号【17865190919】进学习交流群,加好友时备注来自CSDN。原创不易,转载请告知并注明出处!
本文将先对变分推断所要解决的问题进行分析,然后给出基于随机梯度上升法的变分推断解法。
一、本文结论
结论1: 变分推断的主要思想:在给定数据集XXX下,问题是求后验概率ppp,简单情况下后验概率ppp可直接通过贝叶斯公式推导求出,但有些情况无法直接求解。因此变分推断想法是先假设另一个简单的概率分布qqq,如高斯分布,通过优化ppp和qqq之间距离最小化,让概率分布qqq逼近ppp,这样就可以用概率分布qqq近似表示后验概率ppp。
结论2: 基于随机梯度上升法主要思路就是对优化的目标函数q∗=argmaxqELBOq^*=argmax_qELBOq∗=argmaxqELBO求梯度的过程。最后使用MCMC采样的方式近似求出梯度,并且考虑到求解出梯度近似值的稳定性,使用了重参数化技巧Reparameterization Trick。在梯度求出之后便可使用迭代方式求出参数。
二、问题分析
在上一节详细介绍了变分推断所要解决的问题,下面我们首先重新明确优化的目标函数
其中:
为了表示方便,这里假设q(z)q(z)q(z)中zzz是关于参数ϕ\phiϕ的函数,这样优化函数就变成:
在明确了优化函数后,接下来就通过随机梯度上升法求解,因此下面通过公式推导求求梯度。
三、公式推导
下面是L(ϕ)L(\phi)L(ϕ)关于ϕ\phiϕ求梯度的过程:
这里为了方便表示,做以下赋值操作,用AAA表示公式前半部分,用BBB表示公式后半部分:
先看BBB项,其中logpθ(x,z)logp_\theta(x,z)logpθ(x,z)与L(ϕ)L(\phi)L(ϕ)无关,所以有:
所以最终化简可得BBB项为0,所以原始公式就只剩下AAA项:
所以可以将上述式子写成qϕq_\phiqϕ期望的形式如下:
这样我们就将L(ϕ)L(\phi)L(ϕ)关于ϕ\phiϕ的梯度求出来了,是一个关于qϕq_\phiqϕ的期望,就可以通过MCMC采样的方式把梯度具体表示出来,知道了梯度便可以利用梯度上升法进行求解了。首先通过MCMC采样法对zzz进行采样,zl∼qϕ,l=1,2,...,Lz^l \sim q_{\phi}, l=1,2,...,Lzl∼qϕ,l=1,2,...,L,得到L(ϕ)L(\phi)L(ϕ)关于ϕ\phiϕ的梯度为:
知道梯度后便可以通过随机梯度上升法求解参数:
但这里存在一个问题,问题就出在:
当qϕq_\phiqϕ很小时,如在0-1之间时,log函数的结果就会有很大的波动,会导致求出来的梯度值有很大的波动,这样MCMC采样时只有让LLL取非常大时才能避免这种波动带来的高方差High Variance的问题,所以在实际使用时存在工程上的问题。解决的方案就是使用重参数化技巧来避免。
四、重参数化技巧
Reparameterization Trick,假设:
其中
则:
在使用重参数化技巧之后,我们再来求目标函数的梯度值:
这里将qϕq_\phiqϕ可以利用重参数化技巧可以等价替换成p(ε)p(\varepsilon)p(ε):
这里就是关于p(ε)p(\varepsilon)p(ε)的期望了,所以对ϕ\phiϕ求梯度时就不会那么复杂
这里我们再使用MCMC采样法对ε\varepsilonε进行采样,εl∼p(ε),l=1,2,...,L\varepsilon^l \sim p(\varepsilon), l=1,2,...,Lεl∼p(ε),l=1,2,...,L,最终可以得出目标函数的梯度值为:
得知梯度值之后,便可以使用随机梯度上升法对参数进行迭代求解: