声学模型学习笔记(一) HMM

“声学模型学习笔记”是《automatic speech recognition a deep learning approach》这本书的读书笔记,会有少量的个人理解和公式详细推导,声学入门狗一枚,不具有指导意义,具体以原书和列出的参考文献为准,欢迎指导和讨论。

HMM含义

Markov Chains

马尔科夫链,表示一个状态到另一个状态转换的随机过程。该过程要求具备“无记忆”的性质:下一状态的概率分布只能由当前状态决定,在时间序列中它前面的事件均与之无关。这种特定类型的“无记忆性”称作马尔可夫性质
假设状态空间 q t ∈ s ( j ) , j = 1 , 2 , . . . , N q_t\in{s^{(j)}, j=1,2,...,N} qts(j),j=1,2,...,N,马尔科夫性质可以表示如下:
P ( q t + 1 = s ( t + 1 ) ∣ q 0 = s 0 , . . . , q t = s t ) = P ( q t + 1 = s ( t + 1 ) ∣ q t = s t ) P(q_{t+1}=s^{({t+1})}|q_{0}=s^{0},...,q_t=s^t)=P(q_{t+1}=s^{({t+1})}|q_t=s^t) P(qt+1=s(t+1)q0=s0,...,qt=st)=P(qt+1=s(t+1)qt=st)
转移概率可以定义如下:
P ( q t = s j ∣ q t − 1 = s i ) = a i j ( t ) , i , j = 1 , 2 , . . . , N P(q_t=s^{j}|q_{t-1}=s^i)=a_{ij}(t), i,j=1,2,...,N P(qt=sjqt1=si)=aij(t),i,j=1,2,...,N
如果转移概率跟t无关,只由i和j决定,那么说马尔科夫链是齐次(homogeneous)的,转移概率矩阵可以写成一下形式:
A = [ a i j ] , w h e r e a i j ≥ 0 , ∀ i , j ; a n d ∑ j = 1 N a i j = 1 , ∀ i A=[a_{ij}], where a_{ij}\ge 0, \forall i,j;and \sum_{j=1}^{N}a_{ij}=1, \forall i A=[aij],whereaij0,i,j;andj=1Naij=1,i

Hidden Markov Sequences

马尔科夫链关注的状态转移概率。比如天气的三个状态分别是{sun, cloud, rain},状态转移概率矩阵如下:
s u n c l o u d r a i n s u n 0.50 0.375 0.125 c l o u d 0.25 0.125 0.625 r a i n 0.25 0.375 0.375 \begin{matrix} & sun & cloud & rain\\ sun & 0.50 & 0.375 & 0.125 \\ cloud & 0.25 & 0.125 & 0.625 \\ rain & 0.25 & 0.375 & 0.375 \end{matrix} suncloudrainsun0.500.250.25cloud0.3750.1250.375rain0.1250.6250.375
马尔科夫链求解的问题是:如果今天晴天(sun),后天下雨(rain)的概率。
马尔科夫链的观察序列和状态序列是一一对应的,具有确定性(比如今天是sun,那么sun的概率将会是1,不可能为cloud或者rain),从而导致马尔科夫链很难去拟合有些现实问题。
为了增加马尔科夫链的随机性,对每一个状态,增加一个观察值的生成概率函数,即为隐马尔科夫序列。使用隐马尔科夫序列去建模解决实际问题,称为Hidden Markov model(HMM)。
同样以上面的例子来讲,比如在封闭的小黑屋里面,无法观察到天气状况,但是小黑屋里面有种的水藻,水藻的状态和天气的存在一定的概率关系,如下:
d r y d r y i s h d a m p s o g g y s u n 0.60 0.20 0.15 0.05 c l o u d 0.25 0.25 0.25 0.25 r a i n 0.05 0.10 0.35 0.50 \begin{matrix} & dry & dryish & damp & soggy \\ sun & 0.60 & 0.20 & 0.15 & 0.05 \\ cloud & 0.25 & 0.25 & 0.25 & 0.25 \\ rain & 0.05 & 0.10 & 0.35 & 0.50 \end{matrix} suncloudraindry0.600.250.05dryish0.200.250.10damp0.150.250.35soggy0.050.250.50
此时,我们可以把天气状况当成隐状态,把水藻的状况当成观察值,通过观察值来预测隐状态(天气状态)的序列,马尔科夫链转变成为隐马尔科夫模型。
不难隐马尔科夫模型有两方面的随机性:底层隐藏的随时间改变的马尔科夫过程(天气状态的变化过程);与隐藏状态存在某种映射关系的可观察状态集合(天气状态和水藻状态的关系)。

HMM公式

假设状态序列 q 1 T = ( q 1 , . . . , q T ) q_{1}^{T}=(q_1,...,q_T) q1T=(q1,...,qT),观察序列 o 1 T = ( o 1 , . . . , o T ) o_1^T=(o_1,...,o_T) o1T=(o1,...,oT),hmm的三要素 λ = ( A , B , π ) \lambda=(A,B,\pi) λ=(A,B,π)

  • 转移概率 A = [ a i j ] A=[a_{ij}] A=[aij]
  • 初始状态概率分布 π = [ π i ] \pi = [\pi_{i}] π=[πi]
  • 观察概率 B = [ b i ( k ) ] B=[b_i(k)] B=[bi(k)]:状态i生成观察值 v k v_k vk的概率

hmm需要解决的三个问题

  • 概率计算问题:已知 λ \lambda λ o 1 T o_1^T o1T,求解 P ( o 1 T ∣ λ ) P(o_1^T|\lambda) P(o1Tλ)
  • 学习问题:已知 o 1 T o_1^T o1T q 1 T q_{1}^{T} q1T,求解 λ \lambda λ
  • 预测问题:已知 λ \lambda λ o 1 T o_1^T o1T,求解概率最大的 ( q 1 T ) (q_{1}^{T}) (q1T)

问题一:为问题二的求解打基础

观察概率用混合高斯建模,可以表示如下:
b i ( o t ) = ∑ m = 1 M c i , m ( 2 π ) D / 2 ∣ ∑ i , m ∣ 1 / 2 e x p [ − 1 2 ( o t − μ i , m ) T ∑ i , m − 1 ( o t − μ i , m ) ] b_i(o_t)=\sum_{m=1}^{M}\frac{c_{i,m}}{(2\pi)^{D/2}|\sum_{i,m}|^{1/2}}exp[-\frac{1}{2}(o_t-\mu_{i,m})^T\sum_{i,m}^{-1}(o_t-\mu_{i,m})] bi(ot)=m=1M(2π)D/2i,m1/2ci,mexp[21(otμi,m)Ti,m1(otμi,m)]
其中i表示状态下标,m表示高斯分量的下标。
1.似然概率:
P ( o 1 T ∣ q 1 T ) = ∏ t = 1 T ∑ m = 1 M c i , m ( 2 π ) D / 2 ∣ ∑ i , m ∣ 1 / 2 e x p [ − 1 2 ( o t − μ i , m ) T ∑ i , m − 1 ( o t − μ i , m ) ] P(o_1^T|q_1^T)=\prod_{t=1}^{T}\sum_{m=1}^{M}\frac{c_{i,m}}{(2\pi)^{D/2}|\sum_{i,m}|^{1/2}}exp[-\frac{1}{2}(o_t-\mu_{i,m})^T\sum_{i,m}^{-1}(o_t-\mu_{i,m})] P(o1Tq1T)=t=1Tm=1M(2π)D/2i,m1/2ci,mexp[21(otμi,m)Ti,m1(otμi,m)]
2.状态概率
P ( q 1 T ) = π q 1 ∏ t = 1 T − 1 a q t q t + 1 P(q_1^T)=\pi_{q_1}\prod_{t=1}^{T-1}a_{q_tq_{t+1}} P(q1T)=πq1t=1T1aqtqt+1
3.联合概率
P ( o 1 T , q 1 T ) = P ( o 1 T ∣ q 1 T ) P ( q 1 T ) P(o_1^T, q_1^T)=P(o_1^T|q_1^T)P(q_1^T) P(o1T,q1T)=P(o1Tq1T)P(q1T)
4.观察概率
P ( o 1 T ) = ∑ q 1 T P ( o 1 T , q 1 T ) P(o_1^T)=\sum_{q_1^T}P(o_1^T,q_1^T) P(o1T)=q1TP(o1T,q1T)
随着T的增大,穷举状态序列 q 1 T q_1^T q1T将会指数增加, P ( o 1 T ) P(o_1^T) P(o1T)求解的复杂度也会指数增加,考虑引入前后向算法解决 P ( o 1 T ) P(o_1^T) P(o1T)的求解问题。

1.前向变量

前向概率定义为从开始到t时刻状态i的所有路径的概率和,定义如下:
α t ( i ) = P ( q t = i , o 1 t ) , t = 1 , . . . , T \alpha_t(i)=P(q_t=i,o_1^t),t=1,...,T αt(i)=P(qt=i,o1t),t=1,...,T
初值: α 1 ( i ) = π i b i ( o 1 ) \alpha_1(i)=\pi_ib_i(o_1) α1(i)=πibi(o1)
递推关系: α t ( j ) = ∑ i = 1 N α t − 1 ( i ) a i j b j ( o t ) , t = 2 , 3 , . . . , T \alpha_t(j)=\sum_{i=1}^{N}\alpha_{t-1}(i)a_{ij}b_j(o_t), t=2,3,...,T αt(j)=i=1Nαt1(i)aijbj(ot),t=2,3,...,T
终止: P ( o 1 T ) = ∑ i = 1 N α T ( i ) P(o_1^T)=\sum_{i=1}^N\alpha_T(i) P(o1T)=i=1NαT(i)

2.后向变量

后向概率定义为从t时刻状态i点出发到结尾的所有路径概率和,定义如下:
β t ( i ) = P ( o t + 1 T ∣ q t = i ) , t = 1 , . . . , T − 1 \beta_t(i)=P(o_{t+1}^T|q_t=i),t=1,...,T-1 βt(i)=P(ot+1Tqt=i),t=1,...,T1
初值: β T ( i ) = 1 \beta_T(i)=1 βT(i)=1
递推关系: β t ( i ) = ∑ j = 1 N β t + 1 ( i ) a i j b j ( o t + 1 ) , t = 1 , 2 , . . . , T − 1 \beta_t(i)=\sum_{j=1}^{N}\beta_{t+1}(i)a_{ij}b_j(o_{t+1}), t=1,2,...,T-1 βt(i)=j=1Nβt+1(i)aijbj(ot+1),t=1,2,...,T1
终止: P ( o 1 T ) = ∑ i = 1 N π i b i ( o 1 ) β 1 ( i ) P(o_1^T)=\sum_{i=1}^N\pi_ib_i(o_1)\beta_1(i) P(o1T)=i=1Nπibi(o1)β1(i)

参考[3],不难得出以上关系。
t时刻处在状态i的概率可以用前后向变量表示如下:
P ( q t = i , o 1 T ) = α t ( i ) β t ( i ) P(q_t=i, o_1^T)=\alpha_t(i)\beta_t(i) P(qt=i,o1T)=αt(i)βt(i)
从而可以达到我们的终极目标,求解:
P ( O 1 T ) = ∑ i = 1 N α t ( i ) β t ( i ) P(O_1^T)=\sum_{i=1}^{N}\alpha_t(i)\beta_t(i) P(O1T)=i=1Nαt(i)βt(i)
前后向算法的基本原理是利用递推关系,复用了中间的变量,减少了重复计算。不需要穷举所有的路径就可以完成 P ( O 1 T ) P(O_1^T) P(O1T)的求解。

3.中间变量

两个变量(后面的EM会用到)定义如下:
t时刻处于状态 q i q_i qi的概率: γ t ( i ) = α t ( i ) β t ( i ) ∑ j = 1 N α t ( j ) β t ( j ) \gamma_t(i)=\frac{\alpha_t(i)\beta_t(i)}{\sum_{j=1}^N \alpha_t(j)\beta_t(j)} γt(i)=j=1Nαt(j)βt(j)αt(i)βt(i)
t时刻处在状态 q i q_i qi并且t+1时刻处在 q j q_j qj的概率: ξ t ( i , j ) = α t ( i ) a i j b j ( o t + 1 ) β t + 1 ( j ) ∑ i = 1 N ∑ j = 1 N α t ( i ) a i j b j ( o t + 1 ) β t ( j ) \xi_t(i,j)=\frac{\alpha_t(i)a_{ij}b_j(o_{t+1})\beta_{t+1}(j)}{\sum_{i=1}^N \sum_{j=1}^N\alpha_t(i)a_{ij}b_j(o_{t+1})\beta_t(j)} ξt(i,j)=i=1Nj=1Nαt(i)aijbj(ot+1)βt(j)αt(i)aijbj(ot+1)βt+1(j)

问题二:求解hmm的参数

首先参考[3],简单介绍EM算法:
EM是expectation-maximization的简称,是一种最优化问题的迭代算法,1977年由Dempster等人总结提出,简介参考之前的博文
目标函数采用极大似然估计,极大化观测数据 Y Y Y关于参数 θ \theta θ的对数似然函数
L m a x ( θ ) = l o g P ( Y ∣ θ ) = l o g ∑ Z P ( Y , Z ∣ θ ) = l o g ( ∑ Z P ( Y ∣ Z , θ ) P ( Z ∣ θ ) ) L_{max}(\theta)=log P(Y|\theta)=log \sum_Z P(Y,Z|\theta)=log(\sum_Z P(Y|Z,\theta)P(Z|\theta)) Lmax(θ)=logP(Yθ)=logZP(Y,Zθ)=log(ZP(YZ,θ)P(Zθ))
由于含有隐变量 Z Z Z,所以没有解析解,只能通过迭代的方式求解。假设第 i i i次迭代以后模型参数为 θ i \theta^i θi,我们希望满足 L ( θ ) > L ( θ i ) L(\theta)\gt L(\theta^i) L(θ)>L(θi),即每一次迭代都使得似然函数变大,慢慢逼近极大值点,即:
L ( θ ) − L ( θ i ) > 0 L(\theta)- L(\theta^i) \gt 0 L(θ)L(θi)>0
L ( θ ) − L ( θ i ) = l o g ( ∑ Z P ( Y ∣ Z , θ ) P ( Z ∣ θ ) ) − l o g P ( Y ∣ θ i ) L(\theta)- L(\theta^i)=log(\sum_Z P(Y|Z,\theta)P(Z|\theta))-logP(Y|\theta^i) L(θ)L(θi)=log(ZP(YZ,θ)P(Zθ))logP(Yθi)
= l o g ( ∑ Z P ( Z ∣ Y , θ i ) P ( Y ∣ Z , θ ) P ( Z ∣ θ ) P ( Z ∣ Y , θ i ) ) − l o g P ( Y ∣ θ i ) =log(\sum_Z P(Z|Y,\theta^i) \frac{P(Y|Z,\theta)P(Z|\theta)} {P(Z|Y,\theta^i)})-logP(Y|\theta^i) =log(ZP(ZY,θi)P(ZY,θi)P(YZ,θ)P(Zθ))logP(Yθi)
Jenssen不等式满足:
l o g ∑ j λ j y j ≥ ∑ j λ j l o g y i , 其 中 λ i ≥ 0 , ∑ j λ j = 1 log\sum_j \lambda_j y_j \ge \sum_j \lambda_j log y_i,其中\lambda_i\ge 0, \sum_j \lambda_j=1 logjλjyjjλjlogyi,λi0,jλj=1
所以
L ( θ ) − L ( θ i ) ≥ ∑ Z P ( Z ∣ Y , θ i ) l o g P ( Y ∣ Z , θ ) P ( Z ∣ θ ) P ( Z ∣ Y , θ i ) − l o g P ( Y ∣ θ i ) L(\theta)- L(\theta^i)\ge \sum_Z P(Z|Y,\theta^i) log\frac{P(Y|Z,\theta)P(Z|\theta)} {P(Z|Y,\theta^i)}-logP(Y|\theta^i) L(θ)L(θi)ZP(ZY,θi)logP(ZY,θi)P(YZ,θ)P(Zθ)logP(Yθi)
= ∑ Z P ( Z ∣ Y , θ i ) l o g P ( Y ∣ Z , θ ) P ( Z ∣ θ ) P ( Z ∣ Y , θ i ) P ( Y ∣ θ i ) =\sum_Z P(Z|Y,\theta^i) log\frac{P(Y|Z,\theta)P(Z|\theta)} {P(Z|Y,\theta^i)P(Y|\theta^i)} =ZP(ZY,θi)logP(ZY,θi)P(Yθi)P(YZ,θ)P(Zθ)
定义 L ( θ ) L(\theta) L(θ)的下限
B ( θ , θ i ) = L ( θ i ) + ∑ Z P ( Z ∣ Y , θ i ) l o g P ( Y ∣ Z , θ ) P ( Z ∣ θ ) P ( Z ∣ Y , θ i ) P ( Y ∣ θ i ) B(\theta, \theta^i)=L(\theta^i) + \sum_Z P(Z|Y,\theta^i) log\frac{P(Y|Z,\theta)P(Z|\theta)} {P(Z|Y,\theta^i)P(Y|\theta^i)} B(θ,θi)=L(θi)+ZP(ZY,θi)logP(ZY,θi)P(Yθi)P(YZ,θ)P(Zθ)
满足
L ( θ ) ≥ B ( θ , θ i ) L(\theta) \ge B(\theta, \theta^i) L(θ)B(θ,θi)
L ( θ i ) = B ( θ i , θ i ) L(\theta^i)=B(\theta^i, \theta^i) L(θi)=B(θi,θi)
θ i \theta^i θi点, L ( θ ) L(\theta) L(θ) B ( θ , θ i ) B(\theta, \theta^i) B(θ,θi)两个曲线相交,其他点 L ( θ ) L(\theta) L(θ)曲线在 B ( θ , θ i ) B(\theta, \theta^i) B(θ,θi)曲线的上方,如下图:
这里写图片描述
为了获得更接近 L ( θ ) L(\theta) L(θ)的极大值点,使用 B ( θ , θ i ) B(\theta, \theta^i) B(θ,θi)对应的极大值点作为 θ i + 1 \theta^{i+1} θi+1,当然不能保证此时的 θ i + 1 \theta^{i+1} θi+1 L ( θ ) L(\theta) L(θ)的极大值点,如上图所示。
θ i + 1 = a r g m a x θ ( B ( θ , θ i ) ) \theta^{i+1}=argmax_{\theta}(B(\theta, \theta^i)) θi+1=argmaxθ(B(θ,θi))
忽略一些不含 θ \theta θ的项,可得
θ i + 1 = a r g m a x θ Q ( θ , θ i ) \theta^{i+1}=argmax_{\theta}Q(\theta, \theta^i) θi+1=argmaxθQ(θ,θi)
其中Q函数:
Q ( θ , θ i ) = ∑ Z P ( Z ∣ Y , θ i ) l o g P ( Y , Z ∣ θ ) Q(\theta, \theta^i)=\sum_Z P(Z|Y,\theta^i) log{P(Y,Z|\theta)} Q(θ,θi)=ZP(ZY,θi)logP(Y,Zθ)
Q函数的数学意义其实就是 l o g P ( Y , Z ∣ θ ) log{P(Y,Z|\theta)} logP(Y,Zθ)在已知 Y Y Y θ i \theta^i θi条件下关于隐变量 Z Z Z的均值,即
Q ( θ , θ i ) = ∑ Z P ( Z ∣ Y , θ i ) l o g P ( Y , Z ∣ θ ) = E Z [ l o g P ( Y , Z ∣ θ ) ∣ Y , θ i ] ) Q(\theta, \theta^i)=\sum_Z P(Z|Y,\theta^i) log{P(Y,Z|\theta)}=E_Z[ log{P(Y,Z|\theta)} | Y,\theta^i]) Q(θ,θi)=ZP(ZY,θi)logP(Y,Zθ)=EZ[logP(Y,Zθ)Y,θi])
E步的含义是构造 l o g P ( Y , Z ∣ θ ) log{P(Y,Z|\theta)} logP(Y,Zθ)在已知 Y Y Y θ i \theta^i θi条件下关于隐变量 Z Z Z的均值函数(物理意义是找出 L ( θ ) L(\theta) L(θ)的下限函数),即为Q函数。M步的含义是对E步构造出的均值函数求极大值,以期望最大程度上逼近 L ( θ ) L(\theta) L(θ)函数的极大值。
考虑到HMM求解的时候涉及到隐变量 q t q_t qt即某一帧特征属于哪个状态是位置的,所以采用Baum-Welch(EM算法)来进行求解。
完全数据集定义为 y = [ o 1 T , q 1 T ] y=[o_1^T,q_1^T] y=[o1T,q1T],由观测变量 o 1 T o_1^T o1T和隐变量 q 1 T q_1^T q1T状态序列共同构成,单高斯的HMM的模型参数 θ = [ a i j , ∑ i , μ i ] \theta=[a_{ij}, \sum_i, \mu_i] θ=[aij,i,μi],由状态的转移概率、高斯均值和方差组成。
E步:首先构造Q函数
Q ( θ , θ 0 ) = ∑ q 1 T P ( q 1 T ∣ o 1 T , θ 0 ) l o g P ( o 1 T , q 1 T ∣ θ ) Q(\theta, \theta_0)=\sum_{q_1^T}P(q_1^T|o_1^T,\theta_0)logP(o_1^T,q_1^T|\theta) Q(θ,θ0)=q1TP(q1To1T,θ0)logP(o1T,q1Tθ)
M步:然后Q函数分别构造拉格朗日函数,对模型参数 θ = [ a i j , ∑ i , μ i ] \theta=[a_{ij}, \sum_i, \mu_i] θ=[aij,i,μi]求导等于0,可得最后的参数(自己没有推导出来,直接上结果吧)

  • 转移概率
    a ^ i j = ∑ t = 1 T − 1 ξ t ( i , j ) ∑ t = 1 T − 1 γ t ( i ) \hat{a}_{ij}=\frac{\sum_{t=1}^{T-1}\xi_t(i,j)}{\sum_{t=1}^{T-1}\gamma_t(i)} a^ij=t=1T1γt(i)t=1T1ξt(i,j)
  • 方差
    ∑ ^ i = ∑ t = 1 T γ t ( i ) ( o t − μ ^ i ) ( o t − μ ^ i ) T ∑ t = 1 T γ t ( i ) \hat{\sum}_i=\frac{\sum_{t=1}^T \gamma_t(i)(o_t-\hat{\mu}_i)(o_t-\hat{\mu}_i)^T }{\sum_{t=1}^T \gamma_t(i)} ^i=t=1Tγt(i)t=1Tγt(i)(otμ^i)(otμ^i)T
  • 均值
    μ ^ i = ∑ t = 1 T γ t ( i ) o t ∑ t = 1 T γ t ( i ) \hat{\mu}_i=\frac{\sum_{t=1}^T \gamma_t(i)o_t}{\sum_{t=1}^T \gamma_t(i)} μ^i=t=1Tγt(i)t=1Tγt(i)ot

问题三:求解最优状态序列

对应于解码,动态规划的思想,比较简单。

HMM局限性

  • the temporal independence of speech data conditioned on each HMM state
    HMM观察独立性假设,任意时刻的观察只依赖于该时刻的马尔科夫链的状态,与其他观测和状态无关
  • lack of lawful correlation between the acoustic features
    高斯的方差是用的对角阵,假设特征维度之间是相互独立的

参考文献

[1]《automatic speech recognition a deep learning approach》 chapter2-3
[2]HMM理解例子
[3]《统计学习方法》 李航 第10章

后面的技术分享转移到微信公众号上面更新了,【欢迎扫码关注交流】

在这里插入图片描述

  • 1
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值