跳转到内容

输入关键词开始搜索

    资料摘要:Connectionist Temporal Classification

    论文摘要更新 2026-08-17置信度 high待阅读原始来源 ↗#深度#基础#语音识别#序列标注

    Graves 等人在 ICML 2006 提出 CTC:不要求输入帧与目标标签的逐帧对齐,而是在“标签 + blank”构成的全部单调路径上边缘化,用 forward-backward 动态规划直接最大化正确标签序列的概率。

    • 问题设定:输入是长度为 TT 的连续特征序列,监督只给长度为 UU 的标签序列,且没有帧级边界;传统逐帧交叉熵无法直接训练。
    • 表示创新:输出层比标签表多一个 blank 单元。长度为 TT 的逐帧输出形成路径 oldsymbol\pi,折叠映射 B\mathcal B 先合并连续重复标签,再删除 blank。
    • 概率定义:一条路径的概率是逐时刻输出概率之积;一个标签序列的概率,是所有可折叠为它的路径概率之和。
    • 可训练性:CTC forward-backward 算法在插入 blank 的扩展标签序列上递推,无需显式枚举指数级路径;最大似然目标可用 BPTT 和常规梯度优化器训练。
    • 训练与解码分层:训练边缘化全部合法路径;推理时可用 best-path 或 prefix search 近似寻找概率最大的标签序列,两者不是同一个操作。
    • 实验结果:TIMIT 音素标注中,CTC prefix search 的 LER 为 30.51 ± 0.19%,优于论文中的 context-dependent HMM(35.21%)与 weighted-error BLSTM/HMM(31.57 ± 0.06%)。
    • 历史边界:这篇论文证明了“无显式分段的神经序列标注”可行,但实验规模、声学特征与解码器均属于 2006 年条件,不能把表中数值直接与现代 ASR 比较。
    CTC 路径边缘化与 Forward-Backward 算法
    CTC 路径边缘化与 Forward-Backward 算法

    标准神经网络损失要求每个输入时刻都有目标标签。语音、手写等任务通常只给最终转写,不知道每个字符或音素对应哪几帧。论文把 RNN 输出解释为给定输入后的逐时刻标签分布,并让网络同时考虑所有可能对齐。

    对路径 πLT\boldsymbol\pi\in L'^T,其中 L=L{blank}L'=L\cup\{\mathrm{blank}\},论文定义:

    p(πx)=t=1Tyπtt.p(\boldsymbol\pi\mid\mathbf x)=\prod_{t=1}^{T}y_{\pi_t}^{t}.

    然后用多对一映射 B:LTLT\mathcal B:L'^T\to L^{\le T} 删除连续重复与 blank。目标标注 l\mathbf l 的条件概率为:

    p(lx)=πB1(l)p(πx).p(\mathbf l\mid\mathbf x)= \sum_{\boldsymbol\pi\in\mathcal B^{-1}(\mathbf l)} p(\boldsymbol\pi\mid\mathbf x).

    因此 CTC 的关键不是“找一条正确对齐再训练”,而是把所有与目标文本一致的对齐当作隐变量并求和。

    blank 表示当前时间步不发射标签,不等于声学静音。它有两个作用:

    1. 允许输入帧数远多于输出标签数;
    2. 区分相邻重复标签,例如路径 A- A 可折叠为 AA,而连续 AA 会先合并成单个 A

    折叠顺序必须理解为:先合并原路径中的连续重复,再删除 blank。例如:

    • A A - BAB
    • A - A BAAB
    • - C - A - T -CAT

    直接枚举 LT|L'|^T 条路径不可行。论文为目标序列首尾和相邻标签之间插入 blank,得到长度 2U+12U+1l\mathbf l';动态规划状态 αt(s)\alpha_t(s) 表示到时间 tt 已覆盖扩展序列位置 ss 的路径总概率。

    状态只允许三类推进:停留在当前位置、前进一步、在标签不重复且当前位置不是 blank 时跨过一个 blank。这样可在 O(TU)O(TU) 量级完成路径求和。Backward 变量 βt(s)\beta_t(s) 从序列尾端作对称递推;两者还可组合得到每个时刻经过某标签位置的后验占用概率,并据此计算梯度。

    论文还讨论了数值下溢:对每个时刻的 forward / backward 变量缩放,并把序列对数似然写成缩放因子的对数和。现代框架通常在 log domain 或经过数值稳定化的算子中实现同一思想。

    训练集 SS 上的目标为:

    OML(S,Nw)=(x,z)Slnp(zx).O^{\mathrm{ML}}(S,\mathcal N_w) =-\sum_{(\mathbf x,\mathbf z)\in S} \ln p(\mathbf z\mid\mathbf x).

    论文进一步推导了损失对 softmax 前激活的梯度。直观上,它比较“模型当前逐帧分布”和“所有合法路径构成的后验占用分布”:模型在某时刻对标签给得过多就压低,给得过少就提高。

    • Best path decoding:每帧取最大概率符号,再执行 B\mathcal B;便宜,但最高概率路径不一定属于最高概率标签序列。
    • Prefix search decoding:逐步扩展标签前缀并累计其所有路径概率;更接近目标,但最坏情况下搜索空间随长度指数增长。
    • 论文利用训练后输出常呈“blank 间隔的尖峰”这一现象,把序列按高 blank 概率位置分段以加速 prefix search;这是实验启发式,不是 CTC 损失本身。

    论文使用 61 个 TIMIT 音素,输入是每 5 ms 移动一次的 10 ms 帧;每帧包含 12 个 MFCC、log-energy 及其一阶差分,共 26 维。CTC 网络为双向 LSTM,正反向各 100 个 block,输出为 61 个音素加 blank,共 114,662 个权重。

    系统 LER
    Context-independent HMM 38.85%
    Context-dependent HMM 35.21%
    BLSTM/HMM 33.84 ± 0.06%
    Weighted-error BLSTM/HMM 31.57 ± 0.06%
    CTC(best path) 31.47 ± 0.21%
    CTC(prefix search) 30.51 ± 0.19%

    这些结果支持 CTC 在当时无需手工分段、任务特定状态模型和 HMM 后处理即可工作。它们不证明 CTC 在所有数据集或现代架构上始终优于 Transducer、attention decoder 或强制对齐系统。

    • 论文真正的范式贡献,是把未知对齐作为隐变量边缘化,并把这一概率模型接到可微神经网络上;blank 只是实现该空间的一部分。
    • 逐时刻输出在给定网络内部状态后的条件独立分解,是路径概率乘积成立的模型假设;RNN 隐状态仍可编码前后文,因此不等于原始输入帧彼此独立。
    • CTC 不显式建模输出标签之间的依赖。语言模型、prefix beam search 或更强 decoder 可以弥补这一点,但会改变解码系统而非基础损失。
    • 论文使用 BLSTM 和完整序列,不能直接推出低延迟流式能力;流式 CTC 还需因果或 chunk encoder、稳定提交规则与延迟控制。
    项目 论文信息
    会议 ICML 2006
    作者 Alex Graves、Santiago Fernández、Faustino Gomez、Jürgen Schmidhuber
    原始 PDF Toronto 官方 PDF
    页数 8
    原图 / 表格 Figure 1–4 / Table 1
    编号公式 (1)–(16)
    参考文献 17 条
    全文译稿 中文全文译稿
    精读笔记 CTC 精读笔记