深度学习 之受限玻尔兹曼机

深度学习 之 玻尔兹曼机

1.玻尔兹曼 BM

在这里插入图片描述

首先BM中的神经元都是二值神经元,也就是要么是0要么是1
如何理解上图中的BM与一般神经网络的区别的呢?

  • 我们可以在图中看到,它是个无向完全图
  • 也就是说,每个节点与节点之间都相连, 并且 节点与节点之间是双向的关系

这与一般神经网络不同,正常的神经网络中都分输入层,隐藏层,输出层, 每次训练都是按着一定的顺序往后推进的*

  • 另外,在BM中,我们无法找到哪个是输入口,哪个是输出口,因为BM的作用是仅仅在自己内部训练,学习一组数据的内在表示

2.限制玻尔兹曼 RBM

在这里插入图片描述
**在图中我们可以看到 RBM相比于BM去掉了一些神经元直接的连接, 比如红色与红色之间 蓝色与蓝色之间, 不过同样的,神经元与神经元之间的连接是无向的 **
他的本质是无监督学习,如上图中所述,他是很多方法的基础,比如降维,自编码器,学习特征等等
下图给出了RBM的样子, 它只有输入层和隐藏层,并没有输出层的概念,而我们刚刚学习来看,他是层间全连接,层内无连接的
在这里插入图片描述
我们来看看RBM的训练过程
在这里插入图片描述

前向传播的过程其实和常见的神经网络是一样的,输入x
经过一层隐藏层之后得到 a = s i g m o i d ( w ∗ x + b ) a = sigmoid(w*x+b) a=sigmoid(wx+b)
如果有多层隐藏层的话,如下图所说的,这里的RBM节点就起着自编码器的作用,也就是起到了降维的作用
在这里插入图片描述
重建的过程简单的说就是倒着训练,我们先看看上面那张图 结果是 a = s i g m o i d ( w ∗ x + b ) a =sigmoid(w*x+b) a=sigmoid(wx+b)
现在在重建的过程中,我们的公式变成了 r = s i g m o i d ( v + w ∗ a ) r = sigmoid(v + w*a) r=sigmoid(v+wa)
而RBM的目标就是在若干次训练后,让我们低纬度的a能跟r近似,也就是说在降维的同时保留了大部分原来的信息
在这里插入图片描述
在这里插入图片描述
前向传播预测的是 a的输出概率 已知 x 和 w的情况下
反向传播预测的是 x(也可以说r)的概率 ,在已知a 和 w的情况下
这就和刚刚的式子对应上了,这不过这里预测的是概率
而我们的目标是使得这两个p越接近越好
在这里插入图片描述
如下图所说,把两个概率结合起来写成 p ( x , a ) p(x,a) p(x,a) 也就是输入x与激活值a的联合概率分布
如下图所说: 这里的重建被称为生成学习, 与我们之前所学的分类器是不一样的,下面我就举一个简单的例子
对于我们之前所学习的分类器, 比如我们给他一张猪的照片和一张戴眼镜的人的照片, 分类器返回的是 标签:(猪,人),而生成学习返回的是数据,他会返回一个戴眼镜的猪
在这里插入图片描述
而RBM的重建的目标就是是的输入数据和重建结果的曲线重合部分越多越好,简单画个图
比如黑色的正态曲线是原来的输入x的分布,而重建的结果是红线,他与原来代表x的黑线重叠部分越多越好,也就是说,我们通过重接得到的结果,越接近原来的值越好,这点我在之前已经提到过了,这不过现在我们把这个概念转化成了概率分布的重叠
在这里插入图片描述
下图的第一个函数表示的是一个RBM的能量 , 因为是双向连接的 所以 后面的两个公式 就是从头到尾与从尾到头的计算公式
在这里插入图片描述
这个能量函数的意思就是,每个可视节点和隐藏节点之间的连接结构都有一个能量,通俗来说就是可视节点的每一组取值和隐藏节点的每一组取值都有一个能 量,如果可视节点的一组取值(也就是一个训练样本的值)为(1,0,1,0,1,0),隐藏节点的一组取值(也就是这个训练样本编码后的值)为 (1,0,1),然后分别代入上面的公式,就能得到这个连接结构之间的能量。
能量函数的意义是有一个解释的,叫做专家乘积系统(POE,product of expert),这个理论也是hinton发明的,他把每个隐藏节点看做一个“专家”,每个“专家”都能对可视节点的状态分布产生影响,可能单个“专家” 对可视节点的状态分布不够强,但是所有的“专家”的观察结果连乘起来就够强了。

KL散度

之前已经说了,我们的目的是重建得到的目标分布跟输入数据的分布曲线接近, 也就是下图中的p(x)与q(x) 下面的右图是它们差的积分, 理解起来就是每一点p(x)与q(x)的差值所组成的函数,然后对它求积分
在这里插入图片描述
KL散度测量的就是两条曲线不重叠的部分, 而我们的目的就是使得KL散度越小越好
如下图说的,学习的过程就像两个概率分布在逐步重合,也就是两个曲线越来越接近
在这里插入图片描述
对于KL散度的通俗理解可以看这篇文章, 举了太空虫子为案例,蛮有趣的
多层受限玻尔兹曼机也很好理解.就是一层一层的学习,知道神经网络的话就十分好理解
在这里插入图片描述
之前将了玻尔兹曼机的实现原来,下面更加细节的介绍一下,中间迭代的过程
在这里插入图片描述
在我们之前回归训练的时候 损失函数 loss是这样的
l o s s = 1 2 ∑ ( y ^ − y ) 2 loss = \frac{1}{2}\sum(\hat{y}-y)^2 loss=21(y^y)2
而在这里我们的损失函数是这样的 ,具体可以查看KL散度的内容,用到了信息熵的概念
l o s s = ∑ p ( x ) ∗ p ( x ) q ( x ) loss = \sum{p(x)*\frac{p(x)}{q(x)}} loss=p(x)q(x)p(x)
我们的目的就是让损失最小
在之前我们使用的方法是梯度下降法,这里的方法跟梯度下降类似,只不过因为这个方法提出的时间可能比较早,所以在梯度下降的过程中没有计算导数
公式如下如 , 我们可以看到,它是直接进行做差,然后乘一个学习率,而我们之前学到的是学习率乘损失的导数,这里就这点不太一样
在这里插入图片描述
在经过一轮轮的训练之后,我们就完成了效果,及训练完的参数可以使得重建之后的结果与输入数据的分布曲线损失最小
注: 我们现在使用的压缩软件其实内部也可以用神经网络来实现 ,比如1个G的文件压缩成500M,解压之后还是原来的内容

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Joker-Tong

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值