1.1 LAS产生label的计算

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

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

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

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

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

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




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

RNN-T

在RNN-T的过程中,最后一个token后至少有一个
ϕ,因为他是作为一个acoustic feature和另一个acoustic feature的间隔,当一个单词说完,它肯定要出现
ϕ,不然下一段acoustic features没办法进来。而在token之间则可以有也可以没有。

向右走表示,插入
ϕ,可以理解为当前的acoustic feature没有任何东西,什么都没有输出的,我先插入一个
ϕ,你再给我下一个acoustic feature。向下走就表示输出一个token,理解为当前的acoustic feature输出一个token。由于最后一个必须是
ϕ,所以终点在右下角还右边一格。

RNN-T一个acoustic feature可以识别出很多token(参见上面的RNN-T的介绍),所以可能第一个acoustic features就把想要的东西全部都输出了,后面全部插入
ϕ即可。下图显示了一条非法路径
1.2.2 HMM、CTC、RNN-T的路径方式比较

HMM的合法路径只能是复制自己和到达下一个token,CTC的合法路径是复制自己或者到
ϕ或者到下一个token,RNN-T的合法路径是到达下一个token或者插入
ϕ。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)