深度信念神经网络DBN最通俗易懂的教程

时间:2024-04-13 20:38:21

前几天我把受限玻尔兹曼机给讲完了,这次我接着讲一下它的进阶理论,还是那句话,全是白话文,你们肯定能听懂

深度信念网络,它的英文名叫作Deep Belief Network,先解释一下这个名词:

Deep意思是深度,大家应该有听过深度学习吧,深度学习是一个叫做Hinton的大学霸发明的,这个大学霸,大神很牛,他的官网是:http://www.cs.toronto.edu/~hinton/  在这上面有很多他的创意,并且已经编写出各种语言的程序,我们可以直接使用。但是呢我们不能总直接拿来用,不知道原理对吧。所以我才开了今天的课程。那么回到话题上来,什么事深度学习呢,你想像,你现在有了点智商,学会了1+1=2,2+1=3,这就叫学习。现在老师问你1+2=?,你现在知道1+1和2+1,但是没有学过1+2,所以你答不上来,只能靠分析推断来解答这问题(说白了就是根据经验瞎猜)。然后你坐在轮椅上,脚一离地,唉~,想明白一件事儿,1+1=2?那么把两个1调过来看 还是1+1=2,那么2+1=3,把2和1调过来变成了1+2,那基本上就和1+1一样,它的结果1+2=3。这时候你的老师会握着你的手说:“恭喜你回答正确!”,这个解答1+2的过程就叫做深度学习,那么Deep理解了吧,就是学习1+2的意思。

Belief是信念的意思,这个信念其实说的就是概率,概率越大,说明你的答案越准确,比如你回答1+2=?时候,你会想出1+2=1,1+2=2,1+2=3,1+2=4好多答案,但经过刚才上面的分析,你觉得1+2=3是对的,所以它在你的脑袋里认为是对的概率很大,所以到最后你会选择概率大的那个答案。

Network是网络的意思,网络可不是互联网呀,这里的网络是神经网络,神经网络是啥意思,说白了就是各个神经元之间传递,用图1是最能说明问题的了。

深度信念神经网络DBN最通俗易懂的教程

图1

图1就是一个神经网络,下面是输入层,我们通过线性非线性的计算,然后求出上面的神经元的值,例如,你们看神经元之间都是单项箭头连接,这表示值是从下到上传递的。比如OUT1这个输出的神经元,它的计算公式为 OUT1=IN1*w11+IN2*w21+IN3*w31+IN4*w41+b1,其他的也是这么算,下面四个神经元乘以权值w,然后相加,最后把b加上就OK。刚才计算的过程就叫做神经网络,也就是这里的网络的意思。

合到一块,深度信念网络就是指能够通过概率大小学习的神经网络。

于是我们就得说一下怎么算的环节了,算法很简单,就是把RBM堆叠在一块,然后形成一大串连接的RBM,最后在顶端加入一个输出层,这就完事儿了,如图2所示就能看懂它的流程了。

深度信念神经网络DBN最通俗易懂的教程

图2

这个图是怎么运行的呢,我来说一下,很简单,就是把原始数据输入到最下面的RBM可视层中,然后训练RBM1,训练完成之后把RBM1的隐含层作为RBM2的可视层,继续训练RBM2,接下来把RBM2的隐含层做为RBM3的可视层,直到训练完成为止。训练的方法参考我的文章:http://blog.****.net/u013631121/article/details/76652647

RBM的最后一隐含层层与输出层连接,计算方法就是OUT1=f(IN1*w11+IN2*w21+IN3*w31+IN4*w41+b1),f(x)这里为一个函数,就是把里面的东西算完之后,里面的当作是X,如果f(x)=x^2,那么结果就是x^2,计算完了就结束了。

然后干啥,做反向传播,传播的方法很简单,首先是通过一个目标函数,一般为均方差函数,算出一个值E,然后用这个E乘以该层计算输出层时候公式的导数,比如是更新权值w11,那么就计算该层第一个神经元的计算方法,若计算方法是OUT1=f(N1*w11+IN2*w21+IN3*w31+IN4*w41+b1),那么导数就是IN1*f'(x)。求完这个导数之后乘上E1,再把这个导数乘上一个系数alpha,叫做学习速率,然后呢,加到w11之中。同理把wij所有的都算完,算完之后计算偏置量b1的导数,这个导数就是f'(x),完事儿乘上学习速率加到b1上面,同理把bj都给算完。我们算完之后,得到了w和b,但还有一个隐藏的东西,就是导数乘以学习速率我们叫做梯度下降值,写作▽w,▽b,这个东西我们作为跟上一层的E一样的东西,然后依次的往下算,直到最后一层的权值w和偏置量b全都更新完成为止

更新完事儿了,我们就要重新正向的算一遍,然后求E,然后再反向传播,直到E变得很小很小为止。

至此模型就建立完成了,完成之后,我们拿它带入新的数据,直接做预测分类等分析就好啦。我的故事讲完了谢谢大家