本来在知乎开了个专栏想写点机器学习有关的笔记,但有的时候文章写的比较随意,一般就发布到博客上,刚刚想发一两篇文章到专栏,结果知乎不支持Markdown中数学公式,实在是太绝望了,所以以后就把自己觉得还行的内容放在简书里。话不多说,进入正题。
Coursera上Hinton课程第12周内容为受限玻尔兹曼机,这一讲可以说是完全没听懂,网上中文的资料不够详尽,所以决定自己整理一份,主要是根据Youtube上一个视频及其课件整理。
参考资料如下:
视频地址:
https://www.youtube.com/watch?v=FJ0z3Ubagt4
课件地址:
https://uwaterloo.ca/data-analytics/sites/ca.data-analytics/files/uploads/files/dbn2.pdf
课程主页:
https://uwaterloo.ca/data-analytics/deep-learning
受限玻尔兹曼机介绍
受限玻尔兹曼机是非监督学习算法,它是最常见的一些深度概率模型的构建块,包含一层可观察变量以及一层潜在变量的无向的的概率图形模型,可以用下图表示:
2018092701.png上图为可见层(输入层),为隐藏层,输入层一般是二进制数,我们后面只讨论二进制的输入,而之所以叫它“受限”玻尔兹曼机,是因为可见层内部以及隐藏层内部之间的节点没有连接。
受限玻尔兹曼机模型
接下来我们来看具体模型:
其中是能量函数,定义如下:
为正规化函数(使得概率和为),定义如下:
我们先来从直观上理解下这部分的内容,我们的目的肯定是极大化概率似然函数,而概率有如下定义:
所以我们希望尽可能地大,换句话说,我们希望能量尽可能地小,将能量中的点积写成求和式:
如果,因为,那么要使得能量最小,我们更希望;反之如果,我们更希望。用同样的方式对进行分析,总结如下:
系数的情形 | 我们倾向的选择 |
---|---|
算法
条件独立性
接着考虑如何最大化,这个式子中有,而是指数的求和,不大好处理,所以我们不优化这个式子,考虑条件概率
注意是常数,上式将概率分解为有关项的乘积,所以这个式子告诉我们条件独立:
并且
我们利用上式计算
其中
由的对称性,同理可得
RBM Gibbs Sampling
根据条件独立性,可以得到如下取样的方法:
Step 1:取样
由条件独立性,我们可以在给定的条件下同时并且独立的对中的每个元素取样。
Step 2:取样
由条件独立性,我们可以在给定的条件下同时并且独立的对中的每个元素取样。
这种取样方法叫做Gibbs Sampling
训练受限玻尔兹曼机
这里考虑如何训练受限玻尔兹曼机,我们的目标肯定是极大化概率似然函数,或者等价地,极大化对数概率似然函数,我们进行如下处理:
令,我们来对上式关于求梯度
注意,所以上述两项都可以看成随机变量的期望,所以可以写成如下形式:
第一项可以理解关于data的,第二项可以理解为关于model的。
我们利用能量的定义分别对上式再进行处理
记
带入上式可得
但是注意依旧涉及到,非常难计算,所以实际上我们会用如下近似:
对上述式子运用此近似可得
实际中我们会使用随机梯度,所以更新式如下
注意这里之所以使用加号是因为这里要最大化目标和函数,所以使用梯度上升。
算法总结
把上述内容总结起来,就可以得到如下算法:
-
对每个训练数据
i.从开始使用步Gibbs Sampling生成样本
ii.更新参数
-
返回至1直至停止条件满足
网友评论