赞
踩
视频主页:http://speech.ee.ntu.edu.tw/~tlkagk/courses_DLHLP20.html
B站观看(对应P5-P6-P7):https://www.bilibili.com/video/BV1RE411g7rQ
资料汇总: 度盘 密码: 4v5i
(以上资料来源于网络)
以下内容只是对上述资料进行提炼,建议观看原视频,感谢李宏毅老师和其团队的辛苦付出!
系列文章索引:
深度学习与人类语言处理 李宏毅2020课程精华提要(1)模型的输入与输出
深度学习与人类语言处理 李宏毅2020课程精华提要(2)模型的构成之Seq-to-Seq角度
深度学习与人类语言处理 李宏毅2020课程精华提要(3)模型的构成之HMM角度
深度学习与人类语言处理 李宏毅2020课程精华提要(4)模型对齐(Alignment)
深度学习与人类语言处理 李宏毅2020课程精华提要(5)语言模型
上一讲,作者讲了语音识别模型的big picture,即模型的输入输出是什么。下面涉及模型的具体组成,作者讲解的思路有2点,第一种是从Seq-to-Seq的角度出发,第二种从HMM算法的角度出发,具体区别如下:
模型视角 | 定义 | 常见的模型 |
---|---|---|
seq-to-seq | 从可变长度的输入到固定长度输出的模型 | LAS、CTC、RNN-T、Neural Transduce、MoChA |
HMM | 隐马尔可夫模型 | – |
本节先从Seq-to-Seq的角度讲解语音识别的模型。
语音识别领域的Seq-to-Seq模型大体上有如下的结构,从可变长度的输入到固定长度输出的模型,根据我的理解,我绘制了一张结构图(如下所示)。可变长的输入指的是输入的语音序列是变长的(图中x向量,一般用Filter Bank向量表示),输出的长度是固定的,固定体现在最终表示的是一个长度为V的独热编码(One-hot Vectors),不同位置的1代表出现了不同的单词,比如“我们”“来自”“上海”这三个单词,体现到独热编码的不同位置上的1。
另外,这里的Seq-to-Seq模型也有Encoder-Decoder(编码-解码)的成分,Encoder输入是一个变长的语音特征向量,输出的是一个定长的向量,这个向量也会被称之为High Level Features或者High Level Representations,总之,它就是一个定长的向量而已,其维度一般会比输入的语音特征向量要小(即:h< i)。Decoder的作用是输入“中间层向量”(h),输出变长的向量(y),这个定长的向量能够转化成人可以理解的文字信息。
通过以上的Seq-to-Seq和Encoder-Decoder模型,我们再来理解作者提高的几个模型,就容易多了。
LAS是Listen Attend和Spell的缩写,Encoder包含listen流程,Decoder包含attend和spell两个过程,LAS的Encoder部分包括:金字塔类型的双向LSTM。双向LSTM是为了获得更好的Context信息,金字塔类型有2个作用:(1)降低输入向量y的参数,体现在模型中就是h向量的维度少了,后续计算量会大大降低;(2)感受野几乎不变,在图像卷积网络中有一个感受野的概念,我觉得也适用于这里,金字塔越往上走,信息流在缩窄,但是越往上的信息流越能还原出的下面更宽的信息流,LAS的Encoder过程如下图所示:
LAS的Decoder部分简单来说,就是在RNN的隐藏层内加入了Attention机制,Attention机制目的是选取当前输出需要关注的向量,有些向量确实不需要关注,比如人在说话的时候,一般句子上下文都在附近,基本不会在很远的地方。Attention机制有点类似于跳层连接(Skip Connection),通过抑制一些向量的权重,从而只关注特定范围的向量。
另外作者还提到一组数据,非常有意思。在这篇文章发布的时候,只训练2000小时的效果比HMM稍微差一点,但是2年后,有人将数据量提升到12500小时后,WER达到了5%,已经接近人类水平了。这也说了深度学习需要的数据量是非常大的,之前的模型可能是因为数据量太少发生了欠拟合。
LAS看似一个体系非常完整的模型了,但是也有缺点,LAS模型的输入必须是一整句话,从上图Encoder也可以看出来,LSTM是双向的,而现实生活中,我们需要说多少识别多少,而不是把完整的句子说完再识别,这就是在线语音识别(On-line speech recognition),LAS的模型架构也限制了这种可能,所以作者说LAS还不是语音识别(ASR)的终极方案:LAS is not the final solution of ASR!
我们一般训练一个机器学习或深度学习模型的时候,往往都有固定长度的输入和固定长度的输出,比如图像识别问题:输入一张大小为256*256*3的图片,输出是其类别(0是猫,1是狗),输入定长、输出也是定长的,这样方便计算损失函数,从而方便我们训练模型的参数。
但是在语音识别的过程中,从输入到输出往往没有很好的一一对应关系,比如我说了一个词:好棒,如下图所示,我们怎么做标签(label)对齐呢?没有对齐数据,我们就无法计算loss,也无法进一步对模型的参数进行更新了。
CTC提供了一种思路,把原来的语音切成几个格子,以下图为例,把语音分成四个格子,我们把标签:“好”、“棒”填进去,因为有时候一个句子中也有地方不发音(如波形图波谷地段),我们就用一个“
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。