Hinton大牛的对比散度阅读笔记
个人感想:为了看懂这篇论文查了大量资料,感觉很多博客的理解讲得不是很清楚,大多数是关于对比散度在RBM中的应用。后来跟老师讨论了一下感觉已经大致理解了这篇文章的核心思想。另外大部分公式是自己手动敲的,欢迎大家评论转载,哈哈哈哈!
1.PoE模型
什么是PoE(product of experts)模型呢,更确切地说他应该是一种思想,就是把很多个分布乘起来再重新归一化得到一个新的分布,而这里的每一个分布就是一个专家(expert)。而这篇文章要就是针对这种模型提出了一种新的目标函数,之前使用的是对数似然。顺便提一下,作者在提到PoE模型之前还提出了一种模型,就是加权求和,这种方法是另一种结合多个模型或者分布的方法。就是对多个模型或者分布进行加权求和。但是作者说这种方法在拟合高维数据空间的时候效果不太好,大概就是这个意思吧。也许你已经注意到了我在上面说了很多“模型或者分布”这样的话,我们很多的机器学习模型包括深度学习其实就是在拟合某种数据的分布,这种方法理论上是可行的只要我们可以得到真实分布的下产生的所有数据,那么问题来了,很多时候我们并不知道这个分布。怎么办呢?我们只要利用尽可能多的我们观察到的数据来拟合或者逼近这个分布,如果这个拟合的分布足够接近那个"真实的分布"的话,我们就可以使用这个"拟合的分布"对服从"真实的分布"的还没有观察到的进行比较准确的预测和某种推断。请仔细体会模型和分布的关系。
2.使用对数似然作为PoE模型的目标函数
PoE模型具体表达式如上面的公式,这个是原文的公式在推导的时候我把下标具体化了,更加方便理解。这里的c可以看作真实分布产生的数据。这里的d是观查到的数据,就是我们实际用来训练模型的数据,这里只是拿出一个数据作为示例。
对数似然更新梯度的公式如下图所示,我们看到参数的梯度始于真实的分布c有关的,这是对数似然不好解决的一个问题,但是我们可以通过一些采样方法通过观察到的数据进行采样,估计后面那项,后面那项实际上可以看作一个期望与分布p(c|theta)。最经典的采样方法有Gibbs采样,但是作者说通过Gibbs采样会产生较大的采样方差,这里的采样方法不知道是什么意思。反正就是后面那项不好估计。
下图是上面公式的推导,前面的那项很容易推导主要是后的那项
3.使用对比散度作为PoE模型的目标函数
在第一部分我提到过我们的模型是为了的拟合一个分布,我们通过从观察到的数据的初始分布P0进行Gibbs采样,经过很长实际的Gibbs采样后我们得到Pθ∞,这个Gibbs采样是从模型中进行采样,我们的模型可以看作这里的θ,我们通过不断地调整模型地参数θ,使得最终地Pθ∞与P0这两个分布比较接近,于是作者自然地引出了散度这个概念,我们调整参数地方向应该是这个散度最小地方向,实际上我们可以把这个散度作为PoE模型地目标函数,P0||Pθ∞。但是这样地话就感觉没什么新意,额,自己认为的。实际上我们调整参数θ使得最终的Gibbs采样达到平衡状态的时候P0和Pθ1,Pθ2,...,Pθ∞,都应该是相同的或者是十分接近的,理想状态下他们都代表数据的真实分布,也就是论文中那个fantasy data对应的分布。P0||Pθ∞-P1||Pθ∞这个东西就叫做对比散度,
上面的这个公式没什么好说的它就是一个KL散度的定义。
关键是下面这个公式是整个文章中最难理解的部分感觉,下面这个公式对散度定义中后面一项进行求导,然后对分布P0下求了期望,实际上就是上面的公式对分布P0求了期望,但是它的后面确实对分布Pθ∞求的期望,注意到上面公式它的c是真实的分布与p0是无关的分布P0求和还是1相当与只需要求它本身就可以,而它本身就是一个期望啊,重点来了P(c|theta)这个分布其实就是Pθ∞,所以下面这个公式就很容易理解了。
下面这个公式应该本文的核心,它的推导其实很简单,后面的散度先不算(作者把他扯开了,这样感觉没有任何意义,作者后面说到后面那项其实对梯度估计影响不大所以直接给丢掉了),然后把Pθ∞换成了Pθ1,这里使用一步的Gibbs采样近似步的Gibbs采样,极大地加快了训练地过程。
4 使用对比度算法训练RBM(受限玻尔兹曼机)