斯坦福CS224n NLP课程【十二】——语音处理的端对端模型

Automatic Speech Recognition ASR

ASR就是将声学信号转化为文本的系统

斯坦福CS224n NLP课程【十二】——语音处理的端对端模型

 语音是一种自然的用户接口:

斯坦福CS224n NLP课程【十二】——语音处理的端对端模型

传统ASR:传统做法的主体是生成式语言模型,建模声学信号与文本的发音特征的联合概率,但pipeline的不同部分掺杂了不同的机器学习模型

斯坦福CS224n NLP课程【十二】——语音处理的端对端模型

 斯坦福CS224n NLP课程【十二】——语音处理的端对端模型

现代ASR:神经网络兴起之后,人们发现传统pipeline中的每个模型都可以被一种对应的神经网络所替代,并且取得更好的效果:

斯坦福CS224n NLP课程【十二】——语音处理的端对端模型

但是这么多混乱的目标函数各自为政,难免有顾此失彼的情况。这构成一种动机,为什么不用一个统一的大模型来取代这盘散沙呢?

end-to-end ASR:尝试从语音直接获取文本

斯坦福CS224n NLP课程【十二】——语音处理的端对端模型

 Connectionist Temporal Classification CTC

这是一种强大的概率模型,特别适用于语音识别。其主体是一个Bidirectional RNN,上面是一层softmax。

斯坦福CS224n NLP课程【十二】——语音处理的端对端模型

 这个例子中 x为谱图 y是为文本 词表中还有一个空格<b>,这很重要。

斯坦福CS224n NLP课程【十二】——语音处理的端对端模型

由于语音片段(帧)切割时的随意性,可能导致一个字符c被切割为多个帧,每个帧都输出c。为了区分字符与字符的界限,所以引入空格分隔符。在解码的时候还需要限制字符只能转移到相同的字符,或者空格。

斯坦福CS224n NLP课程【十二】——语音处理的端对端模型

 斯坦福CS224n NLP课程【十二】——语音处理的端对端模型

 解码时的直观演示:

斯坦福CS224n NLP课程【十二】——语音处理的端对端模型

 一些效果:

斯坦福CS224n NLP课程【十二】——语音处理的端对端模型

 可见识别结果听上去挺像那么回事,可拼写不正确。Google通过在训练时集成语言模型进去修正了这些问题。而且不再使用字符级别,而是使用单词级别的大词表,识别出可能的单词后,用语言模型挑出最可能的句子。

斯坦福CS224n NLP课程【十二】——语音处理的端对端模型

Sequence to Sequence with attention for speech

让语言模型也成为模型天然的一部分,将音频视作sequence,文本视作另一个sequence,类似于NMT中的encoder-decoder,LSTM模型根据之前的y和全部x预测下一个y:

斯坦福CS224n NLP课程【十二】——语音处理的端对端模型

按时间顺序输入,与文本相比语音的数据量更大。所以一下子把x源语音都喂进去后,对于很长的序列来讲,需要做attention,在不同的时刻关注输入的不同部分:由于是RNN,所以输入x依然不是定长的。

斯坦福CS224n NLP课程【十二】——语音处理的端对端模型

Listen Attend and Spell (LAS)

定义score函数,接受每个历史时刻的encoder隐藏状态h_t和decoder的当前状态s,得到当前应当对每个历史时刻倾注多少注意力。softmax归一化,加权和得到最终的context vector,参与预测。

斯坦福CS224n NLP课程【十二】——语音处理的端对端模型

这里的encoder是树形的,因为对于较长的语音来讲,要softmax的time step实在太多,效率不高、模型注意力被分散。通过用softmax把相邻的time step总结一下,提高了效率和效果。

斯坦福CS224n NLP课程【十二】——语音处理的端对端模型

 这个模型是强大的,学习到了很多pattern:

斯坦福CS224n NLP课程【十二】——语音处理的端对端模型

 还可能产生一个读音的不同拼写(取决于早期的预测结果,然后导致不同的attention):

斯坦福CS224n NLP课程【十二】——语音处理的端对端模型

 斯坦福CS224n NLP课程【十二】——语音处理的端对端模型

 效果:得到的效果虽然没有超越多年优化的旧模型,但也是一个量级的:

斯坦福CS224n NLP课程【十二】——语音处理的端对端模型

 LAS的限制:

  • 必须等到用户说完话之后才能开始识别
  • attention是计算瓶颈
  • 输入的长度对准确率影响特别大

Word Pieces 目标颗粒度

有很多选择

斯坦福CS224n NLP课程【十二】——语音处理的端对端模型

 但对语音识别来讲,更有用的是字符的n-gram:

斯坦福CS224n NLP课程【十二】——语音处理的端对端模型

 它们有指数级的组合可能,不清楚哪一种是最好的:

斯坦福CS224n NLP课程【十二】——语音处理的端对端模型

 对于end-to-end模型来讲,常用的手法是由模型自动决定n-gram的分割:

斯坦福CS224n NLP课程【十二】——语音处理的端对端模型

 效果:下表的n-gram代表“最大产生n-gram”的意思。

斯坦福CS224n NLP课程【十二】——语音处理的端对端模型

 实际例子:

斯坦福CS224n NLP课程【十二】——语音处理的端对端模型

 模型缺陷:在句子开头和人名地名处困惑度较高

斯坦福CS224n NLP课程【十二】——语音处理的端对端模型

 如果一开始就出错,那模型也就没啥用了

解决方法:熵正则化 通过惩罚softmax输出概率来Entropy Regularization正则化模型,某个字母概率太高,将部分概率分配到其他字母上,可以克服这个问题:

斯坦福CS224n NLP课程【十二】——语音处理的端对端模型

与其直接ER,不如让输出的分布尽量与Unigram的分布相似,这样效果更好了。

另一个缺点:模型偏向于惩罚生成很长的输出,这对很长的输入来讲会出现提前终止输出的情况

斯坦福CS224n NLP课程【十二】——语音处理的端对端模型

 例如:

斯坦福CS224n NLP课程【十二】——语音处理的端对端模型

 解决办法是在预测时惩罚那些不看输入的情况,未处理的输入越多,惩罚越大 。 效果不错

斯坦福CS224n NLP课程【十二】——语音处理的端对端模型

Online Sequence to Sequence Models

希望能够即时产生输出,并且不需要在整个sequence上分配attention。

A Neural Transducer 神经传感器

根据一个定长的输入序列片段产生输出,不要要前一个输出,依然需要空白符,依然需要alignment(哪些字母属于一个词):

斯坦福CS224n NLP课程【十二】——语音处理的端对端模型

用空白符隔开的区块只是一个字符,究竟哪些字符成词,又回到了老生常谈的“分词”问题上来。这里采用了柱搜索找出最可能的路径。

斯坦福CS224n NLP课程【十二】——语音处理的端对端模型

 训练的时候理论上有一个非常复杂的对数似然的梯度,但实际上经常只取对数,不做识别上的求和:

斯坦福CS224n NLP课程【十二】——语音处理的端对端模型

对齐的过程类似viterbi,但并不严格是,我们是在找最优路径,但路径与之前的每个选择都有关。柱搜索不太理想,如果记录到每个block(字符)为止产生特定数量token的最大概率,则可以用动态规划解决:

斯坦福CS224n NLP课程【十二】——语音处理的端对端模型结果 在有attention的情况下,窗口大小影响不大;而在无attention的情况下,窗口较小效果较好。

斯坦福CS224n NLP课程【十二】——语音处理的端对端模型

 encoder中的卷积: 与其简单地层叠两个time step,不如喂给很深的卷积网络:

斯坦福CS224n NLP课程【十二】——语音处理的端对端模型

 效果显著:

斯坦福CS224n NLP课程【十二】——语音处理的端对端模型

Better Language Model Blending

标注音频-字幕数据毕竟不如海量的未标注文本多,而end-to-end模型是一个自治的大模型,内部隐式地存在通过标注数据学习到的语言模型。在哪里如何与外部语言模型混合呢?

答案是在decoder的softmax预测结果的对数概率上线性混合:

斯坦福CS224n NLP课程【十二】——语音处理的端对端模型

还有很多种混合手段,也是个新的前沿课题。

Better Sequence Tranining

  • 定期取样
  • 还有一些拓展。比如Reinforement Learning之类

多音源:

鸡尾酒舞会上有很多人说话,能否都识别出来呢?以前的生成式模型心中有一个固定的模式去生成数据与输入对比,不适合这个任务。现在常用的判别式模型反过来,以输入特征预测结果,应该可以做出以前做不到的成绩。

斯坦福CS224n NLP课程【十二】——语音处理的端对端模型

同声传译:

接受法语音频,直接输出英文文本。相当于将上面提到的模型与MT模型blend到一起了:

斯坦福CS224n NLP课程【十二】——语音处理的端对端模型

两者分别对原文和音频的对齐是非常类似的:

斯坦福CS224n NLP课程【十二】——语音处理的端对端模型