花了很久看了一下玻尔兹曼机,感觉水有点深,总之一步一步来嘛~~~~
先说一下一个非常好的参考资料: 受限玻尔兹曼机(RBM)学习笔记 ,有兴趣的可以再看看这篇文章的参考文献或者博客,写的也非常好,本文就是基于这篇文章的理解,简单证明一下RBM
接下来开证,不对之处欢迎指正:
①我们首先要知道玻尔兹曼机是一种基于统计力学提出来的能量模型,是一个随机神经元模型,首先介绍一下各个参数
②已知条件:利用能量函数可以得到可见层和隐藏层的联合概率分布
③然后我们利用联合概率计算边缘分布函数可以得到可见层V的分布函数
,直接把和拿到分子的原因是,分母为归一化常量,为常量
④接下来我们就是要可见层数据最大性的拟合总体样本空间的分布,我们假设总体分布为q(x),总空间为Ω,然后我们用KL距离来计算样本分布和可见层分布的相似度
关于KL距离请看我前面写过的博客,它是一种不对称距离。既然我们要求P(x)拟合Q(x)损失的能量,那么就用下式计算
⑤然后我们会发现,只有当P(x)最大的时候,才能让KL距离最小,这时候损失能量最小,因为总样本空间是固定的,所以这个Q(x)也是固定,只需管P(x)即可。接下来我们来求这个P(v)的最大值,求关于概率函数的最大值,我们很快就能想到极大似然函数,当然求解的时候用取对数方法求解
☆ ☆ ☆ ☆ ☆ ☆一定要注意,这个式子就是我们需要解决的问题,最好把它列在稿纸一边) ☆ ☆ ☆ ☆ ☆
⑥接下来我们对模型参数中的权重W和偏置A,B分别求其偏导数,记住上式中,能量函数 E 在上面说过了,主要就是求前面的条件概率和联合概率
这里提前定义一个东西
先来逐步求解上式中第一项对模型参数中权重W,偏置A和B的偏导:
————————————————————————————————————————————————————————————————————
(红色部分等于1,这一部分自己好好想一下,文末举了个小例子)
————————————————————————————————————————————————————————————————————
————————————————————————————————————————————————————————————————————
————————————————————————————————————————————————————————————————————
细心的话会发现这个P(hj=1|v)没有求出来,接下来我们求这一项
这里我们将能量函数拆开成两个式子
那么可以开始求P(hj=1|v)了
随后也就得到了最终的激活概率
⑦第⑤步的第一项我们计算完毕,再来计算一下第二项
(这里面第二个∑ 已经在上面计算出来了)
⑧至此,我们基本求出了第⑤步中需要计算的所有参数,但是有一个没求出来,写出来以后就会发现
⑨我们可以发现上面有一项∑[P(v)*....]是没有计算出来的,这个时候,我们就必须使用某些采样方法对此项进行估计。仔细观察, 发现他的形式是(概率*概率),如果你看过蒙特卡洛方法,就会发现蒙特卡洛是(函数*概率), 意思是这个函数再这个概率分布下的均值,因而可以采用蒙特卡洛方法来解决这一项无法求解问题. 大牛Hinton提出了对比散度算法,也就是把可见层输入数据当做起点,经过K次吉布斯采样的样本当做终点,近似计算上面三个式子,然后就变成了
—————————————————————————————————————————————————————————————————————————————
好了,做一下总结,其实这里面都是围绕着最终要解决的问题,也就是第⑤步提出的那个对模型参数求梯度的式子,针对第一项和第二项,我们分别求解,利用的知识点比较多,我第一次看的时候也不懂,但是看一次代码,然后再回头看这个也就差不多懂一部分了。
最后说一下哈,文章参考的是这篇文章:http://blog.csdn.net/itplus/article/details/19408143 有兴趣可以去详细看看的。
有不对的地方,谢谢大家指正~~~~
更新日志2017-8-30
关于⑥中红字部分的概率和为什么等于1,其实我也不太好说明我的想法对不对,我当时以一个小例子想的:
1.比如有编号为1-6的六个球,那么随便取出来一个它的概率和为1
2.因为每次取球相互独立(类比隐神经元相互独立),所以可以把球拆成两部分1-4一组,5-6一组,每组自己的概率和为1
3.然后我们用加和的方法写出从1→2的数学表达式变换方法
如果此变换没错(问了几个同学,表示应该没问题,特别强调独立),那么很容易发现
这样,如果我们把RBM证明中的h当做1-6的球空间,hj为1-4的球空间,h-j为5-6的球空间,然后替换上式就得到了
理解了这个,就知道为什么上面那个条件概率和为1了。