上周我们讲述了玻尔兹曼机的原理和相关的算法,我们知道为了使得其达到非常精确的解,需要非常漫长的过程,所以也就导致其应用非常困难。这周我们讲讲受限玻尔兹曼机是怎样从玻尔兹曼机演变而来,并为大家介绍Hinton在深度学习的奠基性工作——深度置信网络。
1
受限玻尔兹曼机RBM
什么是受限玻尔兹曼机?域玻尔兹曼机有什么关系和区别呢?我们先看看两者的结构图:
上图可以看到,受限玻尔兹曼机RBM就是讲BM的可见层和隐层自身之间的连接去掉了,简化了网络结构而已。BM的神经元只能取一个二值,但是RBM的神经元可以取任意类型的值。运行的原理仍然是通过训练输入,以大概率输出与训练集中相同或相似的向量。简化结构可以使得计算速度有一定的提升,但是至于为什么要采用这样的简化,好像没有找到相关的资料说明,但是我自己认为有可能和BP的图片压缩的应用即自编码器有一定的关系,这仅仅是我个人的理解,有不同理解的同学可以留言或者私下交流。
为什么会与BP的应用(自编码器)有关,请看下图:
如果有同学做过图片压缩的话,可能就会比较清楚上述第一张图想描述的原理,我们输入一张图片,经过隐层,再到输出,网络的输出仍然还是这张照片,算法是BP,通过这样一个网络,希望使得中间隐含层较少的神经元个数提取图片的特征信息,达到图片压缩的过程,同时又能够输出将原始的图片输出。也就是说,输入和输出要尽可能相似,这和RBM的原理非常相似。再看上述右边那张图,既然输入输入和输出相同或者非常相似,那么我从中间层拦腰对折,使得输出与输入重合,这样,就得到了RBM的两层结构了呢?而且这样的对折并不是没有道理的,因为我既能压缩,又能回复,所以输入和隐含层之间的权值,隐含层和输出之间的权值应该是相似的。因此,我个人猜想RBM的灵感来自于BP的图片压缩应用。
受限玻尔兹曼机有什么应用呢?例如协同滤波、语义哈希等。
2
深度置信网络和深度神经网络
2006年,Hinton在科学杂志上发表了一篇《Reducing the Dimendionality of Data with Neural Networks》的文章,可以说,这篇文章奠定了深度学习的基础,这篇文章解决了多层次BP神经网络的设计和训练难题。
这篇文章,主要就是按照下面这张图的应用场景来进行讨论的,主要目的就是希望压缩一张图片并可以较为理想地进行还原:
首先,我们看最左边的Pretraining部分,在这里我们先将一张图片转化成一个2000维的0/1值的向量,再将其作为输入,一个1000维输出的RBM,训练出相应的RBM的权值W2,我们就认为其是这个RBM提取(压缩)出的第一批特征。然后,通过同样的方法,将第一个RBM的输出作为第二个RBM的输入再进行压缩成500个输出,并训练得到第二批特征和相应的权值W3,直到第三个RBM中的W4。
OK,我们利用第一步得到的W1-4,将这3个RBM按照顺序进行堆叠起来,就可以得到Unrolling中的下面部分,也就是Encoder部分,通过刚才对受限玻尔兹曼机的由来的分析认为RBM就是一个对折了的BP,那么,现在就是我们将其展开的时候了,因此,我们将Encoder部分进行展开,就成了图片中间的整个原型了,展开时,对应的权值保持不变。那么这样的网络效果如何呢?看到图片,Hinton的应该是比较失望的,效果还是与原图有一定差距,因此不是非常满意。这样Hinton团队就做了第三步——微调。
第三步,既然认为中间的Unrolling的效果不好,那么我们将第二步中的权值仅仅作为网络的初始值,在这个初始值上再进行BP训练,也就是说进行了一个微调的训练,Hinton将这样的操作称为Fine-tuning的一个过程。从图片的质量上来看,很显然这样的结果比第二步有了很大的提升。
因此,Hinton将这样的一种堆叠的RBM形成的网络称为DBN(深度置信网络),但是其效果不一定会非常好,需要加上进一步的微调,因此DBN+微调训练称为DNN(深度神经网络),也可以叫DBN-DNN。
3
总结
通过上述的描述,我们看到目前的模型越来越接近现在我们经常提到的深度学习网络了。而且Hinton的这篇文章解决多层深度网络构建的最重要的一点就是其利用RBM在第一步做的预训练步骤,并且在此基础上做了微调训练。到目前为止,这种思想仍然是深度学习的基础,也难怪这篇文章被大家认为是深度学习奠基性的文章,因此非常值得深度学习初学者进行细读,有兴趣的同学可以下载下来,遇到问题随时交流。
由于精力有限,文中难免有一些错误,请读者不吝赐教!
下期预告Next
《人工智能发展史(七)之CNN卷积神经网络那些事儿》
关注有惊喜!
深度学习那些事
深度Deeper
关注微信号每周收听我们的消息
如果喜欢,请点赞~
领取专属 10元无门槛券
私享最新 技术干货