该系列的其他文章:

  • 常见的五种神经网络(1)-前馈神经网络
  • 常见的五种神经网络(2)-卷积神经网络
  • 常见的五种神经网络(3)-循环神经网络(上篇)
  • 常见的五种神经网络(3)-循环神经网络(中篇)
  • 常见的五种神经网络(3)-循环神经网络(下篇)
  • 常见的五种神经网络(4)-深度信念网络(上篇)
  • 常见的五种神经网络(4)-深度信念网络(下篇)
  • 常见的五种神经网络(5)-生成对抗网络

在上一篇文章中介绍了玻尔兹曼机和受限玻尔兹曼机(阅读详情),这篇文章中介绍一下深度信念网络。

深度信念网络介绍

深度信念网络(Deep Belief Netword, DBN)是一种深层的概率有向图模型,其图结构有多层的节点构成。每层节点的内部没有连接,相邻两层的节点之间为全连接。网络的最底层为可观测的变量,其他层节点都为隐变量。最顶部的两层间的连接是无向的,其他层之间的连接是有向的。下图给出了一个深度信念网络的示例。

对一个有 L L L层隐变量的深度信念网络,令 v = h ( 0 ) v=h^{(0)} v=h(0)表示最底层(第0层)为可观测变量, h ( 1 ) , . . . , h ( L ) h^{(1)}, ..., h^{(L)} h(1),...,h(L)表示其余每层的变量。顶部的两层是一个无向图,可以看作是一个受限玻尔兹曼机,用来产生 p ( h ( L − 1 ) ) p(h^{(L-1)}) p(h(L−1))的先验分布。除了最顶上两层外,每一层变量 h ( l ) h^{(l)} h(l)依赖于其上面一层 h ( l + 1 ) h^{(l+1)} h(l+1),即:
p ( h ( l ) ∣ h ( l + 1 ) , . . . , h ( L ) ) = p ( h ( l ) ∣ h ( l + 1 ) ) p(h^{(l)} | h^{(l+1)}, ..., h^{(L)}) = p(h^{(l)} | h^{(l+1)}) p(h(l)∣h(l+1),...,h(L))=p(h(l)∣h(l+1))
其中 l = { 0 , . . . , L − 2 } l=\{0,...,L-2\} l={0,...,L−2}

深度信念网络中所有变量的联合概率可以分解为:
p ( v , h ( 1 ) , . . . , h ( L ) ) = p ( v ∣ h ( 1 ) ) ( ∏ l = 1 L − 2 p ( h ( l ) ∣ h ( l + 1 ) ) ) p ( h ( L − 1 ) , h ( L ) ) = ∏ l = 0 L − 1 p ( h ( l ) ∣ h ( l + 1 ) ) p ( h ( L − 1 ) , h ( L ) ) p(v,h^{(1)},...,h^{(L)}) = p(v|h^{(1)})( \prod_{l=1}^{L-2} p(h^{(l)} | h^{(l+1)} ) )p( h^{(L-1)}, h^{(L)}) \\ = \prod_{l=0}^{L-1} p(h^{(l)} | h^{(l+1)} ) p(h^{(L-1)},h^{(L)}) p(v,h(1),...,h(L))=p(v∣h(1))(l=1∏L−2​p(h(l)∣h(l+1)))p(h(L−1),h(L))=l=0∏L−1​p(h(l)∣h(l+1))p(h(L−1),h(L))

其中 p ( h l ∣ h ( l + 1 ) ) p(h^{l} | h^{(l+1)}) p(hl∣h(l+1))为sigmoid型条件概率分布为:
p ( h ( l ) ∣ h ( l + 1 ) ) = σ ( a ( l ) + W ( l + 1 ) h ( l + 1 ) ) p(h^{(l)} | h^{(l+1)}) = \sigma (a^{(l)}+W^{(l+1)} h^{(l+1)}) p(h(l)∣h(l+1))=σ(a(l)+W(l+1)h(l+1))
其中 σ ( . ) \sigma(.) σ(.) 为按位计算的logistic sigmoid函数, a ( l ) a^{(l)} a(l)为偏置参数, W ( l + 1 ) W^{(l+1)} W(l+1)为权重参数。这样,每一个层都可以看作是一个Sigmoid信念网络。

生成模型

DBN是一个生成模型,可以用来生成符合特定分布的样本。隐变量用来描述在可观测变量之间的高阶相关性。假如训练数据服从分布 p ( v ) p(v) p(v),通过训练得到一个深度信念网络。

在生成样本时,首先在最顶两层进行足够多次的吉布斯采样,生成 h ( L − 1 ) h^{(L-1)} h(L−1),然后依次计算下一层隐变量的分布。因为在给定上一层变量取值时,下一层的变量是条件独立的,因为可以独立采样。这样我们就可以从第 L − 1 L-1 L−1层开始,自顶向下进行逐层采样,最终得到可观测层的样本。

参数学习

DBN最直接的训练方式可以通过最大似然方法使得可观测变量的边际分布 p ( v ) p(v) p(v)在训练集合上的似然达到最大。但在深度信念网络中,隐变量 h h h之间的关系十分复杂,由于“贡献度分配问题”,很难直接学习。即使对于简单的单层Sigmoid信念网络
p ( v = 1 ∣ h ) = σ ( b + w T h ) p(v=1 | h) = \sigma (b + w^Th) p(v=1∣h)=σ(b+wTh)
在已知可观察变量时,其隐变量的联合后验概率 p ( h ∣ v ) p(h|v) p(h∣v)不再相互独立,因此很难精确估计所有隐变量的后验概率。早起深度信念网络的后验概率一般通过蒙特卡洛方法或变分方法来近似估计,但是效率比较低,而导致其参数学习比较困难。

为了有效地训练深度信念网络,我们将每一层的Sigmoid信念网络转换为受限玻尔兹曼机。这样做的好处是隐变量的后验概率是相互独立的,从而可以很容易地进行采样。这样,深度信念网络可以看作是由多个受限玻尔兹曼机从上到下进行堆叠,第 l l l层受限玻尔兹曼机的隐层作为第 l + 1 l+1 l+1层受限玻尔兹曼机可观测层。进一步地,深度信念网络可以采用逐层训练的方式来快速训练,即从最底层开始,每次只训练一层,直到最后一层。

深度信念网络的训练过程可以分为预训练和精调两个阶段。先通过逐层预训练将模型的参数初始化为较优的值,再通过传统学习方法对参数进行精调。

逐层预训练
在预训练阶段,采用逐层训练的方式,将深度信念网络的训练简化为多个玻尔兹曼机的训练。下图给出了深度信念网络的逐层预训练过程。

具体的逐层训练过程为自下而上依次训练每一层的受限玻尔兹曼机。假设我们已经训练好了前 l − 1 l-1 l−1层的受限玻尔兹曼机,那么可以计算隐变量自下而上的条件概率
p ( h ( i ) ∣ h ( i − 1 ) ) = σ ( b ( i ) + W ( i ) h ( i − 1 ) ) , 1 ≤ i ≤ ( l − 1 ) p(h^{(i)} | h^{(i-1)}) = \sigma( b^{(i)} + W^{(i) h^{(i-1)}} ), 1 \leq i \leq (l-1) p(h(i)∣h(i−1))=σ(b(i)+W(i)h(i−1)),1≤i≤(l−1)
其中 b ( i ) b^{(i)} b(i)为第 i i i层受限玻尔兹曼机的偏置, W ( i ) W^{(i)} W(i)为连接权重。这样,可以按照 v = h ( 0 ) − > h ( 1 ) − > . . . − > h ( l − 1 ) v=h^{(0)} -> h^{(1)} -> ... -> h^{(l-1)} v=h(0)−>h(1)−>...−>h(l−1)的顺序生成一组 h ( l − 1 ) h^{(l-1)} h(l−1)的样本,记为 H ^ ( l − 1 ) = h ^ ( l , 1 ) , . . . , h ^ ( l , M ) \hat{H} ^{(l-1)} = {\hat{h}^{(l,1)}, ..., \hat{h}^{(l,M)} } H^(l−1)=h^(l,1),...,h^(l,M)。然后将 h ( l − 1 ) h^{(l-1)} h(l−1)和 h ( l ) h^{(l)} h(l)组成一个受限玻尔兹曼机,用 H ^ ( l − 1 ) \hat{H}^{(l-1)} H^(l−1)作为训练集充分训练第 l l l层的受限玻尔兹曼机。

下图的算法流程给出了一种深度信念网络的逐层预训练方法。大量的实践表明,逐层预训练可以产生非常好的参数初始值,从而极大的降低了模型的学习难度。

精调

经过预训练之后,再结合具体的任务(监督学习或无监督学习),通过传统的全局学习算法对网络进行精调(fin-tuning),使模型收敛到更好的局部最优点。

作为生成模型的精调,除了顶层的受限玻尔兹曼机,其他层之间的权重被分成向上的认知权重(recognition weights) W ′ W' W′和向下的生成权重(generative weights) W W W。认知权重用来进行后验概率计算,而生成权重用来进行定义模型。认知权重的初始值 W ′ ( l ) = W ( l ) T W'^{(l)}=W^{(l)T} W′(l)=W(l)T。

深度信念网络一般采用contrastive wake-sleep算法进行精调,其算法过程是:

  • Wake阶段:认知过程,通过外界输入(可观测变量)和向上认知权重,计算每一层隐变量的后验概率并采样。然后,修改下行的生成权重使得下一层的变量的后验概率最大。也就是“如果现实跟我想象的不一样,改变我的权重使得我想象的东西就是这样的”
  • Sleep阶段:生成过程,通过顶层的采样和向下的生成权重,逐层计算每一层的后验概率并采样。然后,修改向上的认知权重使得上一层变量的后验概率最大。也就是“如果梦中的景象不是我闹中的相应概念,改变我的认知权重使得这种景象在我看来就是这个概念”
  • 交替进行Wake和Sleep过程,直到收敛

作为深度神经网络的精调 深度信念网络的一个应用是作为深度神经网络的预训练部分,提供神经网络的初始权重。

在深度信念网络的最顶层再增加一层输出层,然后再使用反向传播算法对这些权重进行调优。特别是在训练数据比较少的时候,预训练的作用非常大。因为不恰当的初始化权重会显著影响最终模型的性能,而预训练获得的权重在权重空间中比随机权重更接近最优的权重,避免了反向传播算法因随机初始化权重参数而容易陷入局部最优和训练时间长的缺点。这不仅仅提升了模型的性能,也加快了调优阶段的收敛速度。

下图给出了深度信念网络作为生成模型和判断模型的精调过程。

总结

玻尔兹曼机能够学习数据的内部表示,并且其参数学习的方式和赫布型学习十分类似。没有任何约束的玻尔兹曼机因为过于复杂,难以应用在实际问题上。通过引入一定的约束(即变为二分图),受限玻尔兹曼机在特征提取、协同过滤、分类等多个任务上取得了广泛的应用。

和深度信念网络十分类似的一种深度概率模型是深度玻尔兹曼机(deep Boltzmann Machines ,DBM)。深度玻尔兹曼机是由多层的受限玻尔兹曼机堆叠而成,是真正的无向图模型,其联合概率是通过能量函数来定义。和深度信念网络相比,深度玻尔兹曼机的学习和推断要更加困难。

尽管深度信念网络作为一种深度学习模型已经很少使用,但其在深度学习发展过程中的贡献十分巨大,并且其理论基础为概率图模型,有非常好的解释性,依然是一种值得深入研究的模型。


扫一扫 关注微信公众号!号主 专注于搜索和推荐系统,尝试使用算法去更好的服务于用户,包括但不局限于机器学习,深度学习,强化学习,自然语言理解,知识图谱,还不定时分享技术,资料,思考等文章!


扫一扫 关注微信公众号!号主 专注于搜索和推荐系统,尝试使用算法去更好的服务于用户,包括但不局限于机器学习,深度学习,强化学习,自然语言理解,知识图谱,还不定时分享技术,资料,思考等文章!


常见的五种神经网络(4)-深度信念网络(下)篇之深度信念网络的原理解读、参数学习相关推荐

  1. 常见的五种神经网络(3)-循环神经网络(上)篇

    转载请注明出处:https://thinkgamer.blog.csdn.net/article/details/100600661 博主微博:http://weibo.com/234654758 G ...

  2. 常见的五种神经网络(1)-前馈神经网络

    转载请注明出处:http://blog.csdn.net/gamer_gyt 博主微博:http://weibo.com/234654758 Github:https://github.com/thi ...

  3. 网站优化基础教程:发布外链常见的五种方式!

    想要做好网站优化,外链的发布也是很重要的一环,如果您还没有做,建议您抓紧去做一下. 这篇文章发迹创业网就分享一下,常见的几种发布外链的方法. 1,锚文本 又叫做超链接,是指给关键词加一个链接,点击该关 ...

  4. Java数组去重的多种方法,[Java教程]JavaScript常见的五种数组去重的方式

    [Java教程]JavaScript常见的五种数组去重的方式 0 2016-12-14 15:00:17 ▓▓▓▓▓▓ 大致介绍 JavaScript的数组去重问题在许多面试中都会遇到,现在做个总结 ...

  5. 简析股票成交量常见的五种形态!

    简析股票成交量常见的五种形态! 一.放量,成交量比前一段时间明显放大的现象,分为相对放量和持续放量放量,上涨是一种比较好的形态. 二.缩量成交量比前一段时间明显缩减的现象.大部分投资者对市场未来走势的 ...

  6. JS 跨域问题常见的五种解决方式

    JS 跨域问题常见的五种解决方式 一.什么是跨域? 要理解跨域问题,就先理解好概念.跨域问题是由于javascript语言安全限制中的同源策略造成的. 简单来说,同源策略是指一段脚本只能读取来自同一来 ...

  7. html5 汽车广告,车身广告常见的五种制作方法

    原标题:车身广告常见的五种制作方法 车身广告能够在户外移动的展示广告信息,还能够给户外的环境添加一些惬意,让人不仅能看到车水马龙的交通,也能够欣赏到移动的广告画面.下面是对车身广告制作方法的详细介绍: ...

  8. 常见的五种HDMI接口类型,你知道多少?

    高清多媒体接口(High Definition Multimedia Interface)简称HDMI,是一种全数字化视频和声音发送接口,可以 同时发送未压缩的视频及音频信号 ,且发送时采用同一条线材 ...

  9. 外贸英文SEO推广tips 7:外贸电子商务常见的五种邮件

    外贸英文SEO推广tips7:外贸电子商务常见的五种邮件 Zencart外贸商务 Email是一种非常有效低成本与你的客户沟通和提高销售的通讯方式. 以下是五种外贸商务中主要的通讯类型: 1.订购确认 ...

最新文章

  1. 中国在5G、AI等领域对美国紧追不舍,但设备工艺依旧落后
  2. Grid平均分布自动换行
  3. android gridview滑动卡,Android RecyclerView的卡顿问题
  4. python3.6 安装opencv_MacOS的Python3.6下安装OpenCV3.2.0
  5. UESTC学位论文latex模板下载
  6. 事件模型 java_事件驱动模型的简单Java实现
  7. 吴恩达机器学习ex8:推荐系统
  8. python数值运算操作符也叫做内置操作符_Python的操作符 - osc_r1gtal48的个人空间 - OSCHINA - 中文开源技术交流社区...
  9. 魔兽世界怀旧服务器维护,魔兽世界怀旧服转服维护服务 关闭部分服务器
  10. 真实经历,说一说本人苹果ipad mini2官方799元以旧换新真实操作
  11. makefile 指定文件搜索路径和文件生成路径
  12. 区块链发展,能源领域不能盲目跟风!
  13. 提升方法(Boosting)
  14. 深入学习下 CSS filter 相关的神奇属性
  15. 分享 Python 教学视频,从基础到爬虫、网页、数据分析、机器学习.....
  16. 很好很强大的FXTZ
  17. 剑指offer 专项突破版 78、合并排序链表
  18. 华为eNSP配置WLAN
  19. C语言 一元二次方程
  20. 尚硅谷李立超JavaScript笔记

热门文章

  1. win10修改中文用户名
  2. 数控机床是什么编程php吗,数控车床编程实例
  3. 企业号、企业微信、企业邮箱三者融合,IBOS微信生态掘金之路
  4. 【渝粤题库】广东开放大学 高级商务办公软件应用 形成性考核
  5. mysql5.7源码安装 简书_在CentOS7上编译安装MySQL 5.7.13步骤详解
  6. 阿里云ACP普尔文考试注意事项
  7. 自己搭建的k8s集群,怎么做负载均衡?
  8. Linux命令简写和全称
  9. jupyter notebook(python)使用pycharts库实现动态地图展示
  10. 订单薄与发现冰山订单