CTC Loss和Focal CTC Loss

最近一直在做手写体识别的工作,其中有个很重要的loss那就是ctc loss,之前在文档识别与分析课程中学习过,但是时间久远,早已忘得一干二净,现在重新整理记录下

本文大量引用了- CTC Algorithm Explained Part 1:Training the Network(CTC算法详解之训练篇),只是用自己的语言理解了一下,原论文:Connectionist Temporal Classification: Labelling UnsegmSequence Data with Recurrent Neural Networ

解决的问题

套用知乎上的一句话,CTC Loss要解决的问题就是当label长度小于模型输出长度时,如何做损失函数。
一般做分类时,已有的softmax loss都是模型输出长度和label长度相同且严格对齐,而语音识别或者手写体识别中,无法预知一句话或者一张图应该输出多长的文字,这时做法有两种:seq2seq+attention机制,不限制输出长度,在最后加一个结束符号,让模型自动和gt label对齐;另一种是给定一个模型输出的最大长度,但是这些输出并没有对齐的label怎么办呢,这时就需要CTC loss了。
在这里插入图片描述

输出序列的扩展

在这里插入图片描述

所以,如果要计算?(?│?),可以累加其对应的全部输出序列o (也即映射到最终label的“路径”)的概率即可,如下图。

在这里插入图片描述

前向和后向计算

由于我们没有每个时刻输出对应的label,因此CTC使用最大似然进行训练(CTC 假设输出的概率是(相对于输入)条件独立的)
给定输入 x x x,输出序列 o o o 的条件概率是:
p ( π ∣ x ) = ∏ y π t t , ∀ π ∈ L ′ T p(\pi|x) = \prod y^t_{\pi_t}, \forall \pi \in L^{\prime T} p(πx)=yπtt,πLT
π t \pi _t πt 是序列 o o o 中的一个元素, y y y为模型在所有时刻输出各个字符的概率,shape为T*C(T是时刻,提前已固定。C是字符类别数,所有字符+blank(不是空格,是空) , y π t t y^t_{\pi_t} yπtt 是模型t时刻输出为 π t \pi _t πt的概率

我们模型的目标就是给定输入x,使得能映射到最终label的所有输出序列o的条件概率之和最大,该条件概率就是 p ( π ∣ x ) p(\pi|x) p(πx),和模型的输出概率 y y y直接关联

那么我们如何计算这些条件概率之和呢?首先想到的就是暴力算法,一一找到可以映射到最终label的所有输出序列,然后概率连乘最后相加,但是很耗时,有木有更快的做法?联系一下HMM模型中的前向和后向算法,它就是利用动态规划求某个序列出现的概率,和此处我们要计算某个输出序列的条件概率很相似
比如HMM模型中,我们要求红白红出现的概率,我们就可以利用动态规划的思想,因为红白红包含子问题红白的产生,红白包含子问题红的产生,参考引用的图片。
而这里我们以apple这个label都可以由哪些输出序列映射过去为例(T为8):
其中的一种 _ _ a p _ p l e
在这里插入图片描述
当然其他也可以如 a p p _ p p l e,但是考虑到我们最终对输出序列的处理(两个空字符之间的重复元素会去除,字符是从左到右的,且是依次的),我们的路径(状态转移)不是随便的,根据这样的规则,我们可以找到所有可以映射到apple的输出序列

在这里插入图片描述
很明显可以看到这和HMM很像,包含很多相同子问题,可以用动态规划做

定义在时刻t经过节点s的全部前缀子路径的概率总和为前向概率 α t ( s ) \alpha_t (s) αt(s),如 α 3 ( 4 ) \alpha_3 (4) α3(4)为在时刻3所有经过第4个节点的全部前缀子路径的概率总和: α 3 ( 4 ) \alpha_3 (4) α3(4) = p(_ap) + p(aap) + p(a_p) + p(app),该节点为p
在这里插入图片描述

类似的定义在时刻t经过节点s的全部后缀子路径的概率总和为前向概率 β t ( s ) \beta_t (s) βt(s),如 β 6 ( 8 ) \beta_6 (8) β6(8)为在时刻6所有经过第8个节点的全部后缀子路径的概率总和: β 3 ( 4 ) \beta_3 (4) β3(4) = p(lle) + p(l_e) + p(lee) + p(le_),该节点为l
在这里插入图片描述

总结

在这里插入图片描述

Focal CTC Loss

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
实现
在这里插入图片描述

参考论文 Focal CTC Loss for Chinese Optical Character Recognition on Unbalanced Datasets


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值