声学模型学习笔记(五) SDT(MMI/BMMI/MPE/sMBR)
来源:互联网 发布:李约瑟问题知乎 编辑:程序博客网 时间:2024/05/16 14:28
DNN训练使用的CE准则是基于每一帧进行分类的优化,最小化帧错误率,但是实际上语音识别是一个序列分类的问题,更关心的是序列的准确性。所以引入SDT(sequence-discriminative training),训练准则更符合实际,有利于提升识别率。常用的准则包括MMI/BMMI、MPE、MBR等。
MMI
MMI(maximum mutual information)准则最大化观察序列分布和word序列分布之间的互信息,减小句子错误率。
假设观察序列
其中
其中
第一部分
考虑到
第二项可以进一步求导:
综合前面的第一项和第二项,可得:
第二部分
考虑到
其中
所以,
按照文章的推导应该得到这个结果,但是实际上分母还包含
综合上面两部分,可以得到最终的公式:
Boosted MMI
相比于MMI,BMMI在分母上面增加了一个权重系数
物理意义:
参考[3]给出的解释,We boost the likelihood of the sentences that have more errors, thus generating more confusable data. Boosted MMI can viewed as trying to enforce a soft margin that is proportional to the number of errors in a hypothesised sentence。
结合参数理解,就是
通过可以推导出误差信号:
MPE/sMBR
MBR(minimum Bayes risk)的目标函数是最小化各种粒度指标的错误,比如MPE是最小化phone级别的错误,sMBR最小化状态的错误。目标函数如下:
其中
第一部分
对于MPE,参考文献[4]:
首先将
- 如果满足
- 如果不满足
不难推出:
上面的等式可以简化为以下形式:
各个部分的定义如下:
第一项表示occupancy statistics
第二项表示lattice中所有路径的平均准确率
第三项表示lattice中所有经过r的路径的平均准确率,是
第二部分
第二部分和MMI的一致
tricks
lattice generation
区分性训练时生成高质量的lattice很重要,需要使用最好的模型来生成对应的lattice,并且作为seed model。
lattice compensation
如果lattice产生的不合理的话,会导致计算出来的梯度异常,比如分子的标注路径没有在分母中的lattice出现,这种情况对于silience帧尤其常见,因为silience经常出现在分子的lattice,但是很容易被分母的lattice忽略。有一些方法可以解决这种问题:
- fame rejection,直接删除这些帧
- 根据reference hypothesis修正lattice,比如在lattice中人为地添加一下silience边
frame smoothing
SDT很容易出现overfitting,两方面原因
- sparse lattice
- sdt的squence相比于frame增加了建模的维度,导致训练集的后验概率分布更容易跟测试集出现差异
可以修改训练准则来减弱overfitting,通过结合squence criteria和frame criteria来实现:
learning rate
SDT的学习率相比于CE要下,因为
- SDT的起点一般基于CE训练出来的model
- SDT训练容易出现overfitting
criterion selection
sMBR效果相比其他会好一点,MMI比较容易理解和实现。
noise contrastIve estimation
NCE可以用于加速训练
参考
[1]《automatic speech recognition a deep learning approach》 chapter8
[2]Sequence-discriminative training of deep neural networks
[3]Boosted MMI for model and feature-space discriminative training
[4]discriminative training for large vocabulary speech recognition {daniel povey的博士论文chapter6}
- 声学模型学习笔记(五) SDT(MMI/BMMI/MPE/sMBR)
- kaldi mmi/bmmi/mpe/smbr训练及源码
- 声学模型学习笔记(一) HMM
- 声学模型学习笔记(二) DNN
- 声学模型学习笔记(三) DNN-HMM hybrid system
- 声学模型学习笔记(四) dnn speedup
- 声学模型学习笔记(六) representation learning
- 声学模型学习笔记(七) advanced deep models
- 语音学习笔记(四)【传统声学模型】
- 声学模型学习
- SPRD-MMI学习笔记
- 声学基础---学习笔记
- 声学模型(一) hmm声学训练流程
- CMU sphinx学习(――训练自已的中文语言模型与声学模型)
- mmi学习
- 机器学习笔记五:广义线性模型(GLM)
- pytorch学习笔记(五):保存和加载模型
- 机器学习笔记(五)模型评估方法
- Java NIO系列教程(一)Java NIO概述
- java访问网址
- 10081
- 2120数据结构实验之链表五:单链表的拆分
- DataGrid和GridView自动增加序号(三种实现方式)
- 声学模型学习笔记(五) SDT(MMI/BMMI/MPE/sMBR)
- LeetCode-Remove Duplicates from Sorted List
- 10082
- android中网格布局组件溢出原因
- jQuery动画函数
- QT QPapint的使用
- Android 监听back事件,点击两次退出程序
- 【HDU】5743 Join The Future【dp】
- HDU-1003-Max Sum(DP)