课程向:深度学习与人类语言处理 ——李宏毅,2020 (P5)

语音辨识模型2、3、4、5:

CTC 、RNN-T(&RNA)、Neural Transducer、MoChA

李宏毅老师2020新课深度学习与人类语言处理课程主页:
http://speech.ee.ntu.edu.tw/~tlkagk/courses_DLHLP20.html
视频链接地址:
https://www.bilibili.com/video/BV1RE411g7rQ
课件ppt已上传至资源,可免费下载使用

承接上文,LAS模型效果虽然足够出色且端到端保证了模型的大小足够小,但问题是无法进行online的语音辨识,在LAS中要进行整个数据的attention,只有在整个语音读完后才能进行辨识,而CTC便是解决这个问题的一种模型。

Model 2:CTC (Connectionist Temporal Classification)

[Graves, et al., ICML’06]
在这里插入图片描述

CTC可以说是只有Encoder,在做encoder时要选一些可以做online语音辨识的Encoder,比如说uni-directional RNN 单向RNN,而如果是双向的话要输入整个句子。而单方向的RNN可以输入x1 输出h1等等。在得到h后,将h输入到Linear Classifier,将h乘上一个矩阵再做softmax得到一个所有token的distribution。输入h1产生第一个结果,输入h2产生第二个结果,可以做online的,依此类推。

但注意,我们输入的x是acoustic features,它所代表的声音讯号非常小,仅10ms。这一小个feature不一定是一个token,故我们加入一个特别的token,𝜙 (拼音:nuo 四声),代表暂时不知道的。
在这里插入图片描述
对CTC而言,

I 输入 输出

  输入:T个acoustic features
  输出:T个tokens(假设没有down sampling)
特别地,语音辨识中并没有nuo这个东西,在输出时,将这T个tokens做一下后处理,将相邻重复的tokens去重,再将nuo的部分空格,示例可见上图。

II Training时的问题

在这里插入图片描述
假设我们输入 “好棒”的语音讯号acoustic features的 4个tokens x1-x4, 但对应的y1-y4 tokens到底那里应该是nuo呢?哪里是重复的呢?
  而我们要自己制造这样的输出,这种方式就叫做alignment
  如 好棒输入x1 x2 x3 x4的声音讯号,输出可以自己构造为 𝜙 好 𝜙 棒(那其他种,如 好𝜙棒棒等等也是可以的。alignment有很多种方式),那我们该选那一种alignment呢,全都要穷尽所有的alignment下一节会讲。

III Result

在这里插入图片描述
表中数值是错误率,越小越好
单纯的CTC效果并不尽如人意,但加上后处理和语言模型后,效果超过了Encoder-Decoder的LAS

IV Issue

CTC的问题在于,如果输入的连续的ccc语音,如果第一个token产生的是c 第二个是𝜙,则之后无论怎样生成都是错误的,因为第二个生成的𝜙会直接变成两个或多个字

V Combination

LAS的结构中加入CTC,Encoder的部分同时做listen和CTC,做两个loss。

Model 3: RNN-T (RNN Transducer)

[Graves, ICML workshop’12]

I RNA (Recurrent Neural Aligner)

[Sak, et al., INTERSPEECH’17]

在将RNN-T之前,先了解一个RNN-T后续的模型RNA (Recurrent Neural Aligner)
在这里插入图片描述
在CTC的“decoder”是一个linear classifier,对每一个encoder生成的结果h都将直接输出一个token,各自独立。能不能不要独立,可以,将CTC的linear classifier换成RNN 、LSTM就可以,这就是RNA做的事请。到目前为止,我们看到的CTC或RNA都是吃一个输入。有没有可能,输入一个vector输出多个token,一种方法可以通过th当作一个token,可以自己加token。但对模型而言,我们是希望模型直接解决这个问题,另一种方法****RNN-T可以帮助我们解决这个问题。

II RNN-T 一般结构

在这里插入图片描述
上图左侧是RNA的结构,而右侧便是RNN-T的结构。
RNN-T看到一个输入以后,一直输出直到输出𝜙为止。如图所示,输入一个ht,RNN-T可以先 生成一个t,再生成一个h,直到𝜙(give me next frame)

在这里插入图片描述
具体而言,我们先有一个来自Encoder的ht,丢给decoder,decoder先输出一个t,然后输出h,之后没有可生成的了,就输出 𝜙。Encoder就会再提供下一个ht+1,同样处理。
th 𝜙 e 𝜙 𝜙 _ 𝜙 = th e _
提问:在给RNN-T一共 T 个h最终会生成多少个 𝜙 呢?(思考一下再看下面)

答案:T个 𝜙 ,因为每当生成一个 𝜙 就相当于告知模型 我们要处理下一个h了,故输入T个h,会依次输出T个𝜙。
由此,我们在构造数据集的输出时,假设我们的输入经过Encoder会有T个h(hidden state) ,则我们构造的输出也应该有T个 𝜙 ,举例:输入语音 “好棒” Encoder后得到 h1 h2 h3 h4 的h后,我们要构造的生成结果可为 𝜙1好 𝜙2棒 𝜙3 𝜙4(一定要包含和h数量一样的𝜙,且后处理𝜙后的结果是我们的输入“好棒”),同样,RNN-T也就有和CTC一样的alignment问题,怎样构造所有可能的alignment?我们下一节会讲。

III RNN-T 再加 RNN

在这里插入图片描述
实际RNN-T会另外训练一个RNN,这个RNN很像一个Language Model,我们另外训练一个RNN,这个RNN会看,如果前面有输出token(注意,不包含𝜙),就把那些token丢到这个RNN里面去。
具体而言,现在丢入一个ht,decoder输出一个t,这个t就会输入到RNN里面来决定下一个decoder token的输出(上图红线)。这样,虽然我们在同样输入ht时,在生成t之后,再进行生成时是会受到生成t的影响,即使输入的都是同样的ht,但加了经过RNN的t后 生成h的输入部分便有所不同了。

问题,1 我们为什么要新训练一个RNN,而不是像上面一般的RNN-T?。2 这个新的RNN会无视𝜙,而我们为什么要无视这个𝜙?
   理由:首先,这个RNN是一个language model,它只看token当作输入,因此我们可以先通过大量的文字来预训练这个RNN,因为这些文字里没有𝜙这种东西。其次,更本质的,这一步是必要的,RNN-T在训练时要穷举所有的alignment,而要实现穷举所有的alignment的算法是需要模型内部有一个无视𝜙的,该算法下节会讲。为了训练而设计的。

Model 4: Neural Transducer

[Jaitly, et al., NIPS’16]
在这里插入图片描述
上面讲的CTC、RNA、RNN-T 都是只读一个h进来进行输出,感觉效率不高,而Neural Transducer一次读一段长度为W的h,之后在这个区域内做attention,由attention来决定选择读哪些进入RNN输出。
具体而言,请看下图
在这里插入图片描述
那这个window该多大呢,在Neural Transducder文献里作者给出了4种attention的window对错误率的影响。

  • no-attention
  • DOT-Attention
  • MLP-Attention
  • LSTM-Attention : 也是一种Location-aware attention
    在这里插入图片描述

Model 5: MoChA (Monotonic Chunkwise Attention)

[Chiu, et al., ICLR’18]

在这里插入图片描述
在Neural Transducer 模型中window大小是固定的,而在MoChA里面有一种方式,类似于attention,也是 给它两个vector:z0和h依次输出 yes/no,yes就是把window放在这里。
注意这是binary的,该怎么微分呢,请详见论文。

Summary

在这里插入图片描述

大家有任何问题,欢迎指正和讨论,共同学习。

  • 6
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿芒Aris

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值