前言
最近准备东大IME项目面试,正在读Automatic Speech Recognition,在HMM的部分中遇到了一些比较复杂的数学过程,这里简单写一些笔记。
背景知识
前向概率:
αt(i)=P(qt=i,o1t),t=1,...,T
后向概率:
βt(i)=P(ot+1T∣qt=i),t=1,...,T−1
其中oab表示观测序列(oa,oa+1,...,ob)
利用前向和后向概率可以递推的计算马尔科夫链中的P(o1T),否则几乎其时间复杂度几乎不可接受。
其递推式为分别为
αt(j)=i=1∑Nαt−1(i)aijbj(ot),t=2,3,...,T;j=1,2,...,N
βt(i)=j=1∑Nβt+1(j)aijbj(ot+1),t=T−1,T−2,...;i=1,2,...,N
另外,由定义我们不难得到初值。对于α,有
α1(i)=P(q1=i,o1)=P(q1=i)P(o1∣q1)=πibi(o1)
对于β,因为在定义域之外,我们选择βT(i)=1
其中,bi(o1)表示当前状态为i时观测结果为o1的概率,而πi表示马尔科夫链的稳定分布(stationary distribution),即当t→∞时pi(t)的值
而定义了前向和后向概率后,我们可以将P(o1T)分解,有
P(qt=i,o1T)=P(qt=i,o1t,ot+1T)=P(qt=i,o1t)P(qt=i,ot+1T∣o1t,qt=i)=P(qt=i,o1t)P(qt=i,ot+1T,qt=i)=αt(i)βt(i)
注意到第二行到第三行成立是因为在特定状态下观测是独立同分布(IID)的。
由此有
P(o1T)=i=1∑NP(qt=i,o1T)=i=1∑Nαt(i)βt(i)
注意到这里的t,即α和β的分断点是任意选择的,那么我们只要令t=T就有
P(o1T)=i=1∑NαT(i)
EM算法
背景
考虑全数据y=o,h,其中o是观测到的数据,而h是隐藏的变量。那么要找到参数θ,我们需要最大化其对数似然函数logp(o;θ),但是这个概率分布函数是相对难以计算的,因此EM算法试图迭代地处理全数据y,再通过建立y到o的映射o=g(y)来解决问题。而全数据的选择对于不同的问题通常具有其独特性。
而通过合理的选择隐数据h,可以配合观测数据o来构造全数据y,这样可以简化似然估计的过程。
考虑以下条件期望
Q(θ∣θ0)=Eh∣o[logp(y;θ)o;θ0]=E[logp(o,h;θ)∣o;θ0]
对h在其所有的可能性上求和(如果是连续的则为积分)就可以得到似然函数的值。注意到这个似然函数的值是与θ0相关的,相当于在初值θ0的基础上计算得到了一个新的θ,而可以保证θ是收敛的,即$$Q(\theta|\theta_{k+1})\ge Q(\theta|\theta_k)$$,仅在θk已是一个最大似然估计时取到等号。
Baum-Welch 算法
如在上一节中所述,对于EM算法我们需要一个观测数据和一个隐藏数据来构造全数据,对于HMM来说,分别为观测序列o1T和隐马尔科夫链状态序列q1T,代入公式则有
Q(θ∣θ0)=E[logp(o1T,q1T;θ)∣o1T;θ0]
E步骤
在E步骤中,需要将Q(θ∣θ0)化简到便于在M步骤中最大化的形式。将期望展开则有
Q(θ∣θ0)=E[logp(o1T,q1T;θ)∣o1T;θ0]=q1T∑P(q1T∣o1T,θ0)logP(o1T,q1T∣θ)
,其中θ和θ0表示当次和上一次迭代中的参数
由于在高斯混合HMM中,P(o1T∣q1T)服从高斯分布,但其形式过于复杂,为了方便简写,我们令
Nt(i)=−2Dlog(2π)−21log∣Σi∣−21(ot−μi)TΣ−1i(ot−μi)
则
logP(o1T∣q1T)=t=1∑TNt(qt)
同时,由转移概率aij的定义可以得到P(q1T)=∏t=1T−1aqtqt+1,因此有
logP(o1T,q1T∣θ)=logP(o1T∣q1T)P(q1T)=t=1∑TNt(qt)+t=1∑T−1logaqtqt+1
回代到Q的定义式中有
Q(θ∣θ0)=q1T∑P(q1T∣o1T,θ0)t=1∑TNt(qt)+q1T∑P(q1T∣o1T,θ0)t=1∑T−1logaqtqt+1
首先引入克罗内克δ函数(Kronecker delta)
δij={10(i=j),(i=j)
由于δ仅在一个点上取到非0值,因此乘上它并不会改变函数的值。所以可以利用构造一个合适的δ函数并调换乘项位置来化简Q.
在本例中,对Q的第一项有
Q1(θ∣θ0)=i=1∑N⎩⎨⎧q1T∑P(q1T∣o1T,θ0)t=1∑TNt(qt)⎭⎬⎫δqt,i=i=1∑N⎩⎨⎧q1T∑P(q1T∣o1T,θ0)δqt,it=1∑TNt(qt)⎭⎬⎫=i=1∑Nt=1∑TP(qt=i∣o1T,θ0)Nt(qt)
同理,对Q的第二项乘上δqt,iδqt+1,j可得
Q2(θ∣θ0)=i=1∑Nj=1∑Nt=1∑T−1P(qt=i,qt+1=j∣o1T,θ0)logaij
由此,不难注意到Q的两项分别只与高斯分布(Nt(I))和马尔科夫链(aij)有关,因此可以独立的最大化这两项。
令Q1和Q2中连加时使用的权分别为
γt(i)ξt(i,j)=P(qt=i∣o1T,θ0)=P(qt=i,qt+1=j∣o1T,θ0)
则由其定义,不难得出
ξt(i,j)=P(o1T∣θ0)αt(i)βt+1(j)aijexp(Nt+1(j)),t=1,2,...,T−1.
由定义式,显然的,对ξt在j上求和就可以得到γ
γt(i)=j=1∑Nξt(i,j),t=1,2,...,T−1.
又由定义可以直接得到
γT(i)=P(qT=i∣o1T,θ0)=P(o1T∣θ0)P(qt=i,o1T∣θ0)=P(o1T∣θ0)αT(i)
由此将Q化简为了只要对状态i或状态对i,j遍历的便于计算的形式,以在M步骤中处理。
M步骤
在M步骤中需要将E步骤中得到的Q1和Q2的值在θ0下最大化。对于Q2,令∂aij∂Q2=0。由于有边界条件∑j=1Naij=1,使用标准拉格朗日乘数法可以得到
a^=∑t=1T−1γt(i)∑t=1T−1ξt(i,j)
具体计算步骤略去。
而对Q1,我们省掉与优化无关的常数项和常数系数后可以得到等价的目标函数
Q1(μi,Σi)=i=1∑Nt=1∑Trγt(i)(ot−μi)TΣ−1i(ot−μi)−21log∣Σi∣
省略的部分包括高斯分布中与Σ无关的项,以及最后一项的系数(显然的有∑i=1Nγt(i)=1,那么再过一次求和之后仍然是常数,求导之后会被消去)
则相等于解
∂Σi∂Q1=0,i=1,2,...,N.
令K=Σ−1,则对log∣Σi∣项,klm的导数就是Σ中对应的项,即σlm,于是单项的导数∂klm∂Q1=0,即
t=1∑Tγt(i){21σlm−21(ot−μi)l(ot−μi)m}=0
将σlm解出并写成矩阵形式有
Σ^i=∑t=1Tγt(i)∑t=1Tγt(i)(ot−μ^i)(ot−μ^i)T
从而有
μ^i=∑t=1Tγ(i)∑t=1Tγt(i)ot
Viterbi算法
Viterbi算法用于解码HMM状态,即,已知一个观测o1T,求出最可能的HMM状态序列q1T
其核心思想是动态规划,由于这个算法在OI中相当常见就不再赘述其背景了。
在Viterbi算法中,我们要最大化的量是
δi(t)=q1,q2,...,qt−1maxP(o1t,q1t−1,qt=i)
也就是对于观测序列o1t,假设t时刻之前的HMM状态序列为q1t−1的情况下,t时刻状态为i的概率。
而有了t时刻的状态i的目标函数则可以简单的得到下一时刻状态j下的目标函数表达式,即
δj(t+1)=imaxδi(t)aijbj(ot+1)
这个式子的三项分别为:转移前的状态i的概率,从前状态i转移到该状态j的概率,以及对于相应的观测ot+1,该时刻处于状态j的概率。
由此迭代到T时刻就可以得到最大概率P∗,以及所有时刻的状态路径q∗(t)
如果曾经有做过DP相关的题目这部分应该不难理解。
至此,利用EM算法和Viterbi算法,我们就完成了对HMM参数的估计以及隐参数HMM状态序列的解码。