On the origin of deep learning深度学习的起源:第四章 The Network as Memory and DBN (Deep Belief Nets) 文章梳理+个人理解

论文的其他章节解读可以通过目录找到:On the origin of deep learning 文章解读系列目录表

目录

4.1 自组织映射(Self Organizing Map)

4.2 Hopfield Network

4.2.1 Spin Glass

4.2.2 Hopfield Network

4.2.3 学习和推理过程

4.2.4 Capacity能力评估

4.3 玻尔兹曼机

4.3.1 玻尔兹曼分布

4.3.2 玻尔兹曼机(BM)

4.4 受限玻尔兹曼机(RBM)

4.5 DBN 深度置信网络

 4.5.1 DBN的参数学习

一种微调策略是:生成式模型的微调

另一种微调策略是:判别式模型的微调

4.6 深度玻尔兹曼机(DBM)


这部分主要介绍的6个模型都包括在下图中,可以直观地看出各个模型提出的时间以及他们计算复杂度和表达能力的关系。想要了解他们之间的大致区别可以直接看本文红字部分,红字部分主要是说明模型之间的主要区别。

4.1 自组织映射(Self Organizing Map)

自组织映射主要是为了降低数据的维度,通常可以降到1-2维。与此同时,他还能保留数据点之间的拓扑相似性。该方法常常被看作是一种能够将拓扑结构应用于聚类表示的cluster(聚类)工具

这里的自组织就是  在没有 为输入模式提供相应的依赖输出值的情况下  学习和组织信息的能力。它并非基于损失函数不断更新参数的神经网络,而是直接对每一个神经元进行操作。简单来讲:就是依据数据的分布,计算当前神经元与数据之间的距离,不断拉近这个距离,从而让最终神经元的分布与数据之间分布类似。

SOM网络的运作方式:

  1. 初始化网络分布
  2. SOM节点在数据空间任意定位,选择距离训练数据样本最近的节点(黄色高亮)作为最佳匹配单元(BMU Best Matching Unit)。
  3. 所选的节点向基准进行移动,他们的邻居也跟移动
  4. 经过多次迭代后,网格趋近于真实的数据分布。

完成过SOM的相关代码可以在minisom/minisom.py at master · JustGlowing/minisom (github.com) 这个代码的基础上实现,其中在minison.py中,类MiniSom中介绍了如何使用使用这个其中的函数等方法。

som的网格大小是:5根号(数据量)。如一个数据集有150个样本,那么som的map最好是88=64的。(5*根号(150)约等于61,23)

但是这个算法依赖于邻居半径的选择,良好的权重初始化。否则学习到的权重只具有局部的拓扑相似性,而不是全局上。

4.2 Hopfield Network

在历史上Hopfield网络被描述为循环神经网络一种形式。这里的循环指的是:神经元的权重是双向的。由于其的记忆特性而被大家广泛认可,这种记忆特性是对spin glass theory的模拟

4.2.1 Spin Glass

首先了解一下什么是spin glass theory:这个是用于描述磁现象的物理术语。

当一组偶极子被放置在任意空间中。每个偶极子被迫与这些偶极子在其所在位置产生的场对齐。然而,通过对齐自身,改变其他位置的场,导致其他偶极子翻转,引起原位置的场发生变化。最终,这些变化会收敛到一个稳定的状态。

原文这里使用公式进行讲解。由于对物理知识了解不够,这里不做解读。

4.2.2 Hopfield Network

Hopfield 网络是一种具有二值阈值神经元单元的全连接神经网络。神经元不是0就是1.这些神经元使用双向权重来fully connected。

则Hopfield Network的能量函数可以被定义为如下形式,可以发现它与上述的公式(4)有很大的联系

该网络常用于记忆数据的状态,权重是通过设计或者学习得到的,从而让公式中的能量最小化。

因此,当另一个状态呈现给网络时,在权值固定的情况下,Hopfield网络可以搜索到使能量最小的状态,并在记忆中恢复该状态。

例如,在一个人脸补全任务中,当一些人脸图像被呈现给Hopfield网络(以网络的每个单元对应一幅图像的每个像素的方式,将图像依次呈现)时,网络可以计算权重来最小化给定这些人脸的能量。之后,如果一幅图像被损坏或扭曲并再次呈现给该网络,该网络可以通过搜索一个状态配置来恢复原始图像,以最小化从损坏的能量。

更清晰移动的解释是:Hopfiled网络可以记忆一个钟摆的平衡位置(也就是最低点的位置)。因为在平衡位置,摆具有最低的重力势能。因此,无论何时摆放摆锤,摆锤都会收敛回平衡位置。

4.2.3 学习和推理过程

网络权重的计算公式为如下所示,可以通过4.2.2中的公式(5)得到。

之后作者在这里强调了学习和推理的专业描述,将模型(无论是从闭式解,还是数值解)的权重计算称为"参数学习"或"训练"。将已知权重的现有模型应用于解决真实世界问题的过程称为"推理"或“测试”

Hopfield网络的推理过程是:如果把一个神经元的状态转变为另一个(即本来是1,转换为0或者本来是0转换为1)看在这个过程中能量是否会减少。如果减少了,网络就会把这个状态反转,在对下一个神经元进行测试。这个过程成为异步更新。当网络首先对所有单元进行测试,然后同时将所有单元转换时,称为同步更新。这两种方法都可能导致局部最优,同步更新甚至可能会导致能量增加。且收敛到一个oscilation(振荡)或loop of states。

4.2.4 Capacity能力评估

这个网络的明显缺点是:它对内存的使用是低效的。具体解释可以看原文,

在这个网络发明之后,很多研究工作都对Hopfield 网络进行改进等,但是Hopfield网络仍然逐渐淡出了社会。取而代之的是受其启发的其他模型。如玻尔兹曼机和受限玻尔兹曼机等,接下来将研究这些模型是如何从Hopfield网络的初始思想中升级并演变来取代它的。

 用原文的图片可以将Hopfield网络表示为如下的形式。神经元之间的权重是双向的。它是一个由六个二值阈值神经单元组成的全连接网络。每个单元都与数据相连,因此将这些单元记为无遮挡节点。

4.3 玻尔兹曼机

玻尔兹曼机是一种隐单元随机Hopfield网络。它得名于玻尔兹曼分布。首先我们看一下什么是玻尔兹曼分布。

4.3.1 玻尔兹曼分布

它最初用于描述系统中粒子在各种可能状态下的概率分布:

r是玻尔兹曼因子。

根据能量指定分布,概率被定义为每个状态的项除以一个正规化器

p_{s_{i}} = \frac{e^{-\frac{E_{si}}{kT}}}{\sum_{j}^{} e^{-\frac{E_{sj}}{kT}}}
 

4.3.2 玻尔兹曼机(BM)

玻尔兹曼机实际上是在hopfield 网络的基础上引入了隐藏单元的思想。在玻尔兹曼机中,只有可见单元与数据相连,而隐藏单元用于辅助可见单元描述数据的分布。因此,该模型在概念上分为可见部分和隐藏部分,但在这些单元之间仍然保持全连接网络

其次玻尔兹曼机还引入了随机性来让网络跳出局部最优或震荡的状态:不考虑当前能量的状态转移方法。由于原文公式较多,这里可以借助这篇博客进行理解。

博主这里只是为了大致理解,所以没有具体看公式推导。想看公式推导的可以在原文中查看。深度学习神经网络里程碑2——玻尔兹曼机 - 知乎 (zhihu.com) 这是为了大概了解找的一个通俗化解释。

玻尔兹曼机是用于解决二分类任务的。每个单元包含一个输入向量和一个输出向量,这些向量可以是二进制的或者是实数的。

玻尔兹曼机的训练过程通过最大化输入向量和输出向量之间的相关性来优化参数,从而实现模型的学习。

玻尔兹曼机的训练过程可以分为两个主要步骤: 1. 正向传播:输入向量通过布尔单元的激活函数得到输出向量。 2. 反向传播:输出向量通过布尔单元的激活函数得到输入向量。 这两个步骤相互交替进行,直到收敛。

它的主要优点是可以自我学习,并且可以在数据集较大的情况下使用。但是,玻尔兹曼机的计算复杂度较高,并且它的收敛速度较慢,因此在实践中并不常用

用原文的图片可以将玻尔兹曼机表示为如下的形式:其中蓝色的是隐藏层的节点,空白的是可见层的节点,相互之间都有连接。

4.4 受限玻尔兹曼机(RBM)

受限玻尔兹曼机(restricted Boltzmann machine,RBM)是玻尔兹曼机的一个变体。与玻尔兹曼机相比,受限玻尔兹曼机的结构更加简单,因为它没有循环边这意味着受限玻尔兹曼机的可见单元之间或隐藏单元之间没有任何联系

RBM 是一个双层神经网络,第一层称为可见层,第二层称为隐藏层。 可见层中的每个节点都连接到隐藏层中的节点层。 RBM 被认为是受限制的,因为同一层中的两个节点都没有连接。

用原文的图片如下表示,其中蓝色的是隐藏层的节点,空白的是可见层的节点,蓝色和蓝色之间没有连接。白色和白色之间也没有连接。

凭借合理的建模能力和快速的近似算法,RBM迅速引起了极大的关注,并成为深度神经网络最基本的构建模块之一。在接下来的两节中,将介绍两种基于RBM / Boltzmann机构建的深度神经网络,即深度置信网络和深度玻尔兹曼机

但是现在不怎么使用这个网络是因为大家发现其实这个架构是没什么用的,hinton在论文中也提到过。

4.5 DBN 深度置信网络

深度置信网络( Deep Belief Networks )是由Hinton等( 2006 )提出的,他证明了RBMs可以以贪婪的方式进行堆叠和训练。

类似的,文章也使用和玻尔兹曼机等类似的图的形式对DBN网络进行可视化。与RBN不同的是,DBN只允许上层的双向连接( RBM类型的连接),而接下来的底层只具有自顶向下的连接。底层(除顶层那一层外)没有双向连接,只有自上而下的连接。

将DBN看作是专门用于生成数据模式的具有扩展层的单层RBM可能更合适。该模型只需要对最顶层的热平衡进行采样,然后自上而下地传递可见态来生成数据。

 4.5.1 DBN的参数学习

参数学习分为2步:1. 逐层预训练。2. 微调(原来早在2006年就有了预训练+微调的范式

逐层预训练:深度置信网络的成功很大程度上得益于逐层预训练的引入。这个想法很简单,但它成功的原因仍然吸引着研究人员。预训练简单来说就是先对网络组件进行自底向上的训练:把前两层看作一个RBM进行训练,然后把第二层和第三层看作另一个RBM进行参数训练。这一想法为后来的微调过程的成功提供了关键的支持。

除了深度置信网络,这种预训练机制还启发了许多其他经典模型的预训练,包括自编码器、深度玻尔兹曼机等。在进行预训练后,进行微调,进一步优化网络,以搜索最小值的参数。对于深度置信网络,根据网络的目标,有两种不同的微调策略。

一种微调策略是:生成式模型的微调

利用对比版本的wake-sleep算法实现的。

科学家们发现,睡眠是大脑功能的一个关键过程,它似乎是我们在清醒时如何学习的一个逆版本。唤醒-休眠算法也有两个步骤。在尾流阶段,我们自底向上传播信息,以调整自顶向下的权重,以重建下面的层。睡眠阶段是觉醒阶段的逆时针。我们将信息自上而下传播,以调整自下而上的权重来重建上面的层。

对比版本的wake sleep算法时在唤醒阶段和睡眠阶段之间增加了一个对比发散阶段。 尾流阶段只上升到顶部RBM的可见层,然后对顶部RBM进行对比度散度采样,然后从顶部RBM的可见层开始进入睡眠阶段。

另一种微调策略是:判别式模型的微调

因为这里有有数据的标签,可以简单地将标准反向传播应用于预训练模型,尽管反向传播的性能普遍较好,但预训练仍然是必要的。

4.6 深度玻尔兹曼机(DBM)

下图展示了一个三层的深度玻尔兹曼机( DBM )。上一部分提到的DBM与DBN的区别在于DBM允许底层双向连接。因此,DBM比DBN更好地表示了将RBM堆叠在一起的思想,如果将DBM命名为深度受限玻尔兹曼机( Deep Restricted Boltzmann Machine )可能会更加清晰。

 正如它们的首字母缩略词所示,深度玻尔兹曼机和深度信念网络有许多相似之处,特别是从第一眼就可以看出。两者都是深度神经网络,源于受限玻尔兹曼机的思想。(命名为"深度信念网络" )这两种方法也都依赖逐层预训练来确保参数学习的成功。然而,这两个模型之间的根本差异是显著的,这是由底层(无向/双向v . s .有向)之间的连接方式引起的。DBM的双向结构赋予了DBM学习更复杂的数据模式的可能性。它还允许近似推理过程除了初始的自下而上的传递之外,还包含自上而下的反馈,从而使深度玻尔兹曼机能够更好地传播关于模糊输入的不确定性

4.7 深层生成模型:现状及未来发展

Lake等人( 2015 )提出了一个贝叶斯程序学习框架,该框架可以用大规模的视觉概念模拟人类的学习能力。除了在一次性学习分类任务上的表现外,他们的模型在从世界字母表生成手写字符方面通过了视觉图灵测试。换句话说,他们的模型的生成性表现与人类的行为是无法区分的。由于它们本身并不是一个深度神经网络模型,所以它们的模型性能优于几个并行的深度神经网络。生成式模型的另一个贡献是生成式对抗网络GAN。

部分内容跟也包含博主的个人见解,以及一些不理解的地方,欢迎交流及指正错误。

参考资料:受限玻尔兹曼机 (RBM) - 知乎 (zhihu.com)

2021-03-27 深度信念网络(DBN)学习笔记_深度置信网络 rbm逐层训练-CSDN博客 (这个里面更好地对比了

  • 42
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值