Auto Byte

专注未来出行及智能汽车科技

微信扫一扫获取更多资讯

Science AI

关注人工智能与其他前沿技术、基础学科的交叉研究与融合发展

微信扫一扫获取更多资讯

玻尔兹曼机器

Helmholtz机是一种人工神经网络,可以通过训练创建原始数据集的生成模型来解释一组数据的隐藏结构。 其目的是通过学习数据的经济表达,生成模型的底层结构应合理地近似数据集的隐藏结构。 Helmholtz机包含两个网络,一个自下而上的识别网络,将数据作为输入并产生隐藏变量的分布;一个自顶向下的“生成”网络,可生成隐藏变量和数据本身的值。

来源:Wikipedia
简介

简要介绍.Helmholtz machine属于无监督学习。它主要包括两个部分:recognition model 和generative model。这两个部分类似于神经网络。recognition model 是从输入层到隐藏层的传播(自下而上传播),这个部分主要是用于识别输入数据,使得输入数据可以被隐藏层更好的表示,generative model 是从隐藏层到输入层的传播(自上而下传播),这个部分是用于生成输入数据。其目的就是构造一个网络,从而很好的表述输入数据的特征。

准备工作

针对generative model。我们假设每一层的神经元在给定其上层的神经元之后是条件独立的。如下式所述

发现一组模式固有的结构是统计推断或学习的基本目标。一种卓有成效的方法是建立一个独立的参数化的随机生成模型(generative models),可以生成模式。除了最简单的生成模型之外,每个模式都可以以指数级的方式生成。因此,调整参数以最大化观测模式的概率是很困难的,Peter Dayan, Geoffrey E Hinton等人描述了一种最大化观测概率的下界来实现来适应这样的增长。该方法可以被看作是一种分级自监督学习的形式,它可能与自底向上和自顶向下的方法相结合。

在Helmholtz之后,我们把人类的知觉系统看作是一个统计推理机,它的功能是推断导致一些输入的可能的原因。我们证明,这种设备可以学习如何执行推理,并且不需要给每个输入向量贴上一些潜在原因的标签。recognition model(识别模型)是根据感官输入推断潜在原因的概率分布,而separate generative model (生成模型)是训练识别模型的(Zemel, 1994; Hinton & Zemel, 1994; Zemel & Hinton, 1994)。

Recognition model

根据模型中的参数θ,生成一个特定的样本d的log概率如下所示。表示输入层d和所有隐藏层神经元α在generative model中联合密度函数,θ就是层与层之间的权重,αi表示第i层的神经元,α0=d.我们的目的就是最大化d的边际似然函数(或者是对数似然函数),也就是下式

\lg p(d|\theta)= \lg ( \sum_{\alpha }p(\alpha |\theta )p(d|\alpha ,\theta ) )

这里α是explanations(解释),如果我们将一个例子的explanations视为物理系统中的配置,这是与统计物理学进行了精确的类比。我们定义explanations,α的energy为:(然后,我们从物理学角度来思考,假设在给定输入层d之后,α表示系统中的不同状态,这个状态的能量表示为如下形式:)

E_\alpha (\theta ,d)=- \lg p(\alpha |\theta )p(d|\alpha,\theta )

同时处于状态α的后验概率分布可以表示成Boltzmann分布,即处于状态α的概率为(3) 。在给定d和θ的α的先验概率是与它的能量相关的,也可以说它符合Boltzmann distribution分布(这里的温度为1):

P_\alpha (\theta ,d)= \frac{p(\alpha |\theta )p(d|\alpha ,\theta )}{ \sum\nolimits_{\alpha }p(\alpha '|\theta )p(d|\alpha ',\theta) }

为了简化,d和θ的索引被忽略,根据the Helmholtz free energy原理,使用Pα, Eα等式来重写,这也是α的期望能量和α的概率分布的熵之差:

\lg p(d|\theta )=- [\sum\nolimits_{\alpha }P_\alpha E_\alpha -(- \sum\nolimits_{\alpha }P_\alpha \lg P_\alpha) ]

现在,我们需要计算后验分布P下的期望,一般来说,P有指数级的项,不能被分解成简单分布的乘积。然而,我们知道(汤Thompson, 1988),任何α概率分布将至少能满足Boltzmann distribution方程(3)。因此我们可以限制一些类的分布和仍然有下界的log数据的概率。这里,没有使用真正的后验概率分布P来对α进行平均,而是使用更方便的概率分布Q。因此,数据的log概率的公式为:

\lg p(d|\theta )=-F(d;\theta ,Q)+ \sum\nolimits_{\alpha } Q_\alpha \lg (Q_\alpha/P_\alpha ) ]

F为基于非平衡的先验Q的free energy。后半部分是Q(d)间的Kullback-Leibler divergence,先验分布是P(θ,d)。分布Q是由一个独立的识别模型产生的,有自己的参数。同时对这些参数进行了优化,生成模型的参数,使整体拟合函数最大化。

中括号中的项就是分布Pα的helmholtz free energy,我们记为F(d;θ,Pα)。但是到目前为止,我们并没有做多少本质性工作,logp(d|θ)仍然十分的复杂,无法因式化,不便于参数的求解。我们接下来通过其他的分布Qα来代替Pα从而将问题进行转变。

等式(5)的右边的第二项是分布Qα和pα的Kullback-Leibler divergence。

generative model

The Deterministic Helmholtz M

想要最大化−F(d;θ,Q)。将(6)式右边的第二项移到左边,那么这个Kullback-Leibler divergence就变成了对logp(d|θ)的惩罚,我们最大化−F(d;θ,Q)也就是在最大化一个受惩罚的似然函数。接下来,我们将描述Helmholtz Machine是如何实现这一想法的。

我们首先描述helmholtz machine

它类似一个多层的神经网络,不过不同的是它由两组参数,一个是recognition 权重ϕ,另一个generative权重θθ,相应的这个网络分成两个模型一个是recognition模型,另一个是generative模型。前一个过程就是来形成分布Qα,每一个神经元都是二元随机变量(输入层可能为其他类型的随机变量)

我们从recognition模型开始说起。针对一个输入d,我们需要运用bottom-up连接参数ϕϕ来确定概率qlj(ϕ,d),表示第l层的第j个单元slj=1的概率。

我们假设该概率只和第l−1层的神经元相关,所以类似神经网络我们得到

{q_j^l}(\emptyset ,s^{l-1})= \sigma ( \sum_{i} {s_i^{l-1}}{\emptyset _{i,j}^{l-1,l}})


可以构造出我们想要的Q_α

Q_\alpha (\emptyset ,d)= \prod_{l>1} \prod_{j}  ({q_j^l}(\emptyset   ,s^{l-1}))^s_j^l(1-{q_j^l}(\emptyset , s^{l-1}))^{1-{s_j^l}}

针对generative模型,为了得到Fα(d;θ,ϕ)的简化形式,我们需要确定Eα的形式,我们同样假设第l层的神经元的状态由第l+1层神经元来确定。我们用plj(θ,sl+1)表示第l层第j个元素为1的概率

{p_j^l}(\theta ,s^{l+1})= \sigma ( \sum_{i} {s_k^{l+1}}{\theta_{k,j}^{l+q,l}})

假设在generative模型中,输入层的神经元由第二层的神经元唯一决定

p(\alpha  |\theta )= \prod_{l>1} \prod_{j}  ({q_j^l}(\theta    ,s^{l+1}))^s_j^l(1-{q_j^l}(\theta  , s^{l+1}))^{1-{s_j^l}}

p(d|\alpha,\theta )= \prod_{j}  ({q_j^1}(\theta    ,s^{2}))^s_j^1(1-{q_j^1}(\theta  , s^{2}))^{1-{s_j^1}},

从而

E_\alpha (\theta ,d)=- \lg p(\alpha |\theta )p(d|\alpha ,\theta )=- \sum_{l>=1} \sum_{j} {s_j^l} \lg {p_j^l} + (1-{s_j^l}) \lg (1-{p_j^l})

slj的期望代替它自身,就可以得到我们想要的F(θ,ϕ).上述的这种方法被Hinton称为The Deterministic Helmholtz Machine,原因就是将随机状态用相应的期望来代替。

把F的两个部分放在一起,基于从Qα的α对F的无偏估计为:

F_\alpha (d;\theta ,\emptyset) = E_\alpha+ \lg Q_\alpha

对所有的下公式里的负能量进行 stochastic gradient ascent  (使用公式14),也就是REINFORCE算法;

F_\alpha (d;\theta ,\emptyset) = - \sum_{d}F(d;\theta ,\emptyset)

然而,在本文的仿真中,我们做了大量的启发逼近,在识别模型q下,我们用它们的平均值代替了随机二元activity,

{q_j^l}(\emptyset, {q^{l-1}}) = \sigma (\sum_{i} {q_i^{l-1}} {\emptyset_{i,j}^{l-1,l} }

我们对p做了一个类似的近似,然后我们对方程14的表达式求均值,

F_\alpha (d;\theta ,\emptyset) = - \sum_{d}\sum_{l}\sum_{j}KL({a_j^l(\emptyset ,{q^{l-1}}),{p_j^l}(\theta ,q^{l+1})}

在和式中最里面的项是对于unit j在第l层的样本d的生成和识别分布之间的Kullback-Leibler分布:

KL[q,p]=q \lg \frac{q}{p} + (1-q)log \frac{1-q}{1-p}


θ,ϕ是由F(θ,ϕ)训练所获得(公式16).由于生成权θ不影响unit的实际活动,所以没有周期,因此可以用链式法则计算出在闭合形式下的导数。

图像化展示

曲面显示了F是Neal和Hinton(1994)讨论的生成参数函数,Q是识别分布的函数,期望值最大化算法通过对M-step和Q (E-step)进行交替优化来提升这个曲面。每次e步后,曲面上的点都会在Q = P定义的直线上。并且在这条直线上,F = log P (dj)。通过限制系统优化的表面(标记为“约束后验”“constrained posterior”),使用参数化的阶乘来识别分布。我们使用共轭梯度优化方法来提升受限曲面。对于给定的θ,

\lg p(d|\theta )=max_Q{-F(\theta ,Q)}

和-F(θ,Q)之间的差是方程(5)中的Kullback-Leibler的惩罚 。

一种简单的三层Helmholtz机器,第一层中,使用两阶段分层模型对5个二进制输入进行建模。生成权值(θ)显示为虚线,包括生成偏差,这是对最上层单元的唯一输入。识别权值(∅)用实线表示。改论文描述了识别和生成激活功能。

【来源:web; URL:http://www.cleveralgorithms.com/nature-inspired/stochastic/random_search.html 】

发展历史

在1989年,Yann LeCunn在AT&T Bell实验室验证了一个反向传播在现实世界中的杰出应用,即「反向传播应用于手写邮编识别(Backpropagation Applied to Handwritten Zip Code Recognition)」。

在卷积网络在发展过程中:1986年Rumelhart、Hinton和Williams关于反向传播的延伸分析中得到了切实讨论。那时,卷积的思想被称作「权值共享」。Minsky和Papert在1969年《感知机》中的分析完全可以提出激发这一研究想法的问题。但是,和之前一样,其他人已经独立地对其进行了研究——比如,Kunihiko Fukushima在1980年提出的 Neurocognitron。

LeCun也在贝尔实验室继续支持卷积神经网络,其相应的研究成果也最终在上世纪90年代中期成功应用于支票读取——他的谈话和采访通常都介绍了这一事实:「在上世纪90年代后期,这些系统当中的一个读取了全美大约10%到20%的支票。」

神经网络进入无监督学习时期

压缩。即指找到一种更小体量的数据表示模式,并从其可以恢复数据原有的表示形态,通过机器学习找到的压缩方法有可能会超越所有现有的压缩模式。当然,意思是在一些数据中找到一个更小的数据表征,原始数据可以从中加以重构。学会压缩这一方案远胜于常规压缩算法,在这种情况下,学习算法可以找到在常规压缩算法下可能错失的数据特征。而且,这也很容易做到——仅用训练带有一个小隐藏层的神经网络就可以对输入进行输出。

正如权重共享一样,关于自编码器最早的讨论是在前面提到过的1986年的反向传播分析中所进行。有了权重共享,它在接下来几年中的更多研究中重新浮出了水面,包括Hinton自己。这篇论文,有一个有趣的标题:《自编码器,最小描述长度和亥姆霍兹自由能》(Autoencoders, Minimum Description Length, and Helmholts Free Energy),提出「最自然的非监督式学习方法就是使用一个定义概率分布而不是可观测向量的模型」,并使用一个神经网络来学习这种模型。所以,还有一件你能用神经网络来做的奇妙事:对概率分布进行近似。

神经网络迎来信念网络

事实上,在成为1986年讨论反向传播学习算法这篇有重大影响力论文的合作者之前,Hinton在研究一种神经网络方法,可以学习1985年「 A Learning Algorithm for Boltzmann Machines」中的概率分布。

玻尔兹曼机器就是类似神经网络的网络,并有着和感知器(Perceptrons)非常相似的单元,但该机器并不是根据输入和权重来计算输出,在给定相连单元值和权重的情况下,网络中的每个单元都能计算出自身概率,取得值为1或0。因此,这些单元都是随机的——它们依循的是概率分布而非一种已知的决定性方式。玻尔兹曼部分和概率分布有关,它需要考虑系统中粒子的状态,这些状态本身基于粒子的能量和系统本身的热力学温度。这一分布不仅决定了玻尔兹曼机器的数学方法,也决定了其推理方法——网络中的单元本身拥有能量和状况,学习是由最小化系统能量和热力学直接刺激完成的。虽然不太直观,但这种基于能量的推理演绎实际上恰是一种基于能量的模型实例,并能够适用于基于能量的学习理论框架,而很多学习算法都能用这样的框架进行表述。

和神经网络一样,算法既可以在监督(知道隐藏单元值)也可以在无监督方式下完成。尽管这一算法被证明有效(尤其是在面对自编码神经网络解决的「编码」问题时),但很快就看出不是特别有效。Redford M. Neal1992年的论文《Connectionist learning of belief networks》论证了需要一种更快的方法,他说:「这些能力使得玻耳兹曼机在许多应用中都非常有吸引力——要不是学习过程通常被认为是慢的要命。」因此,Neal引入了类似信念网络的想法,本质上就像玻耳兹曼机控制、发送连接(所以又有了层次,就像我们之前看过的神经网络一样,而不像上面的玻耳兹曼机控制机概念)。跳出了讨厌的概率数学,这一变化使得网络能以一种更快的学习算法得到训练。洒水器和雨水那一层上面可以视为有一个信念网络——这一术语非常严谨,因为这种基于概率的模型,除了和机器学习领域有着联系,和数学中的概率领域也有着密切的关联。

尽管这种方法比玻尔兹曼机进步,但还是太慢了,正确计算变量间的概率关系的数学需求计算量太大了,而且还没有简化技巧。Hinton、Neal和其他两位合作者很快在1995年的论文《 The wake-sleep algorithm for unsupervised neural networks》中提出了一些新技巧。这次他们又搞出一个和上个信念网络有些不一样的网络,现在被叫做「亥姆霍兹机」。核心的想法就是对隐含变量的估算和对已知变量的逆转生成计算采取两套不同的权重,前者叫做recognition weights,后者叫做generative weights,保留了Neal’s信念网络的有方向的特性。这样一来,当用于玻尔兹曼机的那些监督和无监督学习问题时,训练就快得多。

出处:blog, URL:http://www.uml.org.cn/ai/201805024.asp  

主要事件

年份事件相关论文
1987Ackley, D. H., Hinton, G. E.提出Boltzmann MachinesAckley, D. H., Hinton, G. E., & Sejnowski, T. J. (1987). A learning algorithm for Boltzmann machines. In Readings in Computer Vision (pp. 522-533).
1995Dayan, P., Hinton, G. E.对Boltzmann Machines进行总结Dayan, P., Hinton, G. E., Neal, R. M., & Zemel, R. S. (1995). The helmholtz machine. Neural computation, 7(5), 889-904.
1995Hinton, G. E., Dayan, P.,将Boltzmann Machines算法提出了一些新技巧Hinton, G. E., Dayan, P., Frey, B. J., & Neal, R. M. (1995). The" wake-sleep" algorithm for unsupervised neural networks. Science, 268(5214), 1158-1161.
1996Dayan, P., & Hinton, G. E提出Boltzmann Machines的各种变体,并且阐述了它们各自的优缺点Dayan, P., & Hinton, G. E. (1996). Varieties of Helmholtz machine. Neural Networks, 9(8), 1385-1403.
2015Salakhutdinov, R., & Larochelle, H提高算法效率Salakhutdinov, R., & Larochelle, H. (2010, March). Efficient learning of deep Boltzmann machines. In Proceedings of the thirteenth international conference on artificial intelligence and statistics (pp. 693-700).

发展分析

瓶颈

尽管这种方法比玻尔兹曼机进步,但还是太慢了,正确计算变量间的概率关系的数学需求计算量太大了,而且没有简化技巧。

未来发展方向

Helmholtz机器也可用于需要监督学习算法的应用程序((e.g. character recognition,或position-invariant recognition of an object within a field)。

Contributor: Ruiying Cai

简介