转:http://blog.sina.com.cn/s/blog_66f725ba0101bw8i.html

关于语音识别的声学模型训练方法已经是比较成熟的方法,一般企业或者研究机构会采用HTK工具包、Kaldi等进行训练,目前从声学模型出发,提高系统性能的主要策略主要有:

1)增加训练数据。不同的训练数据也会对模型有一定的影响,例如,数据的男女均衡性、采集数据的channel、数据的背景噪声、发音人的方言等等。

2)采用比较好的模型训练方法。以前一般采用基于EM和Baum-Welch算法的最大似然估计MLE(Maximum Likelihood Evaluation)方法,但现在众多研究者针对于MLE方法的缺陷,相继提出了多种区分性训练DT(Discriminative Training)方法,以期能得到较优的分类器。

3)声学模型表示。表述声学模型,用的比较多的就是DTW、GMM-HMM,以及目前研究比较热门的DNN(Deep Neural Network)等。

下面针对MLE和DT这两种训练方法,进行一个理论上的分析。以下内容参考中科大鄢志杰博士的毕业论文“声学模型区分性训练及其在自动语音识别中的应用”。

1. 最大似然估计MLE训练

目前,基于最大似然估计的MLE训练的HMM模型是语音识别系统中声学模型最主流的方法。这与MLE的特有的性质是分不开的。

首先,MLE提供了一种简单的训练方法,使得一个较高精度的语音识别声学模型能够迅速地训练得到。

其次,MLE采用的EM、Baum-Welch算法等,使得其不需要精细的参考文本音段时间标注,并在每一步迭代中确保对目标函数的优化。

最后,MLE估计对训练资源的消耗较小,现在已有很多成熟的算法和工具包能够利用对模型参数进行估计。

但是,MLE估计再理论上做的一些假设影响了其在实际应用条件下训练出最优分类器的能力,具体来说,MLE估计训练出的最优HMM声学模型需要满足以下几个条件:

1)模型假设要正确。即,建模时指定的概率密度函数要能够代表实际语音的“真实”分布。

2)训练数据要趋于无穷。即,可以经由无穷多的数据估计出模型的“真实”参数。

3)解码时需要的语言模型要事先已知,且参数要完全“真实”。

从上面的三点“真实”假设,我们可以看出,这三点在实际实践中是不可能真正做到的。这是因为:语音参数的“真实”分布是不可测的,更谈不上通常意义上的指数族函数(例如我们常采用的GMM)来充分模拟。另外,对于语音识别中的大量模型参数而言,训练数据总是稀疏的,实际的训练数据量远达不到无穷的要求。再者,解码中语言模型存在的问题与声学模型几乎完全一样,因此也达不到“真实”参数的要求。所以,在现实条件下通过MLE训练得到最优分类器是不可能的。

2. 区分性DT训练

区分性训练时研究者针对MLE训练的不足而提出的,希望在现实条件下能得到较优的分类器。DT训练通常定义一个目标函数(Objective Function),或者说是准则函数(Criterion Function),来近似一个与分类代价相关的度量。例如,可定义一个域分类错误相关的量并最小化它;或是定义一个与识别正确率相关的量,并最大化它。通过区分性训练,我们可以从一定程度上弱化模型假设错误所带来的影响。同时,由于区分性训练致力于优化与识别效果好坏相关的度量,因此也就为提高识别器性能提供了更直接的途径。形象的说,MLE训练告诉模型“这是椅子,那是桌子”,而区分性训练则告诉模型“这是桌子而不是椅子,那是椅子而不是桌子”。MLE训练更重视调整模型参数以反映训练数据的概率分布,而区分性训练则更重视调整模型之间的分类面,以更好的根据设定的准则对训练数据进行分类。

区分性群联研究的重点主要有两个方面,一是定义准则,即表明“需要优化什么”,二是研究优化算法,即如何根据给定的准则有效的优化模型参数。在语音识别领域,常用的优化准则有:最大互信息量估计准则(Maximum Mutual Information Estimation,MMIE)、最小分类错误准则(Minimum Classification Error,MCE),以及最小词/音素错误准则(Minimum Word/Phone Error)。而常用的参数优化准则算法则包括广义概率下降(Generalized Pmbability Descent,GPD),以及扩展Baum-Welch(Extened Baum—Welch,EB)算法。

纵观现在主流的声学模型的训练,一般公司的研究院或者是一些公司已经采用DNN训练方式,或者是基于HMM的MPE/fMPE相结合的训练方式,训练更powerful的声学模型。当然,这些对训练数据的需求量依然是相当的大。

[转]语音识别中区分性训练(Discriminative Training)和最大似然估计(ML)的区别的更多相关文章

  1. 深度学习中交叉熵和KL散度和最大似然估计之间的关系

    机器学习的面试题中经常会被问到交叉熵(cross entropy)和最大似然估计(MLE)或者KL散度有什么关系,查了一些资料发现优化这3个东西其实是等价的. 熵和交叉熵 提到交叉熵就需要了解下信息论 ...

  2. 卷积神经网络(CNN)在语音识别中的应用

    前言 总结目前语音识别的发展现状,dnn.rnn/lstm和cnn算是语音识别中几个比较主流的方向.2012年,微软邓力和俞栋老师将前馈神经网络FFDNN(Feed Forward Deep Neur ...

  3. 详解卷积神经网络(CNN)在语音识别中的应用

    欢迎大家前往腾讯云社区,获取更多腾讯海量技术实践干货哦~ 作者:侯艺馨 前言 总结目前语音识别的发展现状,dnn.rnn/lstm和cnn算是语音识别中几个比较主流的方向.2012年,微软邓力和俞栋老 ...

  4. kaldi chain模型的序列鉴别性训练代码分析

    chainbin/nnet3-chain-train.cc int main(int argc, char *argv[]) { ... Nnet nnet; ReadKaldiObject(nnet ...

  5. Opencv中SVM样本训练、归类流程及实现

    支持向量机(SVM)中最核心的是什么?个人理解就是前4个字--"支持向量",一旦在两类或多累样本集中定位到某些特定的点作为支持向量,就可以依据这些支持向量计算出来分类超平面,再依据 ...

  6. PocketSphinx语音识别系统语言模型的训练和声学模型的改进

    PocketSphinx语音识别系统语言模型的训练和声学模型的改进 zouxy09@qq.com http://blog.csdn.net/zouxy09 关于语音识别的基础知识和sphinx的知识, ...

  7. 语音识别中的CTC算法的基本原理解释

    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文作者:罗冬日 目前主流的语音识别都大致分为特征提取,声学模型,语音模型几个部分.目前结合神经网络的端到端的声学模型训练方法主要CTC和基 ...

  8. Ruby中区分运行来源的方法(转)

    Ruby中区分运行来源的方法 这篇文章主要介绍了Ruby中区分运行来源的方法,本文讲解的是类似Python中的if name == 'main':效果,其实Ruby中也有类似语法,需要的朋友可以参考下 ...

  9. PyTorch在NLP任务中使用预训练词向量

    在使用pytorch或tensorflow等神经网络框架进行nlp任务的处理时,可以通过对应的Embedding层做词向量的处理,更多的时候,使用预训练好的词向量会带来更优的性能.下面分别介绍使用ge ...

随机推荐

  1. VMware 2017 v14.x 永久许可证激活密钥

    FF31K-AHZD1-H8ETZ-8WWEZ-WUUVA CV7T2-6WY5Q-48EWP-ZXY7X-QGUWD

  2. 编织织物的knit course direction and knit wale direction

    来自:http://www.definetextile.com/2013/04/course-wale.html

  3. 30个php操作redis常用方法代码例子(转载)

    1.connect 描述:实例连接到一个Redis.参数:host: string,port: int返回值:BOOL 成功返回:TRUE;失败返回:FALSE示例: $redis = new red ...

  4. 记号一下selenium+Firefox自动下载的参数

    参考: https://blog.csdn.net/wxstar8/article/details/80782556 https://blog.csdn.net/xiaoguanyusb/articl ...

  5. 数据库设计,表与表的关系,一对一。One-To-One(1)

    如何处理对象间one-to-ont的映射关系:one-to-one: 处理一对一关联的方式有两种: 1.主键关联使用主键关联处理一对一的关系. 主键关联不需要额外的表字段:两行是通过这种一对一关系相关 ...

  6. elasticsearch-权威指南笔记-基础部分

    参考这里的文档es权威指南 话说这个坑爹的文档是2.x版本的es,英文版本也是,所以就没啥好抱怨的了. 官方教程中有很多坑 例如,需要启动text上的索引. 还有就是get这个是不能带json的,所以 ...

  7. 人工智能为什么选择Python语言?

    作为新手,在面对广泛应用于企业级应用开发的 Java.游戏客户端开发的 C++.嵌入式开发的 C.人工智能领域的 Python 等数百种编程语言时,你会如何选择自己的第一门编程语言? 作者 | JAC ...

  8. ubuntu安装gitlab-ci-runner、注册

    首先信任 GitLab 的 GPG 公钥: curl https://packages.gitlab.com/gpg.key 2> /dev/null | sudo apt-key add - ...

  9. MQ队列堵塞无法读取经验总结

    问题现象: 1号发生本地来帐队列无法读取消息的问题,导致来帐报文均无法正常处理. 原因分析: 应用系统没有修改或上包,昨天交易和消息读取还是一切正常,mbfe的状态也是正常,mq的状态正常,以上正常可 ...

  10. LR基础理论详解

    本人参考了大神的博客(https://blog.csdn.net/cyh_24/article/details/50359055),写的非常详细,在此整理一下要点 逻辑斯蒂分布 基础公式了解 二项逻辑 ...