1. HMM(Hidden Markov Model)

1.1 原理

十年前,没有Deep Learning的时候人们如何解决

求P(Y|X)语音辨识的问题转化成了求P(X|Y)和P(Y)的问题,什么是Language Model这里还不清楚,由文本生成语音的P(X|Y)模型就是HMM

在这里插入图片描述
同一个文本Y有不同的发音X,所以需要进行更细的划分,将文本划分成State,Tri-phone是Phoneme更细的划分,假设每个Tri-Phone由三个State组成,这样就将由文本生成语音的P(X|Y)模型变成了由State生成语音的P(X|S):

在这里插入图片描述
每个State产生两个Vec:
在这里插入图片描述
每一个Sate会产生两个几率,一个是到下一个的Sate的几率,另一个是给定一个State产生一个Vec的可能性

在这里插入图片描述
我们必须假设每一个Sate有一个固定的几率发出一个固定的声音,所以不能用Character而是用State来表示

排放概率(Emission Probability),问题是,State可能的数值为303,很多State出现的次数非常少,解决办法是和别的State共用一个高斯分布:

在这里插入图片描述
最后形成了一个定式:Subspace GMM,意思就是有一个高斯分布的库,每个State用网捞几个高斯分布起来

由State生成Speech也有alignment的问题,解决办法就是穷举所有State的alignment,算P(X|h),再把几率都算出来加起来:

在这里插入图片描述

1.2 如何在HMM中使用深度学习

方法1:Tandem

用Deep Learing ,把MFCC丢进去,算出不同状态对应的几率,最后用DNN取代MFCC,用DNN得到更好的声学特征

在这里插入图片描述
方法2:DNN-HMM Hybrid

原来是给一个State,产生一个声学特征的几率,现在可以由语音(声学特征),得到State。之前每一个State都有一个高斯分布模型,但是之后DNN都是一个共用的模型

在这里插入图片描述
如何训练一个状态分类器?

在这里插入图片描述
在这里插入图片描述
与人类相同

  • 微软语音辨识技术突破重大里程碑:对话辨识能力达人类水准!(2016.10) Machine 5.9% v.s. Human 5.9% [Yu, et al., INTERSPEECH’16]
  • IBMVS微软:"人机对等 "语音识别记录再易手(2017.03) Machine 5.5% v.s. Human 5.1% [Saon, et al., INTERSPEECH’17]

如何提高?
在这里插入图片描述

2. 深度学习实现细节

所以当今的end-to-to技术相当于求P(Y|X),即给定一个Acoustic Feature,求其对应Token的概率,以LAS为例:
在这里插入图片描述
对于CTC,RNN-T,需要做alignment,把所有可能的alignment的几率都加起来:

在这里插入图片描述
以下讲HMM,CTC,RNN-T:

  1. 如何穷举所有可能的alignment
  2. 如何把所有的alignment都加起来
  3. CTC怎么做训练
  4. 怎么decoding,怎么求式子的最小化

在这里插入图片描述

2.1 穷举所有可能的alignment

所有的alignment——以下假设HMM的state是cat,这样是为了与CTC和RNN-T作比较,实际中不会这样:
在这里插入图片描述
具体的,对于HMM,如果text是cat,Acoustic Feature长度T为6,具体的算法是c重复 t 1 t_1 t1次,a重复 t 2 t_2 t2次,t重复 t 3 t_3 t3次,但有限制是 t 1 + t 2 + t 3 = 6 t_1+t_2+t_3=6 t1+t2+t3=6,可用Trellis Graph表示:
在这里插入图片描述

对于CTC:
在这里插入图片描述
先产生c:
在这里插入图片描述
先产生Φ:

在这里插入图片描述
意思就是可以跳过Φ,但不能跳过Token:
在这里插入图片描述
最后要走到终点,终点有两个:
在这里插入图片描述
有很多其他的走法:
在这里插入图片描述
CTC有一个特例,如果有两个一模一样的Token,那么就不能走next Token:
在这里插入图片描述
再来看RNN-T:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
可以用一张图代表path:
在这里插入图片描述
以下部分会很难

2.2 怎么把所有alignment的分数都加在一起

分数计算——以RNN-T当作例子:
在这里插入图片描述
下来来实操一下, p 1 , 0 p_{1,0} p1,0表示Decoder输入 l 0 , h 1 l^{0},h^{1} l0,h1的不产生Token结果:

在这里插入图片描述
然后把所有的概率都乘起来:
在这里插入图片描述
我们以前知道,RNN-T的设计,就是有一个神经网络,输出Φ时对结果没有影响,这个设计对训练有好处:
在这里插入图片描述
以上每一个格子都对应一个Distribution几率,是固定的,不受到如何走到这个格子的路径所影响,下面着重讲一下这件事:

在这里插入图片描述
在这里插入图片描述
HMM解法:Forward-backward algorithm

在这里插入图片描述
你可以计算所有alignment分数的和:
在这里插入图片描述

2.3 训练

偏微分怎么求:
在这里插入图片描述
所有的几率都是相乘以后相加,每个路径都是其组成:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
怎么计算每个箭头对结果的影响?

在这里插入图片描述
在这里插入图片描述
引入β:
在这里插入图片描述
在这里插入图片描述

2.4 测试(推论、解码)

理想是把所有的state的alignment加起来,但是实际上只选一个几率最大的alignment:
在这里插入图片描述
在这里插入图片描述
总结:
在这里插入图片描述

3. Language Model在语音辨识里

3.1 为什么需要LM?

为什么需要Language Model:估计Token序列的概率

在这里插入图片描述
LAS的式子乘上P(Y)会让结果变好,这就是Language Model,这只需要大规模的文字,而不需要成对的数据,这往往还是有用的

下面来直观的看一下为什么需要LM,一个人一分钟平均说130个词汇,一万多小时的声音讯号,大约有一亿的词,成对的数据

在这里插入图片描述
可以轻易的收集到数据把P(Y)估计得很准

3.2 N-gram

以前常用的方法是N-gram:
在这里插入图片描述
N-gram的问题:

在这里插入图片描述

3.3 Continuous LM

推荐系统来的灵感,实现这项技术的方法叫做Matrix Factorization:
在这里插入图片描述
每一个词汇后面都会有一个向量:

在这里插入图片描述
平滑是自动完成的:

在这里插入图片描述
Continuous LM可以简单看成一个神经网络:
在这里插入图片描述

3.4 NN-based LM

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
RNN-based LM [Mikolov, et al., INTERSPEECH’10]

在这里插入图片描述
这可以很复杂:
在这里插入图片描述

3.5 利用LM来提高LAS的表现:

在这里插入图片描述
Shallow Fusion [Kannan, et al., ICASSP’18],直接在输出的部分相加:

在这里插入图片描述
Deep Fusion[Gulcehre, et al., arXiv’15]在hidden的时候结合起来:
在这里插入图片描述
Cold Fusion [Sriram, et al., INTERSPEECH’18]

好处:

  • LAS在训练中收敛得更快
  • 如果你有一个新的LM,LAS必须再接受一次训练

在这里插入图片描述

小结

这是语音辨识的第二部分:

  1. HMM的基本原理,以及深度学习如何应用在HMM中,其实并不太懂
  2. 深度学习实现的细节,alignment比较好懂,加一起感觉像是递归的样子,训练引入了一个β,反正能把偏微分算出来了,Decode的时候不是全求和,而是就去一个分数最大的状态,但这里我觉得即使是取分数最大的状态,不还是把全部的状态都算过一遍了吗?不懂
  3. LM的出现一是可以提高准确率,二是收集方便,N-gram有一定的局限性,需要进行Smooth,从Continuous LM来的灵感,每个词生成向量,n值是观测出来的,可以将其视为一个简答的NN-based LM,具体的,应用LM提高LAS的表现,有不同方法
Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐