aa

The wake-sleep algorithm for unsupervisedneural networks

摘要

本文介绍一种在随机神经元组成的多层网络上的无监督学习算法。自下而上的“认知”链接把输入转化成后续隐层的表示(representation),自上而下的“生成”链接利用前一层的表示来重构数据。在wake过程,神经元用认知权值来驱动,并调整生成权值来增长下一层重构正确数据的几率。在sleep过程,神经元用生成权值来驱动,并调整认知权值来增长上一层产生正确数据的几率。算法

内容

多层神经网络的监督学习算法面临两个问题:须要一个“老师”指出网络的预期输出,须要一个方法把错误(误差、残差)信息告诉全部的链接。WS(wake-sleep)算法避免了这些问题。没有外界指导信号相匹配时,须要一些别打目标来强迫隐藏节点提取潜在的结构。在WS算法中,目标就是学习容易描述但可以使输入精确重构的表示(recognition)。咱们能够量化这个目标,想象一个交互游戏,每一个输入向量与接受者进行通讯,第一次发送隐藏的表示,而后发送原始输入向量和他从隐藏表示中获取的的TD(top-down)重构之间的差别。学习的目标是最小化“描述长度”,就是用这种方法与输入向量通讯须要的总数据位数。实际上并无进行交互,但最小化必需的描述长度迫使网络学习经济的(开销少的)表示,并可以捕捉数据中的规律。网络

这个神经网络有两组不一样的链接。自下而上的“认知”链接是用来把输入向量转化成一层或多层隐藏节点中的表示。而后,自上而下的“生成”链接是用来从隐含的表示当中重构一个输入向量的近似。对这两组链接的训练算法可用于多种随机神经元,但简单起见,咱们只用二元随机节点,只有0和1两种状态。节点                         的状态是 ,几率以下所示:框架

 

是节点的偏置, 是与节点 的链接权值。有时候节点由生成权值驱动,有时候由认知权值,但都用这同一个公式(图1)。学习

在“wake”阶段,节点自下而上驱动,使用认知权重,在第一隐层产生一个输入向量的表示,在第二隐层产生第一隐层的数据的表示…。全部层的表示合起来叫作输入数据的“整体表示”,在整体表示 中隐藏节点 的二元状态表示为 。这个整体表示能够用来把输入向量 传达给接受者。根据香农编码定理,若是发送者和接受者约定的分布中某事件的几率为 ,则传输他须要 位数据。咱们假设接受者知道自上而下的生成权重,于是这就能够创建一个传达须要的约定几率分布。首先,顶层隐藏层的节点 的活动被告知使用分布 ,这是经过对节点 的单独的生成偏置权重套用公式1所得的。而后,下面各层的节点的活动被告知使用分布 ,这是经过对上层已有的状态 和生成权重 套用公式1获得的。节点 的二元状态的描述长度是:测试

 

使用表示 的输入数据 的描述长度就是全部隐藏层隐层状态的开销加上给定隐层状态后描述输入向量的开销。优化

 

是 层隐层的序号, 是输入节点的序号,其状态是 。编码

由于隐层节点状态是随机的,因此输入数据的表示并不老是一致的。在“wake”阶段,认知权重决定了一个整体表示上的条件几率分布 。然而,若是认知权值肯定了,有一个简单的在线方法能够修改生成权值,来最小化 ,这是用随机选取的整体表示描述输入向量的指望开销。用认知权值选择一个整体表示后,每一个生成权值都被按比例调整到公式3的导数,经过使用纯局部delta规则:设计

 

是 学习速率。尽管节点是用认知权值驱动的,在wake阶段训练的却仅仅是生成权值。训练使得整体表示中的每一层都能更好的重构下一层的活动(激活状态、数据)。component

对 最小的 ,看起来认知权值彷佛应该被调整到使它的几率最大。但这是错的。当有不少方法来描述输入向量时,可以设计一个随机的编码方案,该方案利用各类表示的熵。那么,开销(cost)就是:游戏

 

第二项就是认知权值分配给不一样的表示的分布的熵。好比,若是有两个表示,每一个开销是4bit,若是咱们用相同的几率使用他们,联合开销只有3bit(为啥这么定义?)。这就相似物理系统中不一样状态的能量联合起来抑制整个系统Helmholtz自由能的方法。在物理中,当状态的几率和他们在玻耳兹曼分布(温度为1)下的开销呈指数关系时, 被最小化。

 

因此,与其调整认知权值使全部几率都集中在最低耗的表示上面。咱们更应该尝试让认知分布 尽可能与玻耳兹曼分布 相似,对于给定数据和网络的生成模型,它(玻耳兹曼分布)是表示(recognition)的后验几率。精确计算 是指数级的复杂度,但有一个简单的方法计算近似正确的隐藏节点的目标状态,从而能够训练自下而上的认知权值的分布 。

咱们撇下认知权值,用生成权值来驱动整个网络,从顶层开始,向下一直运行到输入节点。由于节点是随机的,重复这个过程一般会在输入节点产生不少不一样的“fantasy”向量。这些向量提供了一个生成模型关于世界的无偏采样。生成一个fantasy以后,咱们随后调整认知权值来最大化重现生成fantasy的隐层状态的对数几率。

 

是对于特定的fantasy,隐藏节点和输入节点的状态。 是认知权值做用时,节点k为1的几率。 是下一层的几率。咱们把这个叫作算法的“sleep”过程。相似wake过程,他只用到本地的信息。Sleep过程的一个潜在缺点是,咱们但愿认知权值能更好的拟合真实的缘由(生成训练数据的),但sleep过程实际上是对fantasy作最优化。在训练过程早期,fantasy和训练数据的分布很不同。

认知权值产生的分布 在每一个隐层是一个factorial(因子的,乘积的)分布,由于给定下一层的状态后,认知权值产生的各节点的状态是条件独立的。神经网络用factorial分布是天然的,由于 个可选的隐藏表示的几率分布能够用 个数字来指定而非 个。可是,这个简化会使 很难彻底匹配公式6中的后验几率 。好比说,当某一层的活动向量取决因而否激活了上一层中a节点和b节点中任意一个而非同时激活他们的时候,很难捕捉到“explaining away”效果。

把 限制成factorial分布多是一个严重的限制。但他不是个致命的缺陷,由于算法的wake过程调整生成权值以使 更接近 ,从而限制 在为非factorial分布建模时的无能致使的损失。为了说明为何这个效果出现,咱们把公式5写成另外一种形式:

 

公式8的前两项就是当前生成模型下的 。最后一项,保证非负,是 和 的KL距离。 就是用 时的描述长度超出 的数量。因此,对于两个给 分配了相等几率的生成模型,给定生成权值后最小化公式8就会倾向于支持后验几率最接近 的模型。在生成模型的可能空间里,wake过程找出使近似factorial的后验几率提升的样本。

由于咱们作了几个近似,全部算法必须经过效果来评估。图2显示他能训练一个正确的多层生成模型。对于一个简单的问题。此外,进过训练,公式8中的KL距离只有0.08bit,说明这个过程产生了一个有几乎完美factorial后验几率的生成模型。咱们还在多变的手写数字图上测试了他产生模型的容量的两个量化方面(图3a)。训练十个不一样的模型,每一个数字一个,咱们可以准确识别新数字,经过看那个模型给出最实惠的表示。图3b显示,当训练一个数字模型后,网络生成的fantasy很接近真实数据。咱们一样对全部数字训练了一个单独的大网络,并确认了他可以像这是个单独网络同样好的压缩新的数字,并且比简单编码好两倍。

神经网络的两个普遍应用的无监督训练算法是principal components analysis和competitive learning(有时候也叫vector quantization or clustering)。他们均可以被看做只有一个隐层的最小表示程度方法的特例,并且区分认知权值和生成权值不必,由于他们常常是相等的。其余的学习框架用分离的前馈和反馈权值。相比Adaptive Resonance Theory [8], Counter-Streams model [9],和Kawatoetal’s algorithm [10],wake-sleep算法把无监督学习的问题看做统计学——一个能精确的捕捉输入向量的结构的生成模型。Kawato的模型用前向和反向模型来表达,是咱们的生成模型和认知模型的另外一种表达。wake-sleep算法最接近Barlow的思想和Mumford的建议的灵魂,前者是关于可逆的阶乘表示,后者将Grenander的生成模型方法映射到大脑。

无监督学习的最小表示长度方法用来提升人工神经网络的模式识别能力。但wake-sleep学习算法的简单性使得它在生物学方面颇有趣。好比,Hasselmo已经提出输入到皮层的胆碱能能够调节正在进行的活动的前馈控制的程度。有一个奇怪的巧合,使用生成模型的感知系统的想法由Helmholtz主张,因此咱们把经过最小化公式5表示的自由能来配置一个数据的生成模型的神经网络都称做“Helmholtz机”。

 

图1:一个三层HM(Helmholtzmachine)。底层表明原始感官输入节点。I,J,K 层的节点都是认知链接(实现)和生成链接(虚线)的全链接节点。J层节点 的二元状态是 。 由认知权重决定, 由生成权值决定。当节点由下而上驱动, 的几率是 ,当由上而下驱动时,这个几率是 。

 

 

图2:a)4*4图像的一个生成模型。顶层决定使用水平仍是竖直的条。下一层决定所选择的方向的每一个可能的条是否应出如今图像中。b)一个由a中模型用移除的模糊的全白图像产生的样本图像。一个包含16个输入节点、第一层隐层有8个节点、第二个隐层有1个节点的神经网络,在用生成模型产生的2*106个随机样本上训练。训练以后,sleep阶段产生的几率分布几乎是正确的。c)进入和离开第一层隐层8个节点的链接的生成权重。正权重是白色,负权重是黑色,并且面积和幅度成比例。显示的最大权重是14.1。节点的生成偏置在每一个块的右上方显示,它链接上层惟一一个节点的生成权重在左上方显示。最右边的块表示输入节点的生成偏置。为了产生一个容易解释的解决方案,输入节点的生成权重限定为正。若是容许为负的话,算法能获得正确的分布,但方法很复杂,同时也须要第二个隐层有更多的节点。

 

图3:手写数字被规格化并量化成8*8的二值图像。左边展现了每种数字的24个样例。每一个数字都训练了一个单独的网络,右边展现了每一个网络的24个产物。每一个数字的变换都进行了很好的建模。当选择能最小化描述长度的网络做为分类结果时,错误率是4.8%。对于一样的数据,最近邻分类错误率有6.7%,BP神经网络训练一个有10个输出节点的网络错误率最小也有5.6%,哪怕咱们用测试数据来最优化隐层节点数量、训练时间、和权值衰减。

相关文章
相关标签/搜索