玻尔兹曼机的学习算法--Hinton论文系列《A learning algorithm for Boltzmann machines》
2021/9/20 17:32:45
本文主要是介绍玻尔兹曼机的学习算法--Hinton论文系列《A learning algorithm for Boltzmann machines》,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
1 简介
本文根据1985年Hinton等人写的《A learning algorithm for Boltzmann machines》翻译总结的。即玻尔兹曼机的学习算法。
连接主义认为长期的知识是简单神经单元的连接。关于大脑结构的证据和新的大规模集成电路的潜力促进了连接主义的复兴。
本文描述了一个并行约束满足网络,我们称作为玻尔兹曼机(Boltzmann machines)。它有能力学习潜在的约束,即通过域内样本学习到该域内特征。该网络修改连接的权重以构建一个内部生成模型,可以生成与样本相同概率分布的样例。
2 玻尔兹曼机(Boltzmann machines)
波尔兹曼机是并行计算架构,很符合约束满足任务,这种任务包含大量的弱连接。在一些如游戏的问题领域,得分标准经常采用强约束。在一些其他问题领域,如寻找一张图片的最合理的解释,许多评价标准不是全有或全无的,甚至一些最好的解决方案会违反一些约束,这种任务就适合用弱约束。一个解决方案的质量是由违反的弱约束的整个成本来决定的,如在感知解释任务中,整个成本应该反映解释的不正确。
波尔兹曼机是由原始的计算单元(unit)构成,它们之间彼此互相双向连接。一个单元总是在一个状态,开启或者关闭,这些状态是邻近单元的状态和其连接上权重的概率函数。一个单元的开启或者关闭表示系统当前接受或者拒绝一些元素的假设。连接上的权重表示两个假设之间一个弱的成对约束。一个正权重表示两个假设倾向于互相支持,如果一个是被接受的,那么另一个很可能也会被接受。相反的,一个负权重在其他条件相同的情况下表示两个假设不应该被接受。连接的权重是对称的,在两个方向上有相同的大小。
这种结构和Hopfield(1982)描述的系统相关,在他的系统里,网络的每一个全局状态可以被指定为一个单独的数字,叫做状态的能量(energy)。在正确的假设下,各个单元(unit)可以最小化全局能量。如果一些单元是被外力设定到特殊的状态,来表达一个特殊的输入,整个系统就会发现最小的能量结构,其兼容于那个输入。一个结构的能量可以解释为违反约束的假设的组合,所以在最小化能量时,系统逐渐演化为那个输入的解释,越来越多地满足约束。
整个结构的能量定义如下:
2.1 最小化能量
Energy gap:整个系统第k个假定被拒绝的能量和第k个假定被接受的能量的差异是由第k个单元决定的,公式如下:
2.2 使用噪声以偏离局部最小值
梯度下降方法有一个缺点是:容易陷入局部最小值,而这不是全局最优。
公式5的决策规则是和由两个能量状态的粒子相同的。这些粒子构成的系统当在某个温度的热浴时最终会达到热量均衡,找到该系统在任一全局状态的概率服从玻尔兹曼分布。所以,服从如此决策规则的单元构成的网络最终将达到热量均衡,两个全局状态的相关概率服从玻尔兹曼分布,如下:
玻尔兹曼分布由非常好的数据特性,它与信息理论密切相关。特别地,两个全局状态的log 概率的微分在温度1下刚好等于它们能量的微分。
在低温度下,有一个强的偏置,其有利于低能量的状态,但达到均衡的时间就会很长。在高的温度下,偏置不是有利的,均衡可以很快达到。
3 学习算法
网络的学习算法很长一段时间都没找到,甚至许多人都不相信存在此种算法。主要难点是:一个网络必须包含非线性单元,这些非线性单元不是直接受输入的约束;当如此的网络运行错误时,它好像没有能力决定这许多连接权重的哪一个是错误的。这种“信用分配”问题就导致感知的消亡。
这种“信用分配”的问题可以在玻尔兹曼机内解决。通过使用正确的随机决策规则和运行网络直到在某个有限温度下达到“热量均衡”,我们完成额一个数学上简单的关系,全局状态和能量的概率关系。对于一个没有任何输入的网络,其关系是上面的公式6.因为能量是权重的线性函数(公式1),这就产生了一个相当简单的关系,全局状态的log概率和单独连接权重的关系,详见下式:
通过上面的公式,我们就有可能操纵全局状态的log概率。
3.1 对环境的潜在结构进行建模
玻尔兹曼机的单元分成两部分:可见单元的非空集合和隐藏单元的可能非空集合。可见单元是网络与环境间的接口,当训练时,所有的可见单元会被环境固定到特定的状态。隐藏单元不是被环境设定的,可以用来解释输入向量集合的潜在约束(这些不能通过可见单元间成对约束所表示的)。
网络内部模型和环境之间的差异的信息理论衡量公式如下:
在对G进行梯度下降时,需要知道G的对每一个权重的偏导数。在大多数交叉耦合的非线性网络中,是非常困难获得偏导数。但因为热量均衡中简单的关系,G的偏导数可以直接获得。全局状态的概率由能量决定(公式6),能量由权重决定(公式1)。使用这些公式可以获得G的偏导数如下:
这个权重的改变仅依赖于两个连接单元的行为,即使改变是用来优化全局的,每一个权重的最佳值依赖于所有其他权重的值。
一旦G已经最小化,网络将尽可能捕捉环境的规则。从另一个角度看,最小化G是寻找权重的集合,其最有可能生成环境向量的集合。最大化这个可能性数学上等价于最小化G。
3.2 控制学习
有可能输入不能覆盖所有场景,比如现实中0概率发生的事情,玻尔兹曼机只有赋予这种情况无限高能量,其需要无限大权重。为了避免这种情况,我们引入了噪声输入向量,比如改变输入向量中的一些位(bit)。这样相当于增加了输入向量的数量。
4 Encoder 问题
下图是一个4-2-4 Encoder,即v=4,h=2.
这篇关于玻尔兹曼机的学习算法--Hinton论文系列《A learning algorithm for Boltzmann machines》的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-20go-zero 框架的 RPC 服务 启动start和停止 底层是怎么实现的?-icode9专业技术文章分享
- 2024-12-19Go-Zero 框架的 RPC 服务启动和停止的基本机制和过程是怎么实现的?-icode9专业技术文章分享
- 2024-12-18怎么在golang中使用gRPC测试mock数据?-icode9专业技术文章分享
- 2024-12-15掌握PageRank算法核心!你离Google优化高手只差一步!
- 2024-12-15GORM 中的标签 gorm:"index"是什么?-icode9专业技术文章分享
- 2024-12-11怎么在 Go 语言中获取 Open vSwitch (OVS) 的桥接信息(Bridge)?-icode9专业技术文章分享
- 2024-12-11怎么用Go 语言的库来与 Open vSwitch 进行交互?-icode9专业技术文章分享
- 2024-12-11怎么在 go-zero 项目中发送阿里云短信?-icode9专业技术文章分享
- 2024-12-11怎么使用阿里云 Go SDK (alibaba-cloud-sdk-go) 发送短信?-icode9专业技术文章分享
- 2024-12-10搭建个人博客网站之一、使用hugo创建个人博客网站