区分性训练大致概念:

GMM-HMM框架的经典训练方法是EM算法,EM算法本质上是一种最大似然准则的训练。区分性训练最早的尝试是把最大互信息(MMI)准则引入训练当中,povey又引入了由MMIE改进的最小音素错误(MPE)区分性训练准则。

为了兼顾识别性能和训练效率,根据经验,一般首先用最大似然准则做起始训练,然后用区分性训练对模型进行迭代加强。

传统的最大似然训练是使正确路径的分数尽可能高,而区分性训练,则着眼于加大这些路径之间的打分差异,不仅要使正确路径的分数尽可能高,还要使错误路径,尤其是易混淆路径的分数尽可能低,这就是区分性训练的核心思想

例:识别语音内容是{A、B、C、D}中的哪一个?

最大似然优化目标:logP(B)最大

区分性训练准则的优化目标

logP(B)/(P(A)+P(B)+P(C)+P(D))最大

区分性训练准则是一类准则,贯穿始终的是区分性的训练思想,而并不是特指吗某一个具体的目标函数

常用的区分性训练准则有最大互信息(MMI)、状态级最小贝叶斯风险(sMBR)、最小音素错误(MPE)。

区分性训练中几个重要概念:

分子:解码空间中“识别正确”的子空间

分母:整个搜索空间(在工程实现中通常会通过一次解码,将高分路径过滤出来,近似整个分母空间)。

词格:分子、分母其实都是解码过程中一部分解码路径的集合,将这些路径紧凑有效的保存下来的数据结构就是词格,其本身是一种图结构。词格在颗粒度方面,即可以将该结构保留至词级别,也可以保留更细致的音素、状态级别的信息。

神经网络的区分性训练:

核心思想:最大似然的基本原理是通过调整模型参数,最大化训练数据在所建立模型上的似然度,区分性训练通过调整模型参数,尽可能地减少那些容易混淆正确结果和错误结果地情况,从而提高整体模型参数的正确性。

目标函数:传统训练中神经网络一般会以交叉熵作为训练的目标函数,用以最小化训练数据中的帧错误率,在区分性训练中,神经网络会采用一些特殊的目标函数,用以抑制那些让训练数据在其解码词格中产生错误的参数,从而优化整体模型性能。神经网络的区分性训练常用的目标函数有最大互信息(MMI)、最小音素错误(MPE)、状态级最小贝叶斯风险(sMBR)

配置调节:区分性训练中可以被调节的配置:

1)、选择合适的目标函数

2)、帧平滑:当只使用区分性训练的目标函数时,由于训练数据产生的词格并不能包含所有可能的单词序列,因此神经网络往往会产生过拟合。为了避免过拟合的出现,尝试将区分性训练的目标函数和交叉熵目标函数进行插值,生成一个新的目标函数来对神经网络进行训练,这个插值叫做帧平滑。

3)、我们需要用当前最好的语音识别系统来生成区分性训练所需要的词格。可以经过一次完整的区分性训练后,用重新生成的分子词格和分母词格,继续训练,可能可以进一步提升模型效果。

Lattice-free MMI:Kaldi中的纯序列建模神经网络-一种不需要额外生成词格(lattice-free)便可以对神经网络进行区分性训练的方法,又被叫做chain模型(把CTC实现过程中的一些想法引入到区分性训练中基于最大互信息目标函数的训练当中,就是chain模型),是kaldi中效果最好的神经网络模型。

Chain模型的特点:

①从头开始训练神经网络,不需要基于交叉熵训练的神经网络作为起点。

②采用跳帧技术,每3帧处理一次。(主要跟建模粒度有关。chain model中的每个phone只有一个state(不考虑blank),所以我们可以认为它的建模单元是phone。而传统的HMM-GMM的每个phone有3或5个state,所以传统的HMM-GMM实际上是对state建模。因为state的建模粒度比较小,采用跳帧的方式时,可能跳过了中间重要的几个state,从而影响识别结果。而phone的建模粒度较大,采用跳帧的方式通常不会跳过phone。)

③使用更加简化的隐马尔可夫模型拓扑结构,不训练转移概率。

④不需要产生分母词格,对可能路径进行求和的前向-后向算法演绎过程直接在GPU上进行。(之前的区分性训练是需要对每个音频解码得到分母词图(每个音频也就是每个句子都有自己对应的词图)。而chain model的分母fst实际上是HCP(P表示发音词典的概率),也就是说所有音频共享同一个HCP图,不需要分别解码得到对应的lattice,所以叫lattice free。)

⑤分母语言模型采用四元语法音素单元的语言模型,而不是一元语法词单元的语言模型

⑥使用基于上文双因子(BiPhone)的声学建模单元。(chain model使用biphone作为基本的建模单元,而不是我们经常用的triphone。Dan Povey在2016年的interspeech演讲中提到,实验发现biphone的效果稍微好于triphone。同时解码速度更快了,因为phone的数量减少了。)

⑦一个训练句子会被拆分成若干个训练块。

简单理解chain:chain模型就是一个利用最大互信息目标函数进行训练,但不需要生成分母词格的区分性训练神经网络模型。在chain模型中,传统基于最大互信息的区分性训练中的分子词格和分母词格都被有限状态机(FSA)所替代,并且不同于传统区分性训练中每个句子都有一个单独的分母词格,在chain模型的训练中,所有训练数据将共用一个分母有限状态机。

Chain详解

代码分为四大部分:

①提取ivector特征

②chain模型训练的准备工作

③模型结构的定义

④chain模型的具体训练

①②省略,可以看思维导图

③num_targets神经网络输出数目

  固定放射变换层lda,用LDA矩阵做特征变换,并且用Append描述符定义如何拼接ivector特征和MFCC特征。

为了防止过拟合,chain模型训练过程同时使用了交叉熵损失函数和chain自身的损失函数(基于最大互信息),所以有两个输出层。

chain (Lattice-free MMI)相关推荐

  1. 静态程序分析chapter4 - 基于格(Lattice)理论的数据流分析

    文章目录 三. 格理论 函数不动点 偏序(Partial Order) 上界和下界 最小上界和最大下界 glb 和 lub的属性 格(lattice).半格.完备格.乘积格 数据流分析框架 单调性和不 ...

  2. 马尔可夫链蒙特卡罗法(Markov Chain Monte Carlo,MCMC)

    文章目录 1. 蒙特卡罗法 2. 马尔可夫链 3. 马尔可夫链蒙特卡罗法 4. Metropolis-Hastings 算法 5. 吉布斯抽样 蒙特卡罗法(Monte Carlo method),也称 ...

  3. 1090 Highest Price in Supply Chain (25 分)

    1090 Highest Price in Supply Chain (25 分) A supply chain is a network of retailers(零售商), distributor ...

  4. 格密码(Lattice)与NTRUEncrypt介绍

    一个例子 Python from Crypto.Util.number import * import gmpy2 from flag import flag def generate():     ...

  5. Lumerical官方案例、FDTD时域有限差分法仿真学习(十三)——多模干涉耦合器(MMI)

    Multimode interference (MMI) coupler 计算通过 1×2 端口多模干涉 (MMI) 耦合器的宽带传输和光损耗. 使用设备 S 参数在 INTERCONNECT 中创建 ...

  6. DirectX12 - Swap Chain(交换链)

    这里是SunshineBooming,GPU公司一枚小小的Driver工程师,主要工作是写DirectX12 Driver,我会持续更新这个DX12 Spec系列,可能比较冷门,但是都是干货和工作中的 ...

  7. poj 3090 Visible Lattice Points(离线打表)

    这是好久之前做过的题,算是在考察欧拉函数的定义吧. 先把欧拉函数讲好:其实欧拉函数还是有很多解读的.emmm,最基础同时最重要的算是,¢(n)表示范围(1, n-1)中与n互质的数的个数 好了,我把规 ...

  8. 独家 | 一文读懂语音识别(附学习资源)

    原标题:独家 | 一文读懂语音识别(附学习资源) 一.前言 6月27日,美国权威科技杂志<MIT科技评论>公布2017全球最聪明50家公司榜单.科大讯飞名列中国第一.全球第六.全世界排在科 ...

  9. 自然语言处理及计算语言学相关术语中英对译表(A~L)

    abbreviation 缩写 [省略语] ablative 夺格(的) abrupt 突发音 accent 口音/{Phonetics}重音 accusative 受格(的) acoustic ph ...

最新文章

  1. R语言使用ggplot2可视化凹凸图(bumps chart、凹凸图是一种特殊形式的线图,旨在探索随着时间的推移等级的变化)、并设置凹凸图的线条为曲线而不是直线(change into curves)
  2. 值类型和引用类型在栈和堆中的分配
  3. ECMAScript 6 入门
  4. openstack 安装
  5. ASP.NET MVC5使用AjaxHelp
  6. sql查询语句中的乱码 -- 前面加N
  7. 龙芯笔记本可能以闹剧收场
  8. python文字识别 训练_Python3.x:pytesseract识别率提高(样本训练)
  9. POJ 1191 棋盘分割(区间DP)题解
  10. Pandas程序回顾
  11. Leetcode 刷题笔记(一) —— 数组类型解题方法一:二分法
  12. CSS3_线性渐变(linear-gradient)+ 盒子阴影(box-shadow)
  13. 未来教育计算机一级ms百度云,未来教育全国计算机二级VFP
  14. linux文件增加自定义属性,Linux 笔记...文件和目录属性useradd、userdel、usermod 、passwd...
  15. Photon与Unity核心技术之角色更换武器
  16. 扫描qr code_如何在Android手机上扫描QR码
  17. 产品经理如何做好项目介绍?
  18. vue 页面保留缓存和清除缓存
  19. FFmpeg开发之旅(二)---音频解码
  20. 数值的整数次方 和开根号

热门文章

  1. 【毕业设计】深度学习OCR中文识别系统 - opencv python
  2. 什么是CAD模型坐标系?能够修改吗?
  3. CSS_css选择器,选择所有子元素、最后一个、第一个、单数、双数、第n个、反选,nth-child,last-child,first-child
  4. revit卸载残留清理工具 v1.1
  5. Android 开发常用网址和工具
  6. 速腾聚创将募资24亿:筹备IPO 前汽车之家CFO邹钧已加盟
  7. 计算机高新技术学什么,全国计算机信息高新技术证书是什么?如何考?
  8. php面试英文自我介绍范文,英语面试自我介绍范文3分钟
  9. agios天河二号安装实践
  10. 2021年危险化学品生产单位安全生产管理人员考试内容及危险化学品生产单位安全生产管理人员考试技巧