【deep learning学习笔记】Restricted Boltzmann Machine(待整理)

这几天看Deep Learning,看RBM(转载了一些资料,都是这几天看的,还有下载的资料,就不上传了),做做笔记。暂时没太强的逻辑,以后慢慢整理。


1. RBM是两层神经网络,隐含层和显示层,两层之间有连接。

2. 有三类参数:(1)两层之间的连接权值,|h| * |v| 个,|h| 和 |v|分别是隐含层和显示层的节点个数;(2)显示层节点的偏置;(3)隐含层节点的偏置

3. RBM的作用是将数据输入到显示层,并由此训练隐含层,当隐含层“产生”的显示层数据与实际输入数据很接近的时候,隐含层就是输入数据的一种特征表示。RBM归根结底是学习特征表示。这也是很多deep learning的tutorial吹牛deep learning有多牛B的地方,就是自动学习特征,避免了特征工程中很多人为的、经验的因素。拿图像处理任务来说,输入的显示层是像素,经过RBM学习,RBM学到的隐含层就可能是xxx(尼玛,我不是这个专业的,自己想象吧);然后把学习到的隐含层,作为另一个RBM的显示层,继续学习,就能学习到更加抽象的特征;如此,多个RBM级联在一起,就学习到了图像在各个抽象层次的特征。

4. RBM训练的目标函数,就是模型“产生”显示层输入数据的概率的概率:

                           

这也说明RBM是产生式模型。Theta是参数。

5. 训练原则是梯度下降方法,能推导出来全职更新公式如下:

                         

其中 <*>|data 是模型对数据的期望,<*>|model 是模型自身的期望。

6. <*>|data 这个数字好算,但是 <*>|model 这个计算起来比较麻烦,Hinton给出了CD(contrastive divergence)算法,能够有效计算 <*>|model。实际上是用Gibbs采样,用<*>|reconstruct 来代替 <*>|model 。公式如下:

                               


参考这个文章 http://blog.csdn.net/celerychen2009/article/details/8984316 


7. 那么什么是Gibbs采样?<*>|reconstruct 怎么算呢?

借用别人的话吧,自己懒得写了。“在训练过程中,首先将可视向量值映射给隐单元;然后可视单元由隐层单元重建;这些新可视单元再次映射给隐单元,这样就获取新的隐单元。执行这种反复步骤叫做吉布斯采样。隐层激活单元和可视层输入之间的相关性差别就作为权值更新的主要依据”


未完待续......



你可能感兴趣的:(【deep learning学习笔记】Restricted Boltzmann Machine(待整理))