语音识别4 --RNN-Transducer及其训练解码过程

1.RNA

  RNA提出的时间要比RNN-T晚,但是实际上是介于CTC和RNN-T之间的一种结构,在CTC中,有一个假设是输出之间相互独立的,但是这种假设其实不是很好,因为有时候下一阶段的输出和上一阶段的输出之间还是有较大的关系。因此,RNA在输出的过程中加了一个循环神经网络,使得上一时间段的输出做为决定下一时间段输出的一部分。

2.RNN-T

  前面的模型都是看到一个输入就有一个输出,假设我们遇到了一个状况就是:有时候一个发音要同时对应一串token而不是一个token,有什么办法解决这个问题?RNN-T就可以解决这类问题。

  RNN-T是看到一个输入后就一直输出,一直输出到model满意为止。类似于上图,看到一个h^t进来,先输出一个t,再输出一个h,如果看到h,model觉得满意了,没有什么东西可以输出了,它就输出一个null,对应与图中的空集符号\phi

2.1 RNN-T的运作方式

  先让h^t进来,丢给model,decoder先输出t,然后在输出h,然后输出null,意思就是给它下一个声音信号,再将h^{t+1}丢给模型,以此类推,有时候因为acoustic feature(声音信号)所包含的信息很少,所以丢给模型后,直接就输出null,就是没什么信息,直接再给它下一个声音信号。当输出下划线,图中为_,就表示我要产生新的词汇了。在每一个声音信号结束是都会生成一个\phi。如果进来的语音长度有T个acoustic feature,那么就会产生T个\phi
  在training的时候,RNN-T和CTC一样,有一个alignment问题。比如:有4个acoustic feature,标签为:“好棒”。那么要把4个acoustic feature读完就需要产生4个\phi,但是这4个\phi怎么放置?RNN-T和CTC一样,在training的时候,会穷举所有的alignment。

2.2 在原始的基础上加了一个recurrent network

  此时的结构在输出的基础上多加了一个recurrent network,h^t进入模型,decoder输出一个t,此时t就作为recurrent network的输入,然后recurrent network的输出就和下一阶段的decoder共同决定下一阶段的输出h,此时h就作为recurrent的输入,此时recurrent network的输出和下一阶段的decoder共同决定下一阶段的输出\phi,当遇到\phi作为recurrent network的输入时,此时recurrent network就忽略掉这一步的输入,将上一步h输入,recurrent network的输出继续作为这一阶段的recurrent network的输出,和下一阶段的decoder,共同决定输出e,依次类推,当recurrent network的输入为\phi时,直接忽略当前的输入,将上一时刻recurrent network的输出当做当前的输出,和下一阶段的decoder共同决定下一阶段的输出。(说的可能比较绕,但是看图应该就可以理解)。为什么要加这样一个recurrent network呢?原来的那个结构感觉也挺好的呀?

2.3 加上recurrent network的原因

  (1)为了训练而设计,在后面介绍时会理解他的巧妙之处。  (2)
可以看成一个languang model。

3.RNN-T 的训练

3.1 LAS产生label的计算

  LAS是可以看做能够直接计算给定一段acoustic feature时输出token sequences的概率,即p(Y|X),LAS每次给定一个acoustic feature就会产生一个token 的概率,将所有的概率乘起来就是token sequences的概率。其实在训练的时候,并不是在每一步都找概率最大的,这样会陷入局部最优,一般会用到beam search来寻找一个最优的概率。在图中,\hat{Y}表示的是正确的token sequence ,训练的目标就是要找到一个\theta,使得给定一段acoustic features时,输出\hat{Y}的概率最大。在测试的时候,就是根据训练找到的\在给定acoustic features时,找出概率最大的token sequence,就是语音识别的结果。

3.2 CTC和RNN-T的计算

  CTC和RNN-T都需要alignment,所以不能像LAS那样直接计算。

。其概率是穷举所有的alignment,将所有的alignment的概率加起来,就是token sequence的概率。所以会碰见的几个问题如下图:
image.png
  • 怎么计算所有可能的alignment
  • 怎么将所有可能的alignment加起来
  • 怎么训练\theta

3.2.1 所有的alignment

  HMM中是对token进行重复,CTC是引入了\phi,可以插在任何地方,但是其个数和token重复个数的和要等于acoustic features的个数,RNN-T也引入了\phi,但是其是作为一个acoustic feature结束,下一个acoustic features开始的间隔,因此,\phi的个数就等于acoustic features的个数。

  • HMM

    一个token可以重复t_{i}次,但是所有token重复次数的和要等于acoustic features的长度T,即图中灰色部分所描述的公式。表中横轴代表acoustic features,纵轴代表token。从左上角开始一直走到右下角,中间每一步只能有两个方向:向右走或者是向右下走。但是终点一定要是右下角才算是合法的路径。从起点开始一直走到终点的所有合法路径就是所有可能的alignment。下图就是一个非法路径

  • CTC
    CTC在最后合并token的规则是:(1)首先合并重复项(2)去掉token.例如:a a \phi \phi r \phi r\phi s s s \phis,经过第一步的结果是:a\phir\phir\phis\phi s,经过第二步的结果是a r r s s 。下面的合法路径的选择都是基于这个规则下。


      CTC中的\phi可以插在任何地方,开头,token之间或者结尾。但是\phi的个数加上token的个数要等于acoustic features的个数。其中\phi的个数可以为0,但是每一个token的个数不能为0。
    1
    2
    3
    4

  CTC和HMM不同,在CTC进行的过程中,纵轴是在开头,结尾和每一个token之间都插入一个\phi,其合法路径的规则有3个要求
  (1)其初始的起点可以有两个,即x^1处的状态可以使\phi或者是第一个token,这里是C;
  (2)其最后的终点也有两个状态,即x^6处的状态可以是\phi或者是最后一个token,这里是t
  (3)当中间状态是token时,且下一个token与之不重复时,其下一步的状态可以有3个,向右走--下一步还是当前的token,向右下方走--下一步就是\phi,跨越\phi向右下方走(走马步)--下一步就是下一个token,【见图3】
  (4) 当中间状态为\phi时,下一步只能有2种情况,向右走或者向右下方走。【见图2、图3】
  (5) 当中间状态是token时,且下一个token与之重复时,其下一步的状态只能是2个,向右走--下一步还是当前的token,向右下方走--下一步就是\phi【见图4】,如果走马步,就会在合并的时候丢失掉一个token,所以不能跨越\phi
下图举例列出了两条合法路径:

  • RNN-T
      在RNN-T的过程中,最后一个token后至少有一个\phi,因为他是作为一个acoustic feature和另一个acoustic feature的间隔,当一个单词说完,它肯定要出现\phi,不然下一段acoustic features没办法进来。而在token之间则可以有也可以没有。
      向右走表示,插入\phi,可以理解为当前的acoustic feature没有任何东西,什么都没有输出的,我先插入一个\phi,你再给我下一个acoustic feature。向下走就表示输出一个token,理解为当前的acoustic feature输出一个token。由于最后一个必须是\phi,所以终点在右下角还右边一格。
      RNN-T一个acoustic feature可以识别出很多token(参见上面的RNN-T的介绍),所以可能第一个acoustic features就把想要的东西全部都输出了,后面全部插入\phi即可。下图显示了一条非法路径

3.2.2 HMM、CTC、RNN-T的路径方式比较


  HMM的合法路径只能是复制自己和到达下一个token,CTC的合法路径是复制自己或者到\phi或者到下一个token,RNN-T的合法路径是到达下一个token或者插入\phi

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容