【深度学习人类语言处理】2 语音辨识2——HMM、深度学习实现细节、LM
@TOCHMM(Hidden Markov Model )十年前,没有Deep Learning的时候人们如何解决Tri-phone是Phoneme更细的划分,假设每个Tri-Phone由三个State组成:每个State产生两个Vec:每一个Sate会产生两个几率,一个是到下一个的Sate的几率,另一个是给定一个State产生一个Vec的可能性我们必须假设每一个Sate有一个固定的几率发出一个固
Deep Learning for Human Ianguage Processing 2
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:
- 如何穷举所有可能的alignment
- 如何把所有的alignment都加起来
- CTC怎么做训练
- 怎么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必须再接受一次训练
小结
这是语音辨识的第二部分:
- HMM的基本原理,以及深度学习如何应用在HMM中,其实并不太懂
- 深度学习实现的细节,alignment比较好懂,加一起感觉像是递归的样子,训练引入了一个β,反正能把偏微分算出来了,Decode的时候不是全求和,而是就去一个分数最大的状态,但这里我觉得即使是取分数最大的状态,不还是把全部的状态都算过一遍了吗?不懂
- LM的出现一是可以提高准确率,二是收集方便,N-gram有一定的局限性,需要进行Smooth,从Continuous LM来的灵感,每个词生成向量,n值是观测出来的,可以将其视为一个简答的NN-based LM,具体的,应用LM提高LAS的表现,有不同方法
更多推荐
所有评论(0)