CTC序列模型

背景

手写体识别、语音识别中,输入数据和输出的识别结果长度不一致、而且可变。直接用神经网络训练需要预分割、调整,得到对应关系,这很难做到。CTC提供了一种建模方式解决了这个问题[1]

CTC算法

调整(Alignment)

CTC不需要调整输入和输出,模型可以自动调整。引入空字符\epsilon一方面一段语音中确实是有“空”的部分,强迫这部分去从音素表中选一个元素是不合理的,另一方面这可以实现时间规整,使得输入输出可以对应起来,更重要的是提供了两个相同音素的分割。如下面的例子,如果没有\epsilon,“hello”会被认为成“helo”。

这种自动调整来自于CTC的“多对一(many-to-one)”映射特性。

误差函数(Loss Function)

输入语音信号X,输出识别的词句序列Y

如果训练模型是RNN,则RNN的每一小段时间的输出为概率p_t(a_t|X)。这里的隐含着条件独立的假设,可以大大简化模型。

动态规划算法

对所有可能的集合求边缘概率,这是CTC模型可以自动调整的原因。其组合随着序列长度增加指数增加,但可以用动态规划的方法高效求解一一因为可以合并经过共同节点的组合分支。

Summing over all alignments can be very expensive. Dynamic programming merges alignments, so it’s much faster.

写出概率传播的递推公式,即可用动态规划的方法求损失函数。


前向-后向算法

也可以采用HMM的前向-后向算法[2]。如下图的两个序列qr,两个路径都经过y_h^{14}=q_{14}=r_{14}这个点,表示在t=14时的音是h,概率记做p_{14}(h|X)。点y_h^{14}把路径qr分成两部分q[1:13]q[15:30]r[1:13]r[15:30],于是产生了4条路径。

path P
q \prod_{t=1}^{13} p_{t}(q_t|X) \cdot p_{14}(h|X)\cdot \prod_{t=15}^{30} p_{t}(q_t|X) = \prod_{t=1}^{30} p_{t}(q_t|X)
r \prod_{t=1}^{13} p_{t}(r_t|X) \cdot p_{14}(h|X)\cdot \prod_{t=15}^{30} p_{t}(r_t|X) = \prod_{t=1}^{30} p_{t}(r_t|X)
q[1:14]+r[14:30] \prod_{t=1}^{13} p_{t}(q_t|X) \cdot p_{14}(h|X)\cdot \prod_{t=15}^{30} p_{t}(r_t|X)
r[1:14]+q[14:30] \prod_{t=1}^{13} p_{t}(r_t|X) \cdot p_{14}(h|X)\cdot \prod_{t=15}^{30} p_{t}(q_t|X)

可以看出每一条路径可以分为p_{14}(h|X)和与这个点的概率无关的正向路径之和一一前置项P和后向路径之和一一后置项Q,边缘概率即4条路径相加
\begin{split} \sum_{A\in\mathcal{A}_{X,Y}}\prod_{t=1}^T p_t(a_t|X) &= P \cdot p_{14}(h|X) \cdot Q \\ &= [\prod_{t=1}^{13} p_{t}(q_t|X) + \prod_{t=1}^{13} p_{t}(r_t|X) ] \cdot p_{14}(h|X) \cdot [\prod_{t=15}^{30} p_{t}(q_t|X)+\prod_{t=15}^{30} p_{t}(r_t|X)] \end{split}

前置项和后置项都与递推公式,可以非常高效地计算出边缘概率。给定训练集\mathcal{D},通常用最小化负的对数似然代替最大化似然。
\sum_{(X,Y) \in \mathcal{D}} -\log p(Y|X)

推断(Inference)

推断(Inference)或称为解码(Decoding),指利用训练后的网络进行语音识别。
Y^* = \arg \max_Y p(Y|X)
常用的算法有“最优路径搜索”,“束搜索”,“前缀搜索”,参考[3][4],有很详细的介绍和代码。

附录

条件独立假设

前面提到了CTC的条件独立假设,理论上这会造成性能损失,可以后续用语言模型LM增加先验信息来修正。论文[5][6]提出考虑到历史输出y_{u_i-1}到RNN,如下图所示。

A schematic representation of CTC and RNNT.

[7]明确指出,这种条件独立是作用于语言模型(language model)的,声学模型(acoustic model)里每个音素的判别还是和前后输入序列有关(这种相关性通过RNN网络来自动建立)。语言模型可以通过在外面追加先验概率P(Y)来获得相关性,例如直接用语言模型进行shallow fusion/deep fusion[8]/cold fusion[9]/language model distill[10]。其优点缺点[11][1]里面有详细的分析。

通常认为CTC是一种hard alignment(RNN-Transducer同)[11]。文章[7]指出,这只是计算概率的一种方法,一个概念性的中间步骤,实际效果是是soft alignment。把beam search输出的N个序列里面每个位置用概率表示,可以看作是soft label。

算法说明

前面介绍了动态规划算法,前向-后向算法,还提到了最优路径搜索算法,束搜索算法,前缀搜索算法。这里再区分一下。

先回顾HMM模型的三大任务[12]

Task Algorithm Category
Scoring Forward-Backward (Message Passing, Sum-Product) Interference, marginal
Matching Viterbi (Max-Product) Interference, MAP
Training Baum-Welch (EM) Learning

第一个任务scoring用来计算某个数据属于模型的概率;第二个matching用来预测后续状态;第三个任务training用来估计模型参数。

在CTC的training过程中,用动态规划/前向-后向算法来计算marginal。在decoding过程中,用最优路径搜索/束搜索/前缀搜索来解码。前者对应HMM的scoring,后者对于matching。前者求边沿概率marginal,后者求最大概率MAP。

Reference


  1. Sequence Modeling With CTC

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

  3. CTC的Decode算法-Prefix Beam Search

  4. 连接时序分类

  5. Sequence Transduction with Recurrent Neural Networks

  6. Streaming End-to-end Speech Recognition for Mobile Devices

  7. An overview of end-to-end automatic speech recognition

  8. On Using Monolingual Corpora in Neural Machine Translation

  9. Cold fusion: Training Seq2seq models together with language models

  10. Learn spelling from teachers: Transferring knowledge from language models to sequence-to-sequence speech recognition

  11. A COMPARISON OF TECHNIQUES FOR LANGUAGE MODEL INTEGRATION IN ENCODER-DECODER SPEECH RECOGNITION

  12. 漫谈 HMM:Definition

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,591评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,448评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,823评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,204评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,228评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,190评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,078评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,923评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,334评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,550评论 2 333
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,727评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,428评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,022评论 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,672评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,826评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,734评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,619评论 2 354

推荐阅读更多精彩内容