<cite id="fzn17"></cite>
<var id="fzn17"></var><cite id="fzn17"><video id="fzn17"></video></cite>
<cite id="fzn17"></cite>
<var id="fzn17"></var>
<menuitem id="fzn17"><span id="fzn17"><thead id="fzn17"></thead></span></menuitem>
<cite id="fzn17"><span id="fzn17"><var id="fzn17"></var></span></cite><var id="fzn17"><span id="fzn17"><var id="fzn17"></var></span></var>
<var id="fzn17"></var>
<menuitem id="fzn17"></menuitem>
<cite id="fzn17"><video id="fzn17"></video></cite>
|
|
51CTO旗下网站
|
|
移动端

3.3.2 受限玻耳兹曼机

《深度学习基础教程》第3章神经网络入门,本章将重点介绍神经网络的基础知识,包括输入/ 输出层、隐藏层以及网络如何通过前向和反向传播学习。本节为大家介绍受限玻耳兹曼机。

作者:杨伟 译来源:机械工业出版社|2018-12-12 10:52

3.3.2 受限玻耳兹曼机

RBM 是一个只有两层的神经网络:可见层和隐藏层。可见层中的每个节点/ 神经元都与隐藏层中的每个节点有连接。“受限”意味着没有层内通信,也就是说,可见层中的可见节点之间和隐藏层中的隐藏节点之间都没有连接。RBM 是人工智能领域最早引入的模型之一,已成功应用于降维、分类、特征学习和异常检测等许多领域。

图3-6 展示了RBM 的基本结构。

用数学形式表示RBM 相对比较容易,因为只有几个参数:

权值矩阵W(nv×nh) 描述了可见节点和隐藏节点之间的连接强度。每个矩阵元素Wij都是可见节点i 和隐藏节点j 之间的连接权重。

a(1×nv) 和b(1×nh) 分别为可见层和隐藏层的两个偏置向量,元素ai 对应于第i 个可见节点的偏置值。同样,向量b 对应于隐含层的偏置值,其中元素bj 对应于隐含层的第j 个节点。

与普通神经网络相比,RBM 有一些明显的差异:

RBM 是一种生成随机神经网络。通过调整参数,RBM 可以学习输入集合上的概率分
布。

RBM 是一种基于能量的模型。能量函数产生一个基本上对应于某种配置的标量值,用于表示模型处于?#38376;?#32622;的概率。

RBM 以二进制模式进行编码输出,而不是输出概率。

神经网络通常通过梯度下?#36947;?#36827;行权值更新,但RBM 使用对比散度(ContrastiveDivergence,CD)。下面的章节将会详细讨论对比散度。

1. 能量函数

RBM 是一种基于能量的模型。能量函数产生一个标量值,表示模型处于某种配置的概率。

在Geoffrey Hinton 的教程(Geoffrey Hinton,A Practical Guide to Training Restricted BoltzmannMachines,2010)中,能量函数具有下面的形式:

计算很简单。基本上,可以在偏置和相应单位( 可见或隐藏) 之间做点积来计算它们对能量函数的贡献。第三项是可见节点和隐藏节点之间连接的能量表示。

在模型学习阶段,这种能量被最小化,即模型参数(W、av 和bh)按照较小能量配置的方向被更新。

2. 编码与解码

RBM 的训练可以分为两步:前向编码(构造)和反向解码(重构)。在非监督设置中,我们?#19981;?#35757;练网络来建模输入数据的分布,前向传递和反向传递的具体步骤如下所述。在前向传递中,来自数据的原始输入值(例如,图像的像素值)由可见节点表示。然后,将它们与权重Wij 相乘,并与隐偏置值相加(注意,前向传递不使用可见偏置值)。结果值送入激活函数以获得最终输出。如果后面仍有层连接,则此激活结果将用作前向传递的输入。

图3-7 给出了RBM 的前向传递示例。

在我们简单的RBM 示例中,只有一个隐藏层和一个可见层,在反向传递中隐藏层的激活值变成输入。它们乘以权值矩阵,然后通过加权边反向传入到可见节点。在每个可见节点上,所有传入的值进行累加并与可见偏置值求和(注意,反向传递不使用隐偏置值)。图3-8给出了RBM 的反向传递示例。

由于RBM 的权值在开始时是随机的,因此在前几轮中,由重构值和?#23548;?#25968;据?#23548;?#31639;的重构误差可能很大。因此,通常需要一些迭代来最小化这些误差,直到达到最小的误差为止。前向传递和反向传递帮助模型学习数据输入x 和激活结果( 作为隐藏层的输出) 的联合概率分布p(x,a)。这就是RBM 被认为是生成学习算法的原因。

现在的问题是如何更新网络参数。

首先,使用KL 散度计算误差。为了进一步了解KL 散度,读者可以参考David MacKay撰写的图书《Information Theory,Inference,and Learning Algorithms》的第34 页(http://www.inference.org.uk/itprnn/book.pdf)。基本上,通过计算两个分布之间的差的积分来计算两个分布的差异。最小化KL 散度意味着使学到的模型分布(以隐藏层输出的激活值形式)趋近于输入数据分布。许多深度学习算法,采用梯度下降法(如随机梯度下降法)更新参数。然而,RBM 采用一种称为对比散度的近似***似然学习方法进行参数更新。

3. 对比散度(CD-k)

对比散度可以看作是一种近似的***似然学习算法。它计算正相位( ***次编码的能量) 和负相位( ***一次编码的能量) 之间的散度或差。这相当于最小化模型分布和( 经验)数据分布之间的KL 散度。变量k 是运行对比散度的次数。在?#23548;?#20013;,k=1 貌似已经运?#26800;?#38750;常好。

基本上,梯度是利用正相位关联梯度和负相位关联梯度两个部分之间的差来进行近似的。正项和?#21512;?#24182;不反映该梯度项的符号,而是反映了?#20113;?#23398;到的模型概率分布的影响。正关联梯度增?#21451;?#32451;数据的概率( 通过减少相应的自由能),而负关联梯度减小模型生成样本的概率。下面给出了对应的TensorFlow 伪代码片段:

  1. # 定义Gibbs 采样函数  
  2. def sample_prob(probs):  
  3. return tf.nn.relu(tf.sign(probs -tf.random_uniform(tf.shape(probs))))  
  4. hidden_probs_0 = sample_prob(tf.nn.sigmoid(tf.matmul(X,W) + hidden_bias))  
  5. visible_probs = sample_prob(tf.nn.sigmoid(tf.matmul(hidden_0,  
  6. tf.transpose(W)) + visible_bias))  
  7. hidden_probs_1 = tf.nn.sigmoid(tf.matmul(visible_probs, W) + hidden_bias)  
  8. # 正关联梯度增?#21451;?#32451;数据的概率  
  9. w_positive_grad = tf.matmul(tf.transpose(X),hidden_probs_0)  
  10. # 减小模型生成样本的概率  
  11. w_negative_grad = tf.matmul(tf.transpose(visible_probs), hidden_probs_1)  
  12. WW = W + alpha * (w_positive_grad -w_negative_grad)  
  13. vbvb = vb + alpha * tf.reduce_mean(X - visible_probs, 0)  
  14. hbhb = hb + alpha * tf.reduce_mean(hidden_probs_0 - hidden_probs_1, 0) 

在上面的代码片段中,X 是输入数据。例如,MNIST 图像有784 个像素,所以输入X 是一个784 个元素的向量,相应地可见层有784 个节点。还需注意的是,在RBM 中输入数据被编码成二进制。对于MNIST 数据,可以使用one-hot 编码来转换输入像素值。另外,alpha 是学习率,vb 是可见层的偏置,hb 是隐藏层的偏置,W 是权值矩阵。采样函数sample_prob 是Gibbs 采样函数,其决定打开哪个节点。

4. ?#35757;? 连续RBM

深度置信网络(Deep-Belief Network,DBN)就是一些?#35757;?#22312;一起的RBM。前一个RBM的输出成为其后面RBM 的输入。2006 年,Hinton 在他的论文《A fast learning algorithm fordeep belief nets?#20998;?#25552;出了一种可以逐层地学习深度有向置信网络的快速、贪婪算法。DBN 学习输入的层次表示,并以重构数据为目标,因此DBN 是非常有用的,尤其在无监督的环境中。

对于连续输入,可以参考另一种称为连续RBM 的模型,其使用了不同类型的对比散度采样。该模型可以处理在0~1 之间归一化的图像像素或词向量。

5. RBM 与玻耳兹曼机的比较

玻耳兹曼机(BM)可以看作是对数线?#26376;?#23572;可夫随机场的一种特殊形式,其能量函数在其自由参数上是线性的。为了增加它们对复杂分布的表示能力,可以考虑增加从未观察到的变量(即隐变量或者隐藏神经元)的数量。RBM 建立在BM 之上,其中的“受限”在于强制没有可见到可见以及隐藏到隐藏之间的连接。


?#19981;?#30340;朋友可以添加我们的微信账号:

51CTO读书频道二维码


51CTO读书会第9群:808517103

【责任编辑:book TEL:(010)68476606】

回书目   上一节   下一节
点赞 0
分享:
大家都在看
猜你?#19981;?/dt>

订阅专栏+更多

16招轻松掌握PPT技巧

16招轻松掌握PPT技巧

GET职场?#26377;?#25216;能
共16章 | 晒书包

289人订阅学习

20个局域网建设改造案例

20个局域网建设改造案例

网络搭建技巧
共20章 | 捷哥CCIE

645人订阅学习

WOT2019全球人工智能技术峰会

WOT2019全球人工智能技术峰会

通用技术、应用领域、企业赋能三大章节,13大技术专场,60+国内外一线人工智能精英大咖站台,分享人工智能的?#25945;?#24037;具、算法模型、语音视觉等技术主题,助力人工智能落地。
共50章 | WOT峰会

0人订阅学习

读 书 +更多

超级网管员——网络服务

本书全面介绍了Windows Server 2003 R2中最常用的各种服务,包括域名服务、动态IP地址服务、Windows名称服务、活动目录服务、Web服务、FTP...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊

51CTO服务号

51CTO播客

澳洲幸运5官方
<cite id="fzn17"></cite>
<var id="fzn17"></var><cite id="fzn17"><video id="fzn17"></video></cite>
<cite id="fzn17"></cite>
<var id="fzn17"></var>
<menuitem id="fzn17"><span id="fzn17"><thead id="fzn17"></thead></span></menuitem>
<cite id="fzn17"><span id="fzn17"><var id="fzn17"></var></span></cite><var id="fzn17"><span id="fzn17"><var id="fzn17"></var></span></var>
<var id="fzn17"></var>
<menuitem id="fzn17"></menuitem>
<cite id="fzn17"><video id="fzn17"></video></cite>
<cite id="fzn17"></cite>
<var id="fzn17"></var><cite id="fzn17"><video id="fzn17"></video></cite>
<cite id="fzn17"></cite>
<var id="fzn17"></var>
<menuitem id="fzn17"><span id="fzn17"><thead id="fzn17"></thead></span></menuitem>
<cite id="fzn17"><span id="fzn17"><var id="fzn17"></var></span></cite><var id="fzn17"><span id="fzn17"><var id="fzn17"></var></span></var>
<var id="fzn17"></var>
<menuitem id="fzn17"></menuitem>
<cite id="fzn17"><video id="fzn17"></video></cite>
网上的通比牛牛老是输 天津时时开奖结果查询 宝赢彩票软件 时时人工免费计划 王者荣耀妲己去比基尼图 五分赛app 篮球彩票加时赛大小分 乒乓球围栏 大发网上棋牌游戏 广东南粤通