Chapter1-3_Speech_Recognition(CTC, RNN-T and more)

本文为李弘毅老师【Speech Recognition - CTC, RNN-T and more】的课程笔记,课程视频youtube地址,点这里👈(需翻墙)。

下文中用到的图片均来自于李宏毅老师的PPT,若有侵权,必定删除。

文章索引:

上篇 - 1-2 LAS

下篇 - 1-4 HMM

总目录

1 CTC

CTC源于论文Connectionist Temporal Classification: Labelling Unsegmented
Sequence Data with Recurrent Neural Networks
,是用来训练RNN的一种方法,它被广泛应用于一些标签未与输入对齐的任务中,如语音识别、图像文本识别等等。说简单点,就比如我们今天有一段语音"Hello",然后我们的标签一般来说只会是"Hello"这样几个字符,从标签中,我们无法知道语音的哪几秒对应了"H",哪几秒对应了"e"。所以当我们的Encoder输出一个长度和输入相等为 T T T的序列时,我们没法和标签对齐,也就没法去算这个loss。当然,我们可以再加一个RNN的decoder来解决问题,但我们也可以减小一些模型的大小,直接利用CTC来处理Encoder的输出。

没错,利用CTC来计算loss的话,我们只需要Encoder就可以了。不过这个时候,我们每个time step的输出要比vocabulary的size大1,这多出来的一个就是CTC需要的间隔符,这里记作 ϕ \phi ϕ
ch1-3-1
这个 ϕ \phi ϕ是我们人为加进去的,出现在模型输出的结果中,但不应该出现在最终得到的结果当中,因为vacabulary里是没有这个 ϕ \phi ϕ的。所以,在解析模型输出结果的时候,我们定义了如下两条规则:

  • 首先合并所有的相邻重复字符
  • 然后去除掉所有的 ϕ \phi ϕ

哦,对了,还有一条规则,这个是在构建模型和数据集的时候需要注意的:

  • label的长度必须不大于模型输出的长度

实际情况下,label的长度最好是远小于模型输出的长度,因为label中有重复字符的话,模型的输出就必须加入额外的 ϕ \phi ϕ才可能解析出和label一样的结果。

如下是几个转化的例子:
ch1-3-2
从上面的例子也不难推断出,模型不同的输出也可以得到相同的结果,比如下图左边的三种输出都可以解析得到相同的文字。CTC在训练的时候会去穷举所有可能的对齐方式。
ch1-3-3
也正是因为CTC的这些特性,模型classifier(第一张图☝️)的每一个time step的最终输出结果是独立的,在面对有很多重复的输入时,CTC很容易坏掉。

为了解决这个问题,有人提出了一种叫做RNA(Recurrent Neural Aligner)的方法。它就是把CTC独立的classifier换成了一个RNN就结束了。这样模型在输出token的时候,就可以参考前面的输出了。
ch1-3-4
不过,这样还有一个问题,就是面对一个输入,需要有多个输出的时候,该怎么办?比如“th”的发音只有一个音节,但是输出却有两个字母。这个时候就轮到RNN-T出场了。

2 RNN-T

RNN-T出自论文Sequence Transduction with Recurrent Neural Networks。它在RNA的基础上做了改进,解决了上述一对多的问题。它的改进在于,每个time step产生输出的时候,一直要等到模型输出了 ϕ \phi ϕ,才会继续去看下一个time step的内容,如下图所示。
ch1-3-5
所以,RNN-T的运算流程是长这个样子的。输入sequence的长度有多长,那么就会产生多少个 ϕ \phi ϕ
ch1-3-6
而实际的RNN-T,还会再多做一步,就是它会以输出的token为输入,加了一个RNN的模型去影响输出的token,如下图所示。不过,这个RNN会无视 ϕ \phi ϕ
ch1-3-7
这里多加入的RNN模型可以看成一个language model,可以先单独train好再拿进来。

3 Neural Transducer

Neural Transducer又继续做了优化,就是每次不是只看一个time step的hidden state来进行输出,而是看一个长度为 w w w的窗口内的hidden states来做attention,之后再塞进RNN里去得到token,输出 ϕ \phi ϕ后再看下一个窗口。这个有些细节我也没去细看,李老师也只是略讲了一下,这里就当了解一下吧。
ch1-3-8

4 Monotonic Chunkwise Attention

MoCha(Monotonic Chunkwise Attention)也是略讲了一下,它就是一个窗口可以自由选择移动的Neural Transducer,这里我也偷下懒不说了。

5 小结

结合上篇所讲的LAS,现在一共讲了6个模型。

  • LAS:就是seq2seq的标准模型
  • CTC:decoder是linear classifier的seq2seq模型
  • RNA:输入一个东西就要输出一个东西的seq2seq模型
  • RNN-T:输入一个东西,可以输出多个东西的seq2seq模型
  • Neural Transducer:每次输入一个window的RNN-T
  • MoCha:window移动伸缩自如的Neural Transducer
  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

七元权

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

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

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

打赏作者

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

抵扣说明:

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

余额充值