本文主要是介绍CTC(Connectionist Temporal Classification)论文笔记,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
1. 思想
序列学习任务需要从未分割的输入数据中预测序列的结果。HMM模型与CRF模型是序列标签任务中主要使用的框架,这些方法对于许多问题已经获得了较好的效果,但是它们也有缺点:
(1)需要大量任务相关的知识,例如,HMM中的状态模型,CRF中的输入特征选择;
(2)需要有独立性假设作为支撑;
(3)对于标准的HMM模型,它是生成式的,但是序列标签时判别式的。
RNN网络除了出入与输出的表达方式需要选择之外不需要任何数据的先验。它可以进行判别训练,它的内部状态为构建时间序列提供了强大的通用机制。此外,其对时间和空间噪声具有很强的鲁棒性。
但是对于RNN呢,它是不能拿来做序列预测的,这是因为RNN只能去预测一些独立标签的分类,因而就需要进行序列预分割。要解决该问题,那么将RNN与HMM结合起来被称之为hybrid approach。在该方法中使用HMM为长序列结构数据建立模型,神经网络就提供局部分类。加入HMM之后可以使得在训练中自动分割序列,并且将原本的网络分类转换到标签序列。然而,它并没有避免上诉内容中HMM使用缺点。
这篇文章提出了CTC( Connectionist Temporal Classification),可以解决前面提到的两点局限,直接使用序列进行训练。CTC引入了一个新的损失函数,可以使得RNN网络可以直接使用未切分的序列记性训练。为了使用这个损失函数,为RNN引入其可以输出的“blank”标签。RNN的输出是所有标签的概率。
RNN可以输出“blank”的好处:
(1)RNN可以选择任意时刻给出一个标签,例如在没有信息输入的音频空白时间给“blank”标签,其它则出处对应的标签;
(2)“blank”标签可以在某一时刻对一个正确的标签给一个很高的概率,在之前我们是查看此时所有标签的概率分布。
2. Temporal Classification
这里将Temporal Classification定义为 h h h,训练数据集合 S S S中数据是成对存在的 ( x , z ) (x, z) (x,z),其中 x x x是训练的时序数据, z z z是标签数据。目标就是找到一个时序分类器 h h h使得 S S S中的 x x x被分类到 z z z。训练这个分类器,就需要一个错误度量,这里就借鉴了ED距离度量,而引入了label error rate(LER)。在这里还对其进行了归一化,从而得到了如下的形式:
L E R ( h , S , ) = 1 Z ∑ ( x , z ) ∈ S ′ E D ( h ( x ) ) − − − − − − ( 1 ) LER(h,S^{,})=\frac{1}{Z} \sum_{(x,z) \in S^{'}}ED(h(x))------(1) LER(h,S,)=Z1(x,z)∈S′∑ED(h(x
这篇关于CTC(Connectionist Temporal Classification)论文笔记的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!