您的位置:首页 > 其它

声学模型学习笔记(三) DNN-HMM hybrid system

2016-10-08 19:54 295 查看

architecture



声学信号使用HMM框架建模,每个状态的生成概率使用DNN替换原来的GMM进行估计,DNN每个单元的输出表示状态的后验概率。

decoding

实际的语音识别解码的时候使用的是似然概率:

w^=argmaxwp(w|x)=argmaxwp(x|w)p(w)/p(x)=argmaxwp(x|w)p(w)

其中声学部分概率为p(x|w),使用的是似然概率。

所以需要将DNN输出的后验概率转化为似然概率:

p(xt|qt=s)=p(qt=s|xt)∗p(xt)/p(s)

p(xt)表示观察值的概率,跟词序列无关可以忽略。

p(s)表示状态的先验概率,可以使用训练语料的频率统计近似。实际使用时的先验概率有时无关紧要,但是可以缓解训练语料的标注偏移问题(比如训练语料包含大量的silience,从而导致silience的后验概率偏大)。

最终的声学概率表示如下:

p(x|w)=∑qp(x|q,w)p(q|w)≈maxπ(q0)∏t=1Taqt−1qt∏t=0Tp(qt|xt)/p(qt)

training

流程如下:

- 训练CD-GMM-HMM

- 使用CD-GMM-HMM对训练语料进行维特比解码,强制对齐特征和状态

- dnn训练

dnn训练使用的准则是基于后验概率,而hmm训练的准则是基于似然概率。

tricks

1.隐层个数

隐层越多(具有更强的函数拟合能力),效果越好,超过9层基本饱和。

2.contextual window

一般使用左右相邻的特征拼接起来作为dnn的输入,一般9-13帧。

在HMM中,有观察独立性假设(任意时刻的观测至于该时刻的状态有关,与其他观测和状态无关):

logp(otn,...,otn+1−1|sn)≈∑t=tntn+1−1[log(p(ot|sn)]

实际上相邻帧是存在一定关系的,并不是完全独立的:

logp(otn,...,otn+1−1|sn)=∑t=tntn+1−1[log(p(ot|sn,otn,...,ot−1)]

DNN的拼帧方法在一定程度上减弱了HMM的独立性假设,更符合实际关系。

3.对senones建模

使用cd-phone的状态比使用monophone的state建模效果更好。

4.pretraining

层数小于5的时候pretraining比较重要;当层数增加以后,pretraining收益变小,但是pretraining可以保证训练的鲁棒性,避免比较糟糕的参数初始化。

5.better alignment

更好的模型可以获得更准确的alignment,除了使用GMM-HMM的模型进行对齐,还可以使用DNN-HMM模型对训练数据进行对齐。

参考文献

《automatic speech recognition a deep learning approach》 chapter 6
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  dnn