![人工智能:语音识别理解与实践](https://wfqqreader-1252317822.image.myqcloud.com/cover/51/35011051/b_35011051.jpg)
3.4 期望最大化算法及其在学习HMM参数中的应用
3.4.1 期望最大化算法介绍
尽管采用HMM作为声学特征序列的模型有一些不符合实际的假设,但它仍被广泛应用于语音识别。其中最重要的一个原因就是BaumWelch算法在20世纪60年代被发明[111]。该算法也是通用的期望最大化(Expectation-Maximization,EM)算法[55]的一个著名实例,用于高效地从数据中训练得到HMM参数。在该节中,我们将首先讨论EM算法的一些基本点。然后讨论它在HMM参数变量估计问题中的应用,这种特殊形式的EM算法就被称为Baum-Welch算法。对于更详细的EM算法及其应用的学习材料,可参见文献[46, 56, 58, 60, 93]。
当统计模型中含有潜在或隐藏的随机变量时,最大化似然度估计就会变得比较困难,EM算法则显得更具有效率。我们定义“完整数据”为y={o, h},其中o是观察值(例如,语音特征序列值),h是隐藏随机变量(例如,非观察的HMM状态序列)。这里我们要解决的问题是对未知的HMM模型参数θ的估计,而这就需要最大化对数似然度,即lgp(o; θ)。但是,这个问题的对数似然度要么最大化过程太困难,要么很难找到PDF自身的表达式。在这种情况下,如果能找到完整数据y的一种PDF近似表达式,这种表达式就可以比较容易地被优化并且具有闭合解析解,可以用迭代的方法来逐步解决观察数据似然度的优化问题。通常,我们可以很容易找到一个从完整数据到不完整数据的映射:o=g(y)。但具体映射并不显而易见,除非我们能够对完整数据集给出一个确切的定义。不幸的是,完整数据的集合组成的定义常常是和问题相关的,并且通常需要与算法的某些独特的设计相关。
EM算法出现的一个重要原因是我们希望避免直接优化观察数据o的PDF,因为直接计算太困难。为了实现EM算法的目标,我们为观测数据o补充了一些假想的缺失数据(也称隐藏数据)h,它们共同组成了完整数据y。这样做的目的是通过引入合理的隐藏数据h,我们可以针对完整数据y来进行优化,而不是直接使用原始的观察数据o,这会比优化o的对数似然度的问题更易于解决。
一旦我们定义了完整数据y,针对lgp(y; θ)的表达式就能够被比较简单地推导出来。但我们不能够直接去最大化lgp(y; θ)中的θ,因为毕竟真正的y并不能被直接观察,我们只能观察到o。但如果我们能够获得一个针对θ的较好的估计值,就可以计算得到在该估计值和观察数据条件下的lgp(y; θ)的期望,如公式(3.28)所示:
![](https://epubservercos.yuewen.com/98014D/18685354608165306/epubprivate/OEBPS/Images/38143-00-060-1.jpg?sign=1738839648-WWjRyoa3YenoilOFOfoPAeQlur7tWWXf-0-18d0a7d8e74975a29101f2167c858a40)
进而可以最大化该期望值,而不是最大化原始的似然度估计值,以便得到下一个最佳的θ估计值。注意,这个估计值来自之前得到的θ0估计值。
使用公式(3.28)来计算连续隐藏向量h情况下的条件期望值,我们可以得到
![](https://epubservercos.yuewen.com/98014D/18685354608165306/epubprivate/OEBPS/Images/38143-00-060-2.jpg?sign=1738839648-uPPDa142j0EsuPZfPnQlBh0dp9vIM600-0-0f5b598bb9acbdf2767103baecea4e90)
当隐藏向量h取值离散时,公式(3.28)变为
![](https://epubservercos.yuewen.com/98014D/18685354608165306/epubprivate/OEBPS/Images/38143-00-061-1.jpg?sign=1738839648-cN8UmC5xYW8w45QkXHsmePhhOB2kW7u2-0-1402e677dbea3b588c83cb4e3e03ee1f)
这里的P(h|o; θ0)是一个给定初始参数估计θ0后的条件分布,同时求和是针对所有可能的h向量来做的。
给定初始参数θ0,EM算法在E步骤上做迭代和参数替换,以便通过计算找到针对条件期望值和充分统计量的适当表达式,M步骤则用来求取使得E步骤得到的条件期望值最大时对应的参数。E和M步骤反复迭代,直到算法收敛,或者满足条件。
EM算法(在较松弛的条件下)可以被证明是收敛的,因为针对完整数据的平均对数似然度在每次迭代中必然不会减少,也即满足
![](https://epubservercos.yuewen.com/98014D/18685354608165306/epubprivate/OEBPS/Images/38143-00-061-2.jpg?sign=1738839648-cswuOqbgEx2IBYJ2Jw6zLcH3DgFiDTRE-0-a7d0d1e21e393ea4f23beea2e1ab26a7)
上式中,在θk已经是一个最大似然度的估计值时取等号。
所以EM算法最主要的特性如下所述。
• 它提供的仅是一个局部而非全局的针对局部观察值的似然度最优化结果。
• 算法需要提供针对未知变量的初始化值,同时对大部分迭代过程来说,一个好的初始化值能够带来更好的收敛和最大化似然度估计结果。
• 对完整数据集的选择是需要根据实际情况来进行变更的。
• 即使lgp(y; θ)能够被简单地表达为近似形式,通常寻找一个针对期望值的近似表达式也是困难的。
3.4.2 使用EM算法来学习HMM参数——Baum-Welch算法
下面将讨论最大似然参数估计,特别是EM算法,应用于解决HMM参数的学习问题。由上文的介绍可知,EM算法是一种通用的用于解决最大化似然度估计的迭代方法,而当隐藏变量存在时,将得到一组局部最优解。当隐藏变量符合马尔可夫链的形式时,EM算法即可被推导为Baum-Welch算法。下面将使用一个高斯分布HMM来描述推导E步骤和M步骤的过程,而针对通常情况下EM算法的完整数据包含了观察序列和隐马尔可夫链状态序列,例如,。
每一轮针对不完整数据问题(也包括下面讨论的HMM参数估计问题)的EM算法迭代都包含两个步骤。在Baum-Welch算法中需要在E步骤中计算得到下面的条件期望值,或称之为辅助函数Q(θ|θ0):
![](https://epubservercos.yuewen.com/98014D/18685354608165306/epubprivate/OEBPS/Images/38143-00-062-2.jpg?sign=1738839648-wYsIbemB1fhYWYji9yZQgbt2UpQtUJq1-0-9adc3496d1ef1d4b082f5f757da82648)
这里的期望值通过隐藏状态序列来确定得到。为了使EM算法有效,Q(θ|θ0)需要足够简化。而模型参数的估计在M步骤中通过最大化Q(θ|θ0)来完成,这相对于直接最大化
来说,进行了极大的简化。
通过对上述两个步骤的迭代,将得到模型参数的最大似然度估计,而这个过程将通过优化来实现。这个表达式是Baum不等式[111]直接推导得到的结果,其推导如下:
![](https://epubservercos.yuewen.com/98014D/18685354608165306/epubprivate/OEBPS/Images/38143-00-062-6.jpg?sign=1738839648-YMy7EZWkoibOQJpeuJ28iMJwxm579HdB-0-90a5b0976f2017464a0204fa021cafa8)
下面将给出高斯HMM在EM算法中E和M步骤的形式,以及其详细推导。
E步骤
E步骤的目的是简化条件期望值Q(θ|θ0),使其成为适合直接做最大化的形式,以便用于M步骤。下面先明确写出基于状态序列的加权求和的期望值Q(θ|θ0)的表达式:
![](https://epubservercos.yuewen.com/98014D/18685354608165306/epubprivate/OEBPS/Images/38143-00-062-8.jpg?sign=1738839648-l2un04wao3vGVAfyuqqnSOoT4i5MB0mw-0-505d50deeb2bcb53060cd5fa589e2c01)
这里的θ和θ0分别表示当前及前一轮EM迭代中的HMM参数。为了简化书写
![](https://epubservercos.yuewen.com/98014D/18685354608165306/epubprivate/OEBPS/Images/38143-00-062-9.jpg?sign=1738839648-O4yDF3cMHUutBSfnXNz3bM8vnb8T7PMA-0-166d3b6f09c987f609e6effd4cdf6274)
这就是状态i的对数高斯PDF。
![](https://epubservercos.yuewen.com/98014D/18685354608165306/epubprivate/OEBPS/Images/38143-00-063-1.jpg?sign=1738839648-bzFRDt2RsBadQ8fxew10QJFZVPciWbpD-0-653a5a4a2b0ceaef72c5bc7e18328d52)
于是公式(3.32)中的条件期望值可以被重新写为
![](https://epubservercos.yuewen.com/98014D/18685354608165306/epubprivate/OEBPS/Images/38143-00-063-2.jpg?sign=1738839648-CHTp6FfCMPKDQCn6VyixuFIAg340dsHS-0-eb136ca03b82f6366bb3f02ee2ca4538)
为了简化Q(θ|θ0),我们将公式(3.33)的第1部分写为
![](https://epubservercos.yuewen.com/98014D/18685354608165306/epubprivate/OEBPS/Images/38143-00-063-3.jpg?sign=1738839648-4AH9ZcCTWEA45oB2QCQidLrLqfdr90ZL-0-af32b88ea62257174a1888605cdeb945)
第2部分写为
![](https://epubservercos.yuewen.com/98014D/18685354608165306/epubprivate/OEBPS/Images/38143-00-063-4.jpg?sign=1738839648-Ft9ftT1hX232kYAkNY5kTrQhmgjrUBfH-0-730294ade64e6712120696d4ba89fca6)
这里的δ表示克罗内克函数(Kronecker Delta Function)。现在先看公式(3.34)。通过代换求和及使用如下显而易见的条件
![](https://epubservercos.yuewen.com/98014D/18685354608165306/epubprivate/OEBPS/Images/38143-00-063-5.jpg?sign=1738839648-ACkvSebmuaVXGeUBT2d7LlKmIhROjeAV-0-e0055352c9659f64bc8b51742412d774)
通过对公式(3.35)中的Q2(θ|θ0)做相似的简化,可以得到下面的结果:
![](https://epubservercos.yuewen.com/98014D/18685354608165306/epubprivate/OEBPS/Images/38143-00-063-6.jpg?sign=1738839648-eSbmKs5fOMurPlZIVFL5DKkfk8qkXqKe-0-d8c4d4a4ecc2d92fc3ef16b011d409bf)
我们注意到,在最大化Q(θ|θ0)=Q1(θ|θ0)+Q2(θ|θ0)时,这两个式子可以分别被最大化。Q1(θ|θ0)只包含高斯参数,而Q2(θ|θ0)仅包含马尔可夫链的参数。也就是说,在最大化Q(θ|θ0)时,公式(3.36)和公式(3.37)中的权重,或者说和ξt(i, j)=P(qt=i, qt+1=
,可以分别被认为是对方的已知常数,这是由于参数θ0的特定条件。因此,它们可以用预先计算好的前后向概率来高效地得到。高斯HMM中的后验状态转移概率为
![](https://epubservercos.yuewen.com/98014D/18685354608165306/epubprivate/OEBPS/Images/38143-00-064-3.jpg?sign=1738839648-3aHInToeLEXpoXxy6oJOXaRq7JQDM2FL-0-772a56b6128ef57b97f3753d87e25689)
对t=1, 2, ..., T−1(注意到ξT(i, j)并没有定义),后验状态占用概率(Posterior State Occupancy Probability)可以通过对ξt(i, j)在所有的终点状态j上求和而得到:
![](https://epubservercos.yuewen.com/98014D/18685354608165306/epubprivate/OEBPS/Images/38143-00-064-4.jpg?sign=1738839648-5prfRPrA1oJJ0nEFc9NKl9epbTjTPjI4-0-c66cb802fe8623840ea2f641327bca0a)
对t=1, 2, ..., T−1,γT(i)则可以通过它的特定定义得到:
![](https://epubservercos.yuewen.com/98014D/18685354608165306/epubprivate/OEBPS/Images/38143-00-064-5.jpg?sign=1738839648-VDwXyuqWC02rrtUdrNQcUYfNR1dqlmLD-0-9cb6c77cdbc9bd5d4f7e32804e81dda1)
注意到对从左到右传播的HMM,在i=N时,γT(i)只有一个值为1,而其余值为0。
进一步,我们注意到在公式(3.36)和公式(3.37)中的求和是在状态i或状态对(i, j)上进行的,这相比在状态序列上得到了极大的简化(相比Q1(θ|θ0)和Q2(θ|θ0)在公式(3.33)中未简化的形式)。公式(3.36)和公式(3.37)都是简化后的辅助目标函数,并可以用于在M步骤中做最大化,我们将在下面详细讨论。
M步骤
高斯HMM马尔可夫链转移概率的重估计公式可以通过令得到,对于公式(3.37)中的Q2及对于i, j=1, 2, ..., N,使其服从
=1的约束条件。标准的拉格朗日乘子方法将使重估计公式变为
![](https://epubservercos.yuewen.com/98014D/18685354608165306/epubprivate/OEBPS/Images/38143-00-064-9.jpg?sign=1738839648-DSUaRXMJ71bW4OD6v6caqlEwiQuKlmqn-0-91222c57ba3b0f431d3bc99baf2a3b09)
其中,ξt(i, j)和γt(i)根据公式(3.38)和公式(3.39)计算得到。
为了推导状态相关的高斯分布参数的重估计公式,我们首先去掉公式(3.36)的Q1中与优化过程无关的式子和因子。之后就得到了一个等价的优化目标函数
![](https://epubservercos.yuewen.com/98014D/18685354608165306/epubprivate/OEBPS/Images/38143-00-065-1.jpg?sign=1738839648-U96uiFJeEGM75WFHF6aULOjol5itd7vT-0-8239b09eb5b580aeed37e9704846e95e)
协方差矩阵的重估计公式就可以通过解下面的方程来得到:
![](https://epubservercos.yuewen.com/98014D/18685354608165306/epubprivate/OEBPS/Images/38143-00-065-2.jpg?sign=1738839648-9bV46iBrr5TqcCVbnlYGH0hRYcuP3kfQ-0-f9b4ee74201d630513d92bbf1ec8f0a8)
这里i=1, 2, ..., N。
为了解这个方程,我们采用了变量转换的技巧:令K=Σ−1(为了简化,我们忽略了状态角标i),之后可将Q1视为K的一个方程。已知lg|K|(公式(3.36)中的一项)针对K的第lm项系数求导,其结果是方差矩阵Σ的第lm项系数,也即σlm,那么现在就可以将化简为
![](https://epubservercos.yuewen.com/98014D/18685354608165306/epubprivate/OEBPS/Images/38143-00-065-4.jpg?sign=1738839648-K6LSyGFv2VtAdpwvBPnohn9RHCiL7KQl-0-e6e063c892d41075ffe5a7e370ba6157)
对每一个l, m=1, 2, ..., D,我们将结果写为矩阵形式,就会得到紧凑形式的对状态i的协方差准则的重估计公式如下:
![](https://epubservercos.yuewen.com/98014D/18685354608165306/epubprivate/OEBPS/Images/38143-00-065-5.jpg?sign=1738839648-ERMhHxyr9Xi96oleJZXenVpoi8guwtsc-0-a454d0cc9eb15b33f2714e5e0d97df36)
对每个状态i=1, 2, ..., N,这里的是高斯HMM的均值向量在状态i上的重估计,其中重估计公式可以直接被推导为下面的简单形式:
![](https://epubservercos.yuewen.com/98014D/18685354608165306/epubprivate/OEBPS/Images/38143-00-065-7.jpg?sign=1738839648-HeJUTl9y7CSJiZwWEBoR6XSv0H3vIjy7-0-022b001eaa1f1b09eaada0f8471b4b19)
上面的推导都是针对单高斯HMM的情况。针对GMM-HMM的EM算法,通过认为每一帧中每一状态上的高斯成分是一个隐藏变量,也能够简单推导得到。在第6章将详细描述深层神经网络(DNN)与HMM的融合系统,这其中的观察概率是通过一个DNN来估计得到的。