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

Alignment in HMM,CTC,RNN-T

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

前言

上两篇,我们都明晰了HMM、CTC、RNN-T的模型细节,但都遇到了同样的问题,那就是Encoder生成的hidden state(或HMM的state)与token间的长度不等,导致的alignment的问题。
在此,我们提出了4个问题:

  1. 问题1:怎么穷举所有可能的alignments?
  2. 问题2:怎么把所有的alignments加起来?
  3. 问题3:怎么做训练?HMM用的是GMM我们不管它。而CTC,RNN-T用的是gradient descent,我们该怎么计算将这些alignment加起来的偏微分?
  4. 问题4:怎么做Decoding呢?怎么最优化这个P(Y|X)呢?

I End-to-end model Review

让我们再回到今日这些End-to-end技术,其实今日这些端到端技术,都可以说在计算P(Y|X),(参见下图LAS),也就是说给定一些acoustic feature:x1 x2 x3 x4 ,生成 token sequence:a b 的概率。对于LAS、CTC、RNN-T我们不需要像HMM去构造state,取而代之直接使用我们讲过的token(详细请参见课程P3,Grapheme Phoneme Morpheme Word Bytes)。

1 LAS (Listen,Attend,and Spell)

图一
我们在做语音辨识的时候,这些端到端系统,以LAS为例,我们都是在找一个Y使得P(Y|X)的几率最大。LAS可以想成是可以直接计算P(Y|X),参见上图,LAS的decoder部分,输入context vector c0,输出一个token的distribution,具体而言,目标Y是 a b,则计算第一个timestamp产生a 的几率p(a),再假设a已经被产生出来了,第二个distribution产生b的几率,接下来,假设a b都已经产生出来了,第三个distribution里面产生EOS的几率,把这些概率都乘起来就是我们要的P(Y|X)。即
P ( Y ∣ X ) = p ( a ∣ X ) p ( b ∣ a , X ) p ( E O S ∣ a , b , X ) P(Y|X) = p(a|X) p(b|a,X) p(EOS|a,b,X) P(YX)=p(aX)p(ba,X)p(EOSa,b,X)
而在真正训练的时候,我们没有办法每一步都得到最优解,也因此我们使用beam search方法在每一步distribution中都保留Beam size个几率最大的路径,而我们在训练的时候就是在训练参数𝜃 ,使得给定X生成 Y ^ \hat{Y} Y^与真正的Y的CrossEntropy越小越好,也就是P(Y|X)的几率越大越好

2 CTC & RNN-T

在这里插入图片描述
同样,对于CTC和RNN-T来说,计算的目标是一样的,(具体的计算方法请参见P5),也有同样关键的问题,那就是alignment的问题。
具体而言,
  同样对于给定acoustic feature:x1 x2 x3 x4 经过Encoder产生 h1 h2 h3 h4,要想通过h得到a b,我们就需要使用𝜙或重复a或b来构造alignment使得长度一样。如,h1->a,h2->𝜙,h3->b,h4->𝜙 alignment的正确方式有许多,只有这样我们才能计算P(Y|X),也因此我们将穷举所有可能的alignment的概率然后求和相加。

3 alignment problems in HMM,CTC,RNN-T

在这里插入图片描述

  1. 问题1:怎么穷举所有可能的alignments?
  2. 问题2:怎么把所有的alignments加起来?
  3. 问题3:怎么做训练?HMM用的是GMM我们不管它。而CTC,RNN-T用的是gradient descent,我们该怎么计算将这些alignment加起来的偏微分?
  4. 问题4:怎么做Decoding呢?怎么最优化这个P(Y|X)呢?

Q1 对于上述三种模型,怎么穷举所有正确的alignments

在这里插入图片描述

当然对于LAS没有这样的问题,但对于HMM、CTC、RNN-T这三者所需要做的alignments有相似的地方也有一些不同,在上图的例子里面,对于三个模型我们都假设acoustic feature由6个vector(T=6)组成,token sequence由3个token (N=3)c a t 组成,当然对于HMM来说我们要用state来当作真正的token,为了统一与便于理解,这里我们假设这里的token (c a t) 是形式化的state。
具体而言,
  我们怎么把这 3个token 与 6个vector匹配到一起呢?

  1. HMM:它会把 state 重复 到等长
  2. CTC:它有两种方法,1 重复 2 加 𝜙 直到等长(最后转成语音信号时,会去重,再去掉𝜙)
  3. RNN-T:它会加 T 𝜙(在训练的时候,声音讯号经过encoder得到hidden state h后,每次decoder输出一个𝜙的时候,模型就会处理下一个h,故输入T个h,会依次输出T个𝜙,注意这里要反向想,我们是根据声音讯号来生成token的,和上图的alignment正好相反,还没懂请参照该系列P5的Model3 : RNN-T的 II
(1)HMM的alignment穷举 :重复

在这里插入图片描述
横轴:acoustic features 纵轴:token
对于HMM,所有的alignment集合起来可以画在上图的表格中,HMM就是把c a t进行重复,让它长度变成T,参照上图,伪代码如下(真正代码大家想出来可以在留言区评论回答,我会更新到上面,简略为输入c a t ,输出长度为6且去重化简后结果仍为cat的alignment)。

For n=1 to N=3
	output t_n 次 token_n
# 限制:t_1 + t_2 + ... + t_N = T = 6, t_n > 0
注:t_n > 0 代表每个token必须出现至少一次

我们会把c重复t_1次,把a重复t_2次,把t重复t_3次,且t_1 + t_2 + t_3 = 6 && t_n > 0,注意是大于0不是大于等于,也就是说每一个token都要至少出现一次。
  而以上这些操作可以画在上图的表格里面,我们从起始点:红点出发,最终要走到终点:蓝点位置。在起始点,第一步一定要走↘(代表产生c),接下来每一步都有两个选择:
    →走代表重复当前token,↘走代表产生下一个token
而这条路径就是一个合法的alignment。

(2)CTC的alignment穷举 : 重复 或 加 𝜙 直到等长

在这里插入图片描述
横轴:acoustic features 间插入𝜙 纵轴:token
对于CTC,所有的alignment集合起来同样可以画在上图的表格中,但不同的是,CTC有两种选择:
(1)重复 或 (2)加 𝜙 ,直到等长,伪代码如下。

output 𝜙 c0次
For n=1 to N
	output t_n次 token_n
	output c_n次 𝜙
# 限制:t_1+t_2+t_3 + c_0 + c_1 + c_2 +... + c_N = T; t_n >0; c_n >=0
注:t_n > 0 代表每个token必须出现至少一次,c_n>=0代表每次可产生也可不产生𝜙

参照上图,我们从起始点:红点出发,最终可以走到终点:蓝点(无论哪一个)。在起始点,我们有两种选择↘或↘+↓,在𝜙点有→或↘,在token点有→、↘或↘+↓
    对起始点:↘代表插入𝜙 ,↘+↓代表产生下一个token
    对𝜙点:→代表重复𝜙 ,↘代表产生下一个token
    对token点:→代表重复本次token,↘代表插入𝜙 ,↘+↓代表产生下一个token

同样这样的一条路径就是一个合法的alignment
但CTC注意的是,有特殊用例,token有连续两个一样的,如 s e e,则在第一个e的时候,就不能走↘+↓产生下一个token,因为如果直接这样生成,后处理后ee -> e 两个e就变成一个e了。故连续相同的token间必须生成𝜙来间隔区分。

(3)RNN-T的alignment穷举:加 T个𝜙

在这里插入图片描述
横轴:acoustic features 纵轴:token
对于RNN-T,所有的alignment集合起来同样可以画在上图的表格中,RNN-T要选择在哪里生成 𝜙,且生成𝜙的个数必须和encoder产生的h数目相等,为T,伪代码如下。

output 𝜙 c0次
For n=1 to N
	output 1次 token_n
	output c_n次 𝜙
# 限制:c_0+c_1+c_2+.. + c_N = T; c_N>0; c_n >=0 (for n=1 to N-1)
注:= T 代表生成𝜙的个数与h相等,
   c_N>0代表对于最后一个token必须至少生成一个𝜙,
   c_n>=0代表在第n(n<N)个token时可以生成𝜙也可以不生成𝜙
   1 次 token_n 指 RNN-T不可重复token

参照上图,我们从起始点:左上蓝点出发,最终可以走到终点:右下点。在除了最后的token点,我们有两种选择→或↓,在最后的token点只有→
    对非最后的token点:→代表插入𝜙 ,↓代表产生下一个token
    对最后的token点:→代表插入𝜙
为什么对于最后的token点必须要有 插入𝜙 这一种选择呢,因为对每一个token点,模型是要输出一个𝜙 代表要处理下一个token了,故最后一个token是一定至少有一个𝜙的。

HMM、CTC、RNN-T

简略版可参见下图,如有问题请重新参看上面各模型的alignment,或留言提问。
在这里插入图片描述
剩下的问题会在下一篇中写到,所有的系列笔记都是完全匹配视频的分批版本的。

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

阿芒Aris

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

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

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

打赏作者

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

抵扣说明:

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

余额充值