受限玻尔兹曼机RBM最通俗易懂的教程

本人来到CSDN已经有一段时间了,写文章也写了好几篇了,本人最喜欢的风格就是用白话讲解一些通俗易懂的东西,在之前,我讲了不少东西,也不知道大家懂没懂,但没关系,你们爱懂不懂,哈哈哈哈哈哈哈哈哈哈。

但这次,我要讲的东西我觉得你们都能懂,不懂我认作你爹,哈哈哈哈哈哈哈哈哈哈哈哈哈,哈哈哈哈哈哈哈哈哈哈哈哈哈

我们这次要讲的东西是受限玻尔兹曼机,英文名字是Restricted Boltzmann Machine,简称RBM。解释一下这个高大上的名词吧,受限指的是限制,限制啥东西?能量!什么叫能量,我给大家举个例子,天上掉下去一滴水,这水肯定是向下的,为啥,因为重力的原因,它因为重力把高度(叫做势能)给变换为速度(叫做动能),受到一个向下的拉力,然后才能把求往下拉。这个高度和速度其实说白了就是能量,它们互相转化,不消不灭。稍有常识的人都会看出,人往高处走,水往低处流,看我这篇文章的人就是为了往高处走,那水为啥往低处流呢,因为能量总是往势能最小的地方走,直到平衡为止。

能量给大家解释完了,那就说一下限制,这个限制很简单,意思就是水往低处流。这个“能量的受限”跟RBM模型有啥联系,其实吧,联系不是很大,只是在推导公式的时候用到而已。

下面说一下玻尔兹曼机的意思,玻尔兹曼是个学霸,他发明的模型,所以叫玻尔兹曼机。

名字我解释完了,下面我给出一张受限玻尔兹曼机的图片:


图1

如图1所示就为玻尔兹曼机的模型,它一共有两层,下面的四个圆圈叫做可视层,上面三个叫做隐含层。大家看看这个模型,它是箭头全链接,且双向的,这说明啥?没啥!我们管下面四圆圈叫可视层,其实说白了就是输入层,将原始数据给输入进去就行。隐含层是啥意思,就是说我通过一个公式,把可视层的数据给算成隐含数据。

于是我们就得说一下怎么算的了,首先介绍一个概念叫做权值,权值就是值每个小圆圈之间的连线的加权数,比如下面有4个圆圈,上面有3个,那么就有12个权值,我们用wij表示,i指下面圆圈的编号,j是上面的。另一个概念叫做偏置量,怎么理解呢,一次函数写作y=kx+b,权值wij就是k,那么偏置量就是b,我们把这张图继续补完,如图2所示就清晰了,图中的bi,aj指的就是偏置量,w43指的就是可视层神经元4与隐含层神经元3连接的权值。

图2

如图2所示,下一步我们就是把导入可视层的原始数据计算为隐含数据了,怎么计算,那可多了神马tansig,sigmoid,pureline等等,但是我们都不讲,我们就讲最简单的,举个粒子计算隐含层y编号为1的圆圈(左上角)的值,计算方式很简单,我就告诉你 用可视层x1~x4四个数据与权值相乘,然后加和,之后再把偏置量b1加上,就完事儿了。其公式可以写作 y1=x1*w11+x2*w21+x3*w31+x4*w41+b1。按照这个方法,即可把3个圆圈的值都算出来。

算完之后,我们通过算出来的y1,y2,y3在回求一遍x1~x4,为了方便区分,回求的值我们叫做x‘1~x’4。举个例子求x'1,把隐含层3个数据与权值相乘,之后把偏置量a1给加上就完事儿了,公式写作x1=y1*w11+y2*w12+y3*w13+a1。其余3个也按照这个方式求出。

求完x‘1~x’4后用x‘1~x’4对隐含层再次求一遍值,得到y'1~y'3三个数。

这些都完毕之后,我们要做的就是让我们求得x与x',但是我们通过计算他们的差值,不为0,那怎么办呢,那就是反向传播,第一步我们x和y的矢量做乘积,x'与y'做乘积,求出z与z'两个矩阵,这两个矩阵行数为x的数目,列数为y的数目,然后我们把z与z'给相减一下,然后加入到权值里面,例如w11,那么新的w11值就为:w11=w11+alpha*(z11-z'11),这里的alpha叫做学习速率,取值在0~1之间,大家自己一个数一个数的试试就知道多少好了,其它的权值也是一样计算。偏置量计算就是用以前的偏置量加上x-x'或y-y‘。如隐含层偏置量b1更新值为:b1=b1+alpha*(y1-y'1),可视层偏置量a1=a1+alpha*(x1-x'1),其余偏置量同理计算。

计算之后就是反向传播结束了,结束后在进行正向的运算,求一遍x与x'1的差值,看看想不想等,要是相等,行了,结束。不想等就反向传播运算,然后循环,知道近乎相等为止,这样一个RBM模型就建立好了。我讲的比较简单吧,懂了没?

猜你喜欢

转载自blog.csdn.net/u013631121/article/details/76652647