20.4 深度玻尔兹曼机
深度玻尔兹曼机(Deep Boltzmann Machine,DBM)(Salakhutdinov and Hinton,2009a)是另一种深度生成模型。与深度信念网络(DBN)不同的是,它是一个完全无向的模型。与RBM不同的是,DBM有几层潜变量(RBM只有一层)。但是像RBM一样,每一层内的每个变量是相互独立的,并条件于相邻层中的变量,见图20.2中的图结构。深度玻尔兹曼机已经被应用于各种任务,包括文档建模(Srivastava et al.,2013)。
图20.2 具有一个可见层(底部)和两个隐藏层的深度玻尔兹曼机的图模型。仅在相邻层的单元之间存在连接,没有层内连接
与RBM和DBN一样,DBM通常仅包含二值单元(正如我们为简化模型的演示而假设的),但很容易就能扩展到实值可见单元。
DBM是基于能量的模型,这意味着模型变量的联合概率分布由能量函数E参数化。在一个深度玻尔兹曼机包含一个可见层ν和3个隐藏层和的情况下,联合概率由下式给出:
为简化表示,式(20.25)省略了偏置参数。DBM能量函数定义如下:
与RBM的能量函数(式(20.5))相比,DBM能量函数以权重矩阵(W(2)和W(4)的形式表示隐藏单元(潜变量)之间的连接。正如我们将看到的,这些连接对模型行为以及我们如何在模型中进行推断都有重要的影响。
与全连接的玻尔兹曼机(每个单元连接到其他每个单元)相比,DBM提供了类似于RBM的一些优点。
具体来说,如图20.3所示,DBM的层可以组织成一个二分图,其中奇数层在一侧,偶数层在另一侧。容易发现,当我们条件于偶数层中的变量时,奇数层中的变量变得条件独立。当然,当我们条件于奇数层中的变量时,偶数层中的变量也会变得条件独立。
图20.3 深度玻尔兹曼机,重新排列后显示为二分图结构
DBM的二分图结构意味着,我们可以应用之前用于RBM条件分布的相同式子来确定DBM中的条件分布。在给定相邻层值的情况下,层内的单元彼此条件独立,因此二值变量的分布可以由Bernoulli参数(描述每个单元的激活概率)完全描述。在具有两个隐藏层的示例中,激活概率由下式给出:
和
二分图结构使Gibbs采样能在深度玻尔兹曼机中高效采样。Gibbs采样的方法是一次只更新一个变量。RBM允许所有可见单元以一个块的方式更新,而所有隐藏单元在另一个块上更新。我们可以简单地假设具有l层的DBM需要l+1次更新,每次迭代更新由某层单元组成的块。然而,我们可以仅在两次迭代中更新所有单元。Gibbs采样可以将更新分成两个块,一块包括所有偶数层(包括可见层),另一个包括所有奇数层。由于DBM二分连接模式,给定偶数层,关于奇数层的分布是因子的,因此可以作为块同时且独立地采样。类似地,给定奇数层,可以同时且独立地将偶数层作为块进行采样。高效采样对使用随机最大似然算法的训练尤其重要。
20.4.1 有趣的性质
深度玻尔兹曼机具有许多有趣的性质。
DBM在DBN之后开发。与DBN相比,DBM的后验分布P(h | ν) 更简单。有点违反直觉的是,这种后验分布的简单性允许更加丰富的后验近似。在DBN的情况下,我们使用启发式的近似推断过程进行分类,其中我们可以通过MLP(使用sigmoid激活函数并且权重与原始DBN相同)中的向上传播猜测隐藏单元合理的均匀场期望值。任何分布Q(h)可用于获得对数似然的变分下界。因此这种启发式的过程让我们能够获得这样的下界。但是,该界没有以任何方式显式优化,所以该界可能是远远不紧的。特别地,Q的启发式估计忽略了相同层内隐藏单元之间的相互作用,以及更深层中隐藏单元对更接近输入的隐藏单元自顶向下的反馈影响。因为DBN中基于启发式MLP的推断过程不能考虑这些相互作用,所以得到的Q想必远不是最优的。DBM中,在给定其他层的情况下,层内的所有隐藏单元都是条件独立的。这种层内相互作用的缺失使得通过不动点方程优化变分下界,并找到真正最佳的均匀场期望(在一些数值容差内)变得可能的。
使用适当的均匀场允许DBM的近似推断过程捕获自顶向下反馈相互作用的影响。这从神经科学的角度来看是有趣的,因为根据已知,人脑使用许多自上而下的反馈连接。由于这个性质,DBM已被用作真实神经科学现象的计算模型(Series et al.,2010;Reichert et al.,2011)。
DBM一个不理想的特性是从中采样是相对困难的。DBN只需要在其顶部的一对层中使用MCMC采样。其他层仅在采样过程末尾涉及,并且只需在一个高效的原始采样过程。要从DBM生成样本,必须在所有层中使用MCMC,并且模型的每一层都参与每个马尔可夫链转移。
20.4.2 DBM均匀场推断
给定相邻层,一个DBM层上的条件分布是因子的。在有两个隐藏层的DBM的示例中,这些分布是P(ν|h(1))、P(h(1)) |ν,h(2))和P(h(2)|h(1))。因为层之间的相互作用,所有隐藏层上的分布通常不是因子的。在有两个隐藏层的示例中,由于h(1)和h(2)之间的交互权重W(2)使得这些变量相互依赖,P(h(1)|ν,h(2))不是因子的。
与DBN的情况一样,我们还是要找出近似DBM后验分布的方法。然而,与DBN不同,DBM在其隐藏单元上的后验分布(复杂的)很容易用变分近似来近似(如第19.4节所讨论),具体是一个均匀场近似。均匀场近似是变分推断的简单形式,其中我们将近似分布限制为完全因子的分布。在DBM的情况下,均匀场方程捕获层之间的双向相互作用。在本节中,我们推导出由Salakhutdinov and Hinton(2009a)最初引入的迭代近似推断过程。
在推断的变分近似中,我们通过一些相当简单的分布族近似特定目标分布——在这里指给定可见单元时隐藏单元的后验分布。在均匀场近似的情况下,近似族是隐藏单元条件独立的分布集合。
我们现在为具有两个隐藏层的示例推导均匀场方法。令Q(h(1),h(2)|ν)为P(h(1),h(2)|ν)的近似。均匀场假设意味着
均匀场近似试图找到这个分布族中最适合真实后验P(h(1),h(2)|ν)的成员。重要的是,每次我们使用ν的新值时,必须再次运行推断过程以找到不同的分布Q。
我们可以设想很多方法来衡量Q(h|ν)与P(h|ν)的拟合程度。均匀场方法是最小化
一般来说,除了要保证独立性假设,我们不必提供参数形式的近似分布。变分近似过程通常能够恢复近似分布的函数形式。然而,在二值隐藏单元(我们在这里推导的情况)的均匀场假设的情况下,不会由于预先固定模型的参数而损失一般性。
我们将Q作为Bernoulli分布的乘积进行参数化,即我们将h(1)每个元素的概率与一个参数相关联。具体来说,对于每个j,,其中。另外,对于每个k,,其中。因此,我们有以下近似后验:
当然,对于具有更多层的DBM,近似后验的参数化可以通过明显的方式扩展,即利用图的二分结构,遵循Gibbs采样相同的调度,同时更新所有偶数层,然后同时更新所有奇数层。
现在我们已经指定了近似分布Q的函数族,但仍然需要指定用于选择该函数族中最适合P的成员的过程。最直接的方法是使用式(19.56)指定的均匀场方程。这些方程是通过求解变分下界导数为零的位置而导出,它们以抽象的方式描述如何优化任意模型的变分下界(只需对Q求期望)。
应用这些一般的方程,我们得到以下更新规则(再次忽略偏置项):
在该方程组的不动点处,我们具有变分下界的局部最大值。因此,这些不动点更新方程定义了迭代算法,其中我们交替更新(使用式(20.33))和(使用式(20.34))。对于诸如MNIST的小问题,少至10次迭代就足以找到用于学习的近似正相梯度,而50次通常足以获得要用于高精度分类的单个特定样本的高质量表示。将近似变分推断扩展到更深的DBM是直观的。
20.4.3 DBM的参数学习
DBM中的学习必须面对难解配分函数的挑战(使用第18章中的技术),以及难解后验分布的挑战(使用第19章中的技术)。
如第20.4.2节中所描述的,变分推断允许构建近似难处理的P(h|ν)的分布Q(h|ν)。然后通过最大化(难处理的对数似然的变分下界)学习。
对于具有两个隐藏层的深度玻尔兹曼机,由下式给出
该表达式仍然包含对数配分函数。由于深度玻尔兹曼机包含受限玻尔兹曼机作为组件,用于计算受限玻尔兹曼机的配分函数和采样的困难同样适用于深度玻尔兹曼机。这意味着评估玻尔兹曼机的概率质量函数需要近似方法,如退火重要采样。同样,训练模型需要近似对数配分函数的梯度,见第18章对这些方法的一般性描述。DBM通常使用随机最大似然训练。第18章中描述的许多其他技术都不适用。诸如伪似然的技术需要评估非归一化概率的能力,而不是仅仅获得它们的变分下界。对于深度玻尔兹曼机,对比散度是缓慢的,因为它们不能在给定可见单元时对隐藏单元进行高效采样——反而,每当需要新的负相样本时,对比散度将需要磨合一条马尔可夫链。
非变分版本的随机最大似然算法已经在第18.2节讨论过。算法20.1给出了应用于DBM的变分随机最大似然算法。回想一下,我们描述的是DBM的简化变体(缺少偏置参数),很容易推广到包含偏置参数的情况。
20.4.4 逐层预训练
不幸的是,随机初始化后使用随机最大似然训练(如上所述)的DBM通常导致失败。在一些情况下,模型不能学习如何充分地表示分布。在其他情况下,DBM可以很好地表示分布,但是没有比仅使用RBM获得更高的似然。除第一层之外,所有层都具有非常小权重的DBM与RBM表示大致相同的分布。
如第20.4.5节所述,目前已经开发了允许联合训练的各种技术。然而,克服DBM的联合训练问题最初和最流行的方法是贪心逐层预训练。在该方法中,DBM的每一层被单独视为RBM进行训练。第一层被训练为对输入数据进行建模。每个后续RBM被训练为对来自前一RBM后验分布的样本进行建模。在以这种方式训练了所有RBM之后,它们可以被组合成DBM。然后可以用PCD训练DBM。通常,PCD训练将仅使模型的参数、由数据上的对数似然衡量的性能、区分输入的能力发生微小的变化,见图20.4展示的训练过程。
图20.4 用于分类MNIST数据集的深度玻尔兹曼机训练过程(Salakhutdinov and Hinton,2009a;Srivastava et al.,2014)。(a)使用CD近似最大化log P(ν)来训练RBM。(b)训练第二个RBM,使用CD-k近似最大化log P(h(1),y)来建模h(1)和目标类y,其中h(1)采自第一个RBM条件于数据的后验。在学习期间将k从1增加到20。(c)将两个RBM组合为DBM。使用k=5的随机最大似然训练,近似最大化log P(v,y)。(d)将y从模型中删除。定义新的一组特征h(1)和h(2),可在缺少y的模型中运行均匀场推断后获得。使用这些特征作为MLP的输入,其结构与均匀场的额外轮相同,并且具有用于估计y的额外输出层。初始化MLP的权重与DBM的权重相同。使用随机梯度下降和Dropout训练MLP近似最大化log P(y|v)。图来自Goodfellow et al.(2013d)
算法20.1 用于训练具有两个隐藏层的DBM的变分随机最大似然算法。
设步长一个小正数
设定吉布斯步数k,大到足以让的马尔可夫链能磨合(从来自的样本开始)。
初始化3个矩阵,和每个都将m行设为随机值(例如,来自Bernoulli分布,边缘分布大致与模型匹配)。
while没有收敛(学习循环)do
从训练数据采包含m个样本的小批量,并将它们排列为设计矩阵V的行。
初始化矩阵和,使其大致符合模型的边缘分布。
while没有收敛(均匀场推断循环)do
end while
for l=1 to k(Gibbs采样)do
Gibbs block 1:
Gibbs block 2:
end for
(这是大概的描述,实践中使用的算法更高效,如具有衰减学习率的动量)
end while
这种贪心逐层训练过程不仅仅是坐标上升,因为我们在每个步骤优化参数的一个子集,它与坐标上升具有一些传递相似性。这两种方法是不同的,因为贪心逐层训练过程中,我们在每个步骤都使用了不同的目标函数。
DBM的贪心逐层预训练与DBN的贪心逐层预训练不同。每个单独的RBM的参数可以直接复制到相应的DBN。在DBM的情况下,RBM的参数在包含到DBM中之前必须修改。RBM栈的中间层仅使用自底向上的输入进行训练,但在栈组合形成DBM后,该层将同时具有自底向上和自顶向下的输入。为了解释这种效应,Salakhutdinov and Hinton(2009a)提倡在将其插入DBM之前,将所有RBM(顶部和底部RBM除外)的权重除2。另外,必须使用每个可见单元的两个“副本”来训练底部RBM,并且两个副本之间的权重约束为相等。这意味着在向上传播时,权重能有效地加倍。类似地,顶部RBM应当使用最顶层的两个副本来训练。
为了使用深度玻尔兹曼机获得最好结果,我们需要修改标准的SML算法,即在联合PCD训练步骤的负相期间使用少量的均匀场(Salakhutdinov and Hinton,2009a)。具体来说,应当相对于其中所有单元彼此独立的均匀场分布来计算能量梯度的期望。这个均匀场分布的参数应该通过运行一次均匀场不动点方程获得。Goodfellow et al.(2013d)比较了在负相中使用和不使用部分均匀场的中心化DBM的性能。
20.4.5 联合训练深度玻尔兹曼机
经典DBM需要贪心无监督预训练,并且为了更好的分类,需要在它们提取的隐藏特征之上,使用独立的基于MLP的分类器。这种方法有一些不理想的性质,因为我们不能在训练第一个RBM时评估完整DBM的属性,所以在训练期间难以跟踪性能。因此,直到相当晚的训练过程,我们都很难知道我们的超参数表现如何。DBM的软件实现需要很多不同的模块,如用于单个RBM的CD训练、完整DBM的PCD训练以及基于反向传播的MLP训练。最后,玻尔兹曼机顶部的MLP失去了玻尔兹曼机概率模型的许多优点,例如当某些输入值丢失时仍能够进行推断的优点。
主要有两种方法可以处理深度玻尔兹曼机的联合训练问题。第一个是中心化深度玻尔兹曼机(centered deep Boltzmann machine)(Montavon and Muller,2012),通过重参数化模型使其在开始学习过程时代价函数的Hessian具有更好的条件数。这个模型不用经过贪心逐层预训练阶段就能训练。这个模型在测试集上获得出色的对数似然,并能产生高质量的样本。不幸的是,作为分类器,它仍然不能与适当正则化的MLP竞争。联合训练深度玻尔兹曼机的第二种方式是使用多预测深度玻尔兹曼机(multi-prediction deep Boltzmann machine,MP-DBM)(Goodfellow et al.,2013d)。该模型的训练准则允许反向传播算法,以避免使用MCMC估计梯度的问题。不幸的是,新的准则不会导致良好的似然性或样本,但是相比MCMC方法,它确实会导致更好的分类性能和良好的推断缺失输入的能力。
如果我们回到玻尔兹曼机的一般观点,即包括一组权重矩阵U和偏置b的单元x,玻尔兹曼机中心化技巧是最容易描述的。回顾式(20.2) ,能量函数由下式给出
在权重矩阵U中使用不同的稀疏模式,我们可以实现不同架构的玻尔兹曼机,如RBM或具有不同层数的DBM。将x分割成可见和隐藏单元,并将U中不相互作用的单元归零可以实现这些架构。中心化玻尔兹曼机引入了一个向量μ,并从所有状态中减去:
通常μ在开始训练时固定为一个超参数。当模型初始化时,通常选择为x−μ≈0。这种重参数化不改变模型可表示的概率分布的集合,但它确实改变了应用于似然的随机梯度下降的动态。具体来说,在许多情况下,这种重参数化导致更好条件数的Hessian矩阵。Melchior et al.(2013)通过实验证实了Hessian矩阵条件数的改善,并观察到中心化技巧等价于另一个玻尔兹曼机学习技术——增强梯度(enhanced gradient)(Cho et al.,2011)。即使在困难的情况下,例如训练多层的深度玻尔兹曼机,Hessian矩阵条件数的改善也能使学习成功。
联合训练深度玻尔兹曼机的另一种方法是多预测深度玻尔兹曼机(MP-DBM),它将均匀场方程视为定义一系列用于近似求解每个可能推断问题的循环网络(Goodfellow et al.,2013d)。模型被训练为使每个循环网络获得对相应推断问题的准确答案,而不是训练模型来最大化似然。训练过程如图20.5所示,它包括随机采一个训练样本,随机采样推断网络的输入子集,然后训练推断网络来预测剩余单元的值。
图20.5 深度玻尔兹曼机多预测训练过程的示意图。每一行指示相同训练步骤内小批量中的不同样本。每列表示均匀场推断过程中的时间步。对于每个样本,我们对数据变量的子集进行采样,作为推断过程的输入。这些变量以黑色阴影表示条件。然后我们运行均匀场推断过程,箭头指示过程中的哪些变量会影响其他变量。在实际应用中,我们将均匀场展开为几个步骤。在此示意图中,我们只展开为两个步骤。虚线箭头表示获得更多步骤需要如何展开该过程。未用作推断过程输入的数据变量成为目标,以灰色阴影表示。我们可以将每个样本的推断过程视为循环网络。为了使其在给定输入后能产生正确的目标,我们使用梯度下降和反向传播训练这些循环网络。这可以训练MP-DBM均匀场过程产生准确的估计。图改编自Goodfellow et al.(2013d)
这种用于近似推断,通过计算图进行反向传播的一般原理已经应用于其他模型(Stoyanov et al.,2011;Brakel et al.,2013)。在这些模型和MP-DBM中,最终损失不是似然的下界。相反,最终损失通常基于近似推断网络对缺失值施加的近似条件分布。这意味着这些模型的训练有些启发式。如果我们检查由MP-DBM学习出来的玻尔兹曼机表示p(ν),在Gibbs采样产生较差样本的意义下,它倾向于有些缺陷。
通过推断图的反向传播有两个主要优点。首先,它以模型真正使用的方式训练模型——使用近似推断。这意味着在MP-DBM中,进行如填充缺失的输入或执行分类(尽管存在缺失的输入)的近似推断比在原始DBM中更准确。原始DBM不会自己做出准确的分类器,使用原始DBM的最佳分类结果是基于DBM提取的特征训练独立的分类器,而不是通过使用DBM中的推断来计算关于类标签的分布。MP-DBM中的均匀场推断作为分类器,不需要进行特殊修改就获得良好的表现。通过近似推断反向传播的另一个优点是反向传播计算损失的精确梯度。对于优化而言,比SML训练中具有偏差和方差的近似梯度更好。这可能解释了为什么MP-DBM可以联合训练,而DBM需要贪心逐层预训练。近似推断图反向传播的缺点是它不提供一种优化对数似然的方法,而提供广义伪似然的启发式近似。
MP-DBM启发了对NADE框架的扩展NADE-k(Raiko et al.,2014) ,我们将在第20.10.10节中描述。
MP-DBM与Dropout有一定联系。Dropout在许多不同的计算图之间共享相同的参数,每个图之间的差异是包括还是排除每个单元。MP-DBM还在许多计算图之间共享参数。在MP-DBM的情况下,图之间的差异是每个输入单元是否被观察到。当没有观察到单元时,MP-DBM不会像Dropout那样将其完全删除。相反,MP-DBM将其视为要推断的潜变量。我们可以想象将Dropout应用到MP-DBM,即额外去除一些单元而不是将它们变为潜变量。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论