沉默的树分享 http://blog.sciencenet.cn/u/jiangqiuhua 做自己喜欢做的事!

博文

DBN的理解

已有 20656 次阅读 2015-5-10 09:49 |个人分类:统计学习|系统分类:科研笔记|关键词:学者| DBN, RBM, wake-sleep

由于对概率论和信息论的基础太差,使得DBN的学习费了很长时间。好在有google学术的帮助,查找论文方便多了,使得自己能够不断地继续下去。

DBN的学习一般都是从Hinton的论文A Fast Learning Algorithm for Deep Belief Nets开始。如果没有相关的背景知识,不知道问题的来由,这篇论文读起来是相当费劲的。

下面我将自己的学习过程回顾一下,希望能够帮助象我这种基础差的同学。

学习过程中主要参考了三篇文献,尤其是其中第二篇文献。这篇论文被我忽视了很久,造成了学习中很大的困惑。

1、A Fast Learning Algorithm for Deep Belief Nets
2、The wake-sleep algorithm for unsupervised neural networks    
3、An Introduction to Restricted Boltzmann Machines

文献【1】总体描述了DBN算法的实现。
我认为DBN算法就是Wake-Sleep算法+RBM,文中讨论了Explaining away,complementary prior两个重要概念。讨论了RBM与Infinite directed model with tied weights的等价性。

但是论文对Wake-Sleep算法解释特别少,因此,我对为什么讨论Explaining away,complementary prior两个概念非常不理解,云里雾里。使得我对为什么要用Wake-Sleep算法+RBM来学习多层神经网络非常难以理解。
文献【2】研究了Wake-Sleep算法。

多层神经网络有很好的特征表达能力,但许多学习算法效率不高。
Wake-Sleep算法是一种有效的多层神经网络学习算法。

它使得训练数据的表示最经济,同时能够准确地重构训练数据。
训练数据的表示分布(representation)记为 $Q(\alpha |d)$ ,训练数据的生成分布(generation)记为 $P(\alpha|d)$ 。
学习的目标是:使得描述长度(description length)最小。即:

$C(d)=\sum_{\alpha}(Q(\alpha|d)C(\alpha,d))-(-\sum_{\alpha}(Q(\alpha|d)logQ(\alpha|d)))$
在Wake阶段使得 $P(\alpha|d)$ 逼近 $Q(\alpha |d)$ ,在Sleep阶段使得 $Q(\alpha |d)$ 逼近 $P(\alpha|d)$ 。
但是,由于 $Q(\alpha |d)$ 为因子形式分布(factorial distribution),很难准确地匹配 $P(\alpha|d)$ 。因为 $P(\alpha|d)$ 的公式为:

$P(\alpha|d)=\frac{exp(-C(\alpha,d))}{\sum_{\beta}exp(-C(\beta,d))}$
在一般情况下是不具备因子形式的分布。因此 $Q(\alpha |d)$ 难以匹配 $P(\alpha|d)$ ,从而加大了学习误差。
为了改善Wake-Sleep算法,需要使得似然分布 $P(d|\alpha)$ 对应的后验分布 $P(\alpha|d)$ 具有因子形式分布。
互补先验分布(Complementary Prior)就能够保证因子形式的似然分布具有因子形式的后验分布。这点在文献【1】的附录中讨论得很清楚。
RBM的作用就是用来生成似然分布的互补先验分布,使得其后验分布具有因子形式。
因此,DBN算法解决了Wake-Sleep算法表示分布难以匹配生成分布的难题,通过RBM使得训练数据的生成分布具有因子形式,从而提高了学习效率。



https://m.sciencenet.cn/blog-110554-889016.html

上一篇:RBM原理的理解
下一篇:Explaining away理解

0

该博文允许注册用户评论 请点击登录 评论 (1 个评论)

数据加载中...

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-6-16 19:47

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部