CTC理解

作者: 帅气的我要加油 | 来源:发表于2018-07-20 16:04 被阅读291次

    看了这篇Sequence Modeling with CTC搞懂了CTC,简单的记录一下。

    CTC(Connectionist Temporal Classification)是常用于语音识别、手写识别等识别模型的输出结果对齐。

    首先,X代表输入序列,a代表X中每个x经过模型得到的输出,Y代表label字符集。

    CTC可以简单地理解为:对于给定的X,为任意的一个y分配概率,即P(Y|X),计算这种概率的关键是“CTC如何理解输入X与输出Y的对齐”
    为了得到给定输入X时输出y的概率,CTC把二者之间所有可能的对齐方式的概率加起来。

    image

    这种对齐方式的缺点:

    (1)对于语音识别中类似静音这种情况,无输出,却强制只能输出lable集Y中的字符

    (2)对于“hello”这种重复字符,会折叠成“helo”

    因此,CTC引入空标识(blank token)。

    CTC的特性:

    (a)如果输入X前进到下一位,则相应的输出a必须相同或前进到Y中的下一位

    (b)X到Y一定是多对一的关系

    (c)Y的长度不能大于X的长度

    那么,对于一对儿(X,Y)来说,CTC的目标为:

    image

    其中,集合AX,Y为所有正确的对齐方式的集合,如下图等:

    image

    at表示时间步t上,Xt对应的输出at。

    However,这种计算方式较慢,因为需要遍历所有情况并相加。

    可以采用动态规划的方式加快计算,这里的动态规划根据性质“在某timestep上若at与at-1的输出相同,可以合并”进行计算。

    (下面这段英文说的就很明白,翻译成中文就显得很多余,直接粘过来了)

    image

    只要我们知道上一个timestep上的a,就可以计算当前的as,t

    两种情况:

    Case1、不能跳过Zs-1

    “不能跳过”有两种前提,任一满足即可:

    a、上一个token是来源于Y,即Zs-1 from Y

    b、若上一个token是空格,且在重复字符之间,也不能跳过,即Zs=Zs-2&&Zs-1=blank


    image
    image.png

    Case2、允许跳过Z中Zt的Z中Zt的上一个token Zt-1
    该情况的前提:
    空格符在不同的字符之间
    因此,我们到达Zt有三种方式,如下图


    image.png image.png

    总的来说,以上两种case到达涵盖了有效对齐的所有情况
    CTC的反向传播:把直接最大化概率的方式转化为最小化对数:


    image.png

    前向
    在训练完模型之后,需要对于给定输入X找到可能性最大的输出,即:


    image.png

    相关文章

      网友评论

          本文标题:CTC理解

          本文链接:https://www.haomeiwen.com/subject/qrvfmftx.html