![人工智能:语音识别理解与实践](https://wfqqreader-1252317822.image.myqcloud.com/cover/51/35011051/b_35011051.jpg)
5.1 受限玻尔兹曼机
受限玻尔兹曼机[197]是一种具有随机性的生成型神经网络。就像它的名字所暗示的那样,它是玻尔兹曼机(Boltzmann Machine)的一个变体。它本质上是一种由具有随机性的一层可见神经元和一层隐藏神经元所构成的无向图模型。可见层神经元之间及隐层神经元之间没有连接(如图5-1所示),因此,它的可见层神经元和隐层神经元构成一个二分图。隐藏层神经元通常取二进制值并服从伯努利分布。可见层神经元可以根据输入的类型取二进制值或实数值。
![](https://epubservercos.yuewen.com/98014D/18685354608165306/epubprivate/OEBPS/Images/38143-00-099-1.jpg?sign=1739294019-KpyKE3nnnByGDmMpO3EmeYjtfEbSvZK7-0-97f0876c270d22676cd5bb90d1474217)
图5-1 一个受限玻尔兹曼机的例子
一个RBM给每一个可见层向量v和隐层向量h的配置都赋予了一个能量值。对伯努利-伯努利RBM而言,其中的和
,其能量值是
![](https://epubservercos.yuewen.com/98014D/18685354608165306/epubprivate/OEBPS/Images/38143-00-100-3.jpg?sign=1739294019-22oVeLb0Ac33dJVLi0QR2eF7xNglpEV5-0-022efc20e265479c56f4377b5523b6f4)
这里Nv和Nh分别是可见层和隐层神经元的个数。是连接可见层和隐层神经元的权重矩阵。
分别是可见层和隐层的偏置向量。如果可见层取实数值,即
,那么这个RBM通常被称为高斯-伯努利RBM,它给每一个配置(v, h)都赋予了一个能量值
![](https://epubservercos.yuewen.com/98014D/18685354608165306/epubprivate/OEBPS/Images/38143-00-100-7.jpg?sign=1739294019-dMA4zySwAm0iztCiR0rZHBUi9A4h3CEM-0-83889a6bf9bdf479efb907240a19f804)
每个配置同时与一个概率相关:
![](https://epubservercos.yuewen.com/98014D/18685354608165306/epubprivate/OEBPS/Images/38143-00-100-8.jpg?sign=1739294019-U6ZMyahVC5LNpWINcdCNbsmnmXr1b3aW-0-2a114ebf41a64e81a83ef925878a0e4f)
这个概率是通过能量值定义的,在这里正规化因子作为配分函数(Partition Function)而被熟知。
在RBM中,后验概率P(v|h)和P(h|v)能够被有效地计算,这得益于可见层和隐层神经元之间没有连接。举例来说,对于伯努利-伯努利RBM,有
![](https://epubservercos.yuewen.com/98014D/18685354608165306/epubprivate/OEBPS/Images/38143-00-100-10.jpg?sign=1739294019-64M6PenDIa1jtJfgStG5YjmE7S6ZuvmK-0-95b42e6f5cef04ae86f1f93f3204d982)
其中,Wi, *表示W的第i行。公式(5.4)表明在给定可见层向量的情况下,隐层神经元彼此条件独立于给定的可见层向量。因为hi∈{0, 1}只取二进制值
![](https://epubservercos.yuewen.com/98014D/18685354608165306/epubprivate/OEBPS/Images/38143-00-101-1.jpg?sign=1739294019-tOiu74gd7P7xrLMgs7aznbxzJR4Wk09j-0-a340abf5d7acce4da6878cf1a7838eda)
或者
P(h=1|v)=σ(Wv+b) (5.6)
其中,σ(x)=(1+e−x)−1是元素级逻辑sigmoid函数。对二进制可见层神经元,我们可以通过完全对称的推导得到以下公式:
P(v=1|h)=σ(WTh+a) (5.7)
对高斯可见层神经元,条件概率P(h=1|v)和公式(5.6)相同,然而,P(v|h)由以下公式估计:
![](https://epubservercos.yuewen.com/98014D/18685354608165306/epubprivate/OEBPS/Images/38143-00-101-2.jpg?sign=1739294019-tqo8Y6BEVCs0iUipQO3WYBTHIXPvqdFy-0-94a862fc06f4e2088326577b50a13219)
这里I是一个合适大小的单位矩阵。
注意到公式(5.6)和公式(4.1)有着相同的形式,而与所用输入是二进制值还是实数值无关。这允许我们使用RBM的权重来初始化一个使用sigmoid隐层单元的前馈神经网络,因为RBM隐层单元的计算和深层神经网络的前向计算等价。
5.1.1 受限玻尔兹曼机的属性
一个RBM可以被用来学习输入集合的概率分布。在讨论RBM中可见层向量的概率表达式之前,为了方便起见,首先定义一个被称为自由能量(free energy)的量
![](https://epubservercos.yuewen.com/98014D/18685354608165306/epubprivate/OEBPS/Images/38143-00-101-3.jpg?sign=1739294019-6tR8BYF9M5gHy5EFrjeGvo4qwZjECUTH-0-57f6ec36cad3f9d8727f5fc117a1fd91)
使用F(v),我们可以把边缘概率P(v)写成
![](https://epubservercos.yuewen.com/98014D/18685354608165306/epubprivate/OEBPS/Images/38143-00-102-1.jpg?sign=1739294019-V6UgHUUP7MBbX8c5SG3zj1Ky2XdXTUjy-0-f8834ebb7342c19f826ab17fbc93b346)
如果可见层神经元取实数值,那么边缘概率密度函数是
![](https://epubservercos.yuewen.com/98014D/18685354608165306/epubprivate/OEBPS/Images/38143-00-102-2.jpg?sign=1739294019-qkupZWCqsdKylz9mT60JG2yJo1094qnU-0-c425895450d8a27f495381cec0035cba)
当RBM不包含隐层神经元时,这是一个均值为a、方差为1(Unit Variance)的高斯分布,如图5-2(a)所示。注意到
![](https://epubservercos.yuewen.com/98014D/18685354608165306/epubprivate/OEBPS/Images/38143-00-102-3.jpg?sign=1739294019-lKjenciRvXYXYC6AoyfyEscTl8ChoNgt-0-862fb81fa2e07f2aa8719c82eeb42069)
这里n是隐层神经元的数量。这意味着在新的隐层神经元加入而模型的其他参数都固定的情况下,原始分布发生尺度变化而分布类型相同的一个副本被放置在了由Wn, *决定的方向上。图5-2(b)至图5-2(d)显示的是具有1到3个隐层神经元时的边缘概率密度分布。显然,RBM把可见层输入表示成了一个由多个方差为1的高斯分量组成的混合高斯模型,这些高斯分量的个数是指数级的。与传统的混合高斯模型(GMMs)相比,RBM使用了更多的混合分量。然而,传统的混合高斯模型可以为不同的高斯分量使用不同的方差来表示这个分布。既然高斯-伯努利RBM可以像混合高斯模型一样表示实值数据的分布,RBM就可以作为替换混合高斯模型的生成模型。举例来说,RBM已经被成功应用在了近期的一些语音合成(Text-to-speech,TTS)系统中[198]。
![](https://epubservercos.yuewen.com/98014D/18685354608165306/epubprivate/OEBPS/Images/38143-00-103-1.jpg?sign=1739294019-U8ojXIHgH9U0SFdoMQgyF6NDR0dWL2VX-0-92d4ed00262e724e7d804da539a9d36d)
图5-2 由高斯-伯努利受限玻尔兹曼机表示的边缘概率密度分布
给定由可见层神经元表示的训练样本,RBM可以学习特征不同维度间的相关性。举例来说,如果可见层神经元表示的是一篇文章中出现的单词,如图5-3所示,在经过训练之后,隐层神经元会表示主题。每个隐层神经元把同一篇文章中同时出现的一些词分成一组,这些词会在特定主题的文章中出现。可见层神经元之间的关系得以通过与它们相连的隐层神经元被表示出来。一个利用了这个性质的高级主题模型可以在文献[199]中找到。隐层神经元可以看作对原始特征的一种新的表示,它与可见层的对原始特征的表示是不同的,因此,RBM同样可以用来学习不同的特征表示[200]。
![](https://epubservercos.yuewen.com/98014D/18685354608165306/epubprivate/OEBPS/Images/38143-00-103-2.jpg?sign=1739294019-PQYRZbRY96LO9VMuVtGu1S5ZBFgjcTj4-0-df09e11d76964fe85e14aa0ebd7b511f)
图5-3 使用受限玻尔兹曼机来学习词之间的相关性
注:每个可见层神经元表示一个词,如果这个词在文章中已出现,则这个神经元的值取1,否则取0。经过学习,每个隐层神经元表示一个主题
尽管在我们的描述中,神经元被区分成了可见层神经元和隐层神经元,但在一些应用中,可见层神经元也许不可见,而隐层神经元可以被观察到。举例来说,如果可见层神经元表示用户,隐层神经元表示电影,可见层神经元A和隐层神经元i之间的连接可能表示“用户A喜欢电影i”。在很多应用中,例如,在协作式过滤中[201],一些连接可见,而另一些不可见。通过训练数据集学习的RBM可以被用来预测那些不可见的连接,并用来向用户推荐电影。
5.1.2 受限玻尔兹曼机参数学习
为了训练RBM,我们使用随机梯度下降(Stochastic Gradient Descent,SGD)算法[191]来极小化负对数似然度(Negative Log Likelihood,NLL)
![](https://epubservercos.yuewen.com/98014D/18685354608165306/epubprivate/OEBPS/Images/38143-00-104-1.jpg?sign=1739294019-Ap6H0aPxrrX8wx5TmbCC0QZlY68ZH8KJ-0-5b88eb3cd71d69bd222de9c061c29e20)
并通过下面的公式更新参数:
![](https://epubservercos.yuewen.com/98014D/18685354608165306/epubprivate/OEBPS/Images/38143-00-104-2.jpg?sign=1739294019-M3hCX4AcgxSHjSQsgTngNS0hTDY4AX5f-0-5a984db05b0a7b44c4b084424b69ad65)
这里ε是学习率,并且
![](https://epubservercos.yuewen.com/98014D/18685354608165306/epubprivate/OEBPS/Images/38143-00-104-3.jpg?sign=1739294019-fsyJCnFRt1p4UnQH5mi0k0MaxLiKvqZ3-0-d5b87964eccc347c28c1b670f0927c75)
这里ρ是惯性系数(Momentum),Mb是批量(Minibatch)的大小,而是负对数似然度准则下参数W、a和b的梯度。
与DNN不同,在RBM中对数似然度的梯度并不适于精确计算。负对数似然度关于任意一种模型参数的导数的一般形式是
![](https://epubservercos.yuewen.com/98014D/18685354608165306/epubprivate/OEBPS/Images/38143-00-104-5.jpg?sign=1739294019-mewmJxoleiexnEwCkbDimAq06OooN0Jp-0-5b999350021332f586f6cd792b14cc7f)
这里θ是某种模型参数,而〈x〉data和〈x〉model是分别从数据和最终模型中估计x的期望值。特别地,对于可见层神经元-隐层神经元的权重,我们有
![](https://epubservercos.yuewen.com/98014D/18685354608165306/epubprivate/OEBPS/Images/38143-00-105-1.jpg?sign=1739294019-P7Fu1DX6PhYJx3UeONJKwfBRiVnRSdTF-0-236c6560350bbea4ad0517704b0d9000)
第一个期望〈vihj〉data是训练数据中可见层神经元vi和隐层神经元hj同时取1的频率,而〈vihj〉model是类似的期望值,只是这个期望值是以最终模型定义的分布来求得的。不幸的是,当隐藏层神经元的值未知时,〈.〉model这一项需要花费指数时间来精确计算,因此,我们不得不使用近似方法。
RBM训练中被使用最广的有效近似学习算法是在文献[202]中描述的对比散度(Contrastive Divergence,CD)算法。对可见层神经元-隐层神经元权重的梯度的一步对比散度近似是
![](https://epubservercos.yuewen.com/98014D/18685354608165306/epubprivate/OEBPS/Images/38143-00-105-2.jpg?sign=1739294019-RcH3P9XWk4X1zPQPs2UsmS8t6QJeKcl2-0-116bb4e3febf95d25025c6c0e130c8fa)
这里〈.〉∞和〈.〉1分别表示在吉布斯采样器运行了无穷次和一次之后得到的采样上估计的期望。〈vihj〉data和〈vihj〉1的计算过程分别被称为正阶段和负阶段。
图5-4阐明了采样过程和对比散度算法。在第一步中,吉布斯采样器通过一个数据样本被初始化。接着,它依据公式(5.6)定义的后验概率P(h|v)由可见层采样生成一个隐层采样。根据RBM的类型是伯努利-伯努利RBM或高斯-伯努利RBM,我们使用相应的公式(分别是公式(5.7)和公式(5.8))定义的后验概率P(v|h),可以基于当前隐层的采样,继续生成一个可见层的采样。这个过程可能反复多次。如果吉布斯采样器运行无穷次,则其真实期望〈vihj〉model可以从老化(Burn-in)阶段之后生成的采样中估计:
![](https://epubservercos.yuewen.com/98014D/18685354608165306/epubprivate/OEBPS/Images/38143-00-105-3.jpg?sign=1739294019-lNRgObaSgj37AjtlTalP9yrbsJabbvZ0-0-208d29dfb2570e5bcaaa51dfcdf4f883)
![](https://epubservercos.yuewen.com/98014D/18685354608165306/epubprivate/OEBPS/Images/38143-00-106-1.jpg?sign=1739294019-QSWp9ie3gLLJ7bBiNZbr0xJBgEkmQCR7-0-69bfd58b4a7d9b85ad4e0f1f7ba72cd5)
图5-4 对比散度算法图示
这里Nburn是达到老化阶段所需的步数,而N是老化阶段之后生成的采样次数(可能是巨大的)。然而,运行很多步吉布斯采样器是低效的。我们可以只运行一次吉布斯采样器,用一个非常粗略的近似〈vihj〉1来估计〈vihj〉model,即
![](https://epubservercos.yuewen.com/98014D/18685354608165306/epubprivate/OEBPS/Images/38143-00-106-2.jpg?sign=1739294019-MvW0DTiOf3FdSKEf7vVDpJhFM2bnjdKl-0-919920f560741b08c77eb144a8b3ae26)
然而,〈vihj〉1具有很大的方差。为了减小方差,我们可以基于以下公式估计〈vihj〉model,即
![](https://epubservercos.yuewen.com/98014D/18685354608165306/epubprivate/OEBPS/Images/38143-00-106-3.jpg?sign=1739294019-DOthvVLh9hQW4RdDcIFzugO1emIEULBa-0-61439d9599a827cf7a46b22a7b7c3104)
这里~表示从中采样,v0是训练数据集的一个采样,期望运算符是元素级运算。不同于朴素方法中根据P(v|h0)和P(h|v1)进行采样,我们采用平均场逼近(Mean-field Approximation)方法直接生成采样v1和h1。换句话说,这些采样现在不限于二进制值,而是可以取实数值。同样的技巧也可以被应用在
![](https://epubservercos.yuewen.com/98014D/18685354608165306/epubprivate/OEBPS/Images/38143-00-106-4.jpg?sign=1739294019-FbtIPIX9XbOnmb9ufXGcRp24uPasC3J7-0-7f65fb6f0a586f17fcc832074c8d6665)
如果使用了N(通常是一个比较小的数)步对比散度,则在生成可见层向量的时候都可以使用期望值,在需要隐层向量时都可以使用采样技术,除了最后一次使用的是期望向量。
在伯努利-伯努利RBM中,模型参数a和b的更新规则可以简单地通过把公式(5.20)中的替换为合适的梯度导出。完整的梯度估计写成矩阵形式是
![](https://epubservercos.yuewen.com/98014D/18685354608165306/epubprivate/OEBPS/Images/38143-00-107-1.jpg?sign=1739294019-j67DGtSPtWxJkwH592kT4e8pXe4c88R6-0-8bffde993b436be8f199f1f66ef9742a)
CD算法也可以用来训练高斯-伯努利RBM。唯一的区别是,在高斯-伯努利RBM中,我们使用公式(5.8)来估计后验分布的期望值E(v|h)。算法5.1总结了应用对比散度算法训练RBMs的关键步骤。
![](https://epubservercos.yuewen.com/98014D/18685354608165306/epubprivate/OEBPS/Images/38143-00-107-2.jpg?sign=1739294019-qDVCwMEesyKHYDyKeqVQLkEiUT13Jx51-0-81984f05cff792d836ec60f0f12b9eb3)
与DNN训练类似,有效的RBM训练也需要考虑一些实际问题。很多在4.3节中进行的讨论都能被应用到RBM训练中。可以在文献[50]中找到一份训练RBM的综合性实践指南。