前言:

{

最近在github上更新了一些代码,但没在这里更新文章,这次就在这写一篇论文的阅读笔记。

论文是《Connectionist temporal classification: Labelling unsegmented sequence data with recurrent neural 'networks》(Alex Graves, Santiago Fernández,Faustino J. Gomez, Jürgen Schmidhuber,https://www.researchgate.net/publication/221346365_Connectionist_temporal_classification_Labelling_unsegmented_sequence_data_with_recurrent_neural_%27networks),主题是序列识别的方法。

}

正文:

{

首先,论文的第一节Introduction提到了之前方法的问题:

  1. they usually require a significant amount of task specific knowledge, e.g. to design the state models for HMMs, or choose the input features for CRFs; (2)they require explicit (and often questionable) dependency assumptions to make inference tractable, e.g. the assumption that observations are independent for HMMs; (3) for standard HMMs, training is generative, even though sequence labelling is discriminative.

(1)通常这些方法需要很多任务专属的知识,比如说需要为HMMs设计状态模型,或为CRFs选择输入特征;(2)需要为这些方法做明显的依赖假设(经常存在问题),以使得推断可解,比如说需要为HMMs做观测独立的假设;(3)虽然序列标记是判别式的,但对于标准的HMMs,训练是生成式的。

接下来又说到循环神经网络(RNN)。用RNN需要分段,而最有效的方法还是结合HMMs(the most effective use of RNNs for sequence labelling is to combine them with HMMs ... The HMM component is able to automatically segment the sequence during training)。

第二节中,主要给出了一种误差:

其中,x代表输入序列,z代表标准标签,h代表本论文的模型,ED(A,B)代表由A变换到B所需要的修改的数量(添加和删除等都算是一次修改),S代表测试集。

第三节介绍了模型的大致过程,我理解的数据流如下:

声波序列x ------(通过循环神经网络)------> 各个标签(包括空白标签)在各个时段下的概率y -------(通过式(2),(3),(4))-------> 最终的标签输出h(x)

(4)

其中,L‘T代表所有长度为T的标签序列的集合。π为标签序列(可能包括空白),B为一种多对一的映射(例如B(a−ab−) = B(−aa−−abb) = aab,其中a和b为标签,−为空白标签。论文中说此映射是删除空白与重复标签)。

第四节中提到了模型的训练方法。

计算式(2),(3),(4)会很耗时(需要考虑所有的π和l),所以论文中就提出了一种递归的算法:

式(5)中定义的αt(s)指的是在x给出并且πt=ls的情况下,π的前t部分经B的映射后为I的前s部分的概率。

一通推导之后得出了式(8)。

又介绍了反向递归:

所以递归过程被分成了两部分。在πt=ls的情况下,两个概率部分相乘之后再除以ls的概率便可得到式(3),因此,对于所有的t和s,可得式(14)。

训练的目标函数如下:

所以每个网络的误差为目标函数(12)对每个网络每次输出的微分,即式(16)。

式中u为网络输出(我认为就是y),α和β都被归一化了。

第五节描述了实验结果。

按照我的理解,输入为每个时刻的被量化的声波幅值(量化为26种)。在TIMIT数据集上的结果对比如表1:

可以看到,相比于Weighted error BLSTM/HMM,CTC的效果没有明显优势,Weighted error是指根据输出的长短缩放误差信号(the error signal was scaled to give equal weight to long and short phonemes (Robinson, 1991))。

另外,论文中也提到CTC更适合噪音等级比较高的场景(a higher level of noise was found to be optimal for CTC)。

}

结语:

{

这边论文涉及的还是数学或统计学方法,在循环神经网络后加了一个统计学模型,并没有涉及新的网络结构。光公式就琢磨了很久,可能是我的数学熟练度不够吧。

}

联结主义时间分类(Connectionist temporal classification)的论文笔记相关推荐

  1. CTC的直观理解(Connectionist Temporal Classification连接时序分类),单行文本时序分类识别的端到端方法

    CTC(Connectionist Temporal Classification), ctc擅长单行验证码识别: 两组谷歌验证码示例 ctc可以提高单行文本识别鲁棒性(不同长度不同位置 ).本文用几 ...

  2. CTC介绍(connectionist temporal classification论文翻译)

    1.摘要 我基本是基于论文<Connectionist Temporal Classification: Labelling Unsegmented Sequence Data with Rec ...

  3. Connectionist Temporal Classification(CTC)、音识别模型小型综述和一个简易的语音识别模型的tensorflow实现

    CTC是一种端到端的语音识别技术,他避免了需要字或者音素级别的标注,只需要句子级别的标注就可以进行训练,感觉非常巧妙,也很符合神经网络浪潮人们的习惯.特别是LSTM+CTC相较于之前的DNN+HMM, ...

  4. 一文读懂CRNN+CTC(Connectionist Temporal Classification)文字识别

    先总结一把CTC,下面文档太长: CTC是一种Loss计算方法,用CTC代替Softmax Loss,TF和pytorch都有对CTC的实现,从而解决OCR或者语音识别中序列对齐的问题.CTC特点: ...

  5. CTC(Connectionist Temporal Classification)介绍

    CTC解决什么问题 CTC,Connectionist Temporal Classification,用来解决输入序列和输出序列难以一一对应的问题. 举例来说,在语音识别中,我们希望音频中的音素和翻 ...

  6. CMU 11-785 L16 Connectionist Temporal Classification

    Sequence to sequence Sequence goes in, sequence comes out No notion of "time synchrony" be ...

  7. 白话CTC(connectionist temporal classification)算法讲解

    CTC是计算一种损失值,主要的优点是可以对没有对齐的数据进行自动对齐, 主要用在没有事先对齐的序列化数据训练上.比如语音识别.ocr识别等等. CTC算法有个经典的英文的论文,但是相信大多数人和我一样 ...

  8. SST:Single-Stream Temporal Action Proposals论文笔记

    SST:Single-Stream Temporal Action Proposals 这是本仙女认认真真读完且把算法全部读懂(其实也不是非常懂)的第一篇论文 CVPR2017 一作 论文写作的动机m ...

  9. 《Universal Language Model Fine-tuning for Text Classification》论文笔记

    摘要 基于Pretrain-Finetune与语言模型的优点,作者提出 ULMFiT 迁移学习方法,降低深度学习模型对标注数据集的依赖, 以及提升模型表现. ULMFiT 包含三个主要步骤, 第一,在 ...

最新文章

  1. Linux EOF 输入流
  2. RabbitMQ 的这些骚操作你知道吗?
  3. TCP/IP总结(4)TCP 概述
  4. kubernetes+Azure DevOps实现.Net Core项目的自动化部署均衡负载
  5. java中延迟_Java中的延迟分配
  6. Activity与Fragment的onActivityResult细节
  7. [Java] 蓝桥杯ALGO-148 算法训练 5-1最小公倍数
  8. CTF中一点进制转换脚本记录
  9. 《单词的减法》state1~state17(第一遍学习记录)
  10. 【转载】Linux下rz,sz与ssh的配合使用
  11. 虚拟机 网卡模式配置
  12. CTCconnectionist temporal classfication: labelling unsegmented sequence data with recurrent(一)
  13. Python第四课:input()函数
  14. 大学十年(一个程序员的路程)
  15. Python中的Counter类
  16. 基于Java swing的多人,图片,语音聊天室
  17. uva 220 趣味黑白棋 精简代码
  18. android webview 播放视频总结,Android WebView 播放视频总结~
  19. [jobdu]二进制中1的个数
  20. RuntimeError: No such operator aten::cudnn_convolution_backward_weight

热门文章

  1. Android之百度地图集成
  2. pandas中计算分位数的方法describe,quantile,以及sql中计算分位数的方法percentile_approx,percent_rank() over()
  3. 过程控制系统与仪表 华南理工大学期末重点 王再英(第二版) 长篇思维导图
  4. 里约奥运会火的不是巴西而是中国互联网,自己看
  5. 高清地图生成技术综述
  6. 素数,质数,奇数,合数,偶数这些你都能分清吗?
  7. Android JS调原生 有盟分享 打开微信分享 原程序崩溃问题 报android.view.ViewRootImpl$CalledFromWrongThreadException:
  8. mybatis报错# Cause: Cause: org.xml.sax.SAXParseException;
  9. 年薪50万是一条线,年薪100万又是一条线…...
  10. RatingBar(星级评分条)