跳转到内容

输入关键词开始搜索

    CTC(连接时序分类)

    概念更新 2026-08-17置信度 high#概念#基础#语音识别#序列标注

    一种对所有合法单调对齐路径求和、无需帧级边界即可训练序列标注模型的最大似然方法。

    CTC(Connectionist Temporal Classification)解决这类监督不匹配:

    • 输入是长序列 x=(x1,,xT)\mathbf x=(x_1,\ldots,x_T)
    • 目标是较短标签序列 y=(y1,,yU)\mathbf y=(y_1,\ldots,y_U)
    • 通常 UTU\le T,但不知道每个 yuy_u 对应哪些输入时刻。

    它在标签表中增加 blank,把模型的逐帧输出解释为路径分布,再把所有能折叠成目标序列的路径概率相加。训练最小化目标序列概率的负对数。

    符号 典型 shape 语义
    x\mathbf x (T,m)(T,m) 输入特征序列,TT 是 encoder 输出步数
    y\mathbf y (U,)(U,) 目标标签序列,不含 blank
    z\mathbf z / logits $(T, L +1)$ 每个时间步对标签与 blank 的未归一化分数
    p\mathbf p $(T, L +1)$ softmax 后逐帧概率
    π\boldsymbol\pi (T,)(T,) 一条标签/blank 对齐路径
    y\mathbf y' (2U+1,)(2U+1,) 在目标首尾及相邻标签间插入 blank 的扩展序列
    α,β\alpha,\beta (T,2U+1)(T,2U+1) forward / backward 动态规划状态
    LCTC\mathcal L_{\mathrm{CTC}} 标量 单样本或 batch 聚合后的负对数似然

    这里的 TT 不是 waveform sample 数,而是声学 encoder 或 CTC head 的输出时间步数。

    1. 省去帧级标注:只需完整输入和目标转写,不要求人工给出字符、音素或动作边界。
    2. 端到端可微:路径求和与最大似然目标可以直接对 encoder / RNN 反向传播。
    3. 单调对齐先验:适合语音、手写等输出顺序与输入时间顺序一致的任务。
    4. 计算可行:forward-backward 把指数级路径求和化为约 O(TU)O(TU) 的动态规划。
    5. 接口简洁:训练只需 logits、目标标签、输入长度和目标长度,现代框架已有稳定算子。

    令标签字母表为 LL,加入 blank 后得到 L=L{}L'=L\cup\{\varnothing\}。模型在每个时间步输出:

    pt(kx),kL.p_t(k\mid\mathbf x),\qquad k\in L'.

    给定 encoder 表示后,CTC 把一条完整路径的概率分解为逐时间步概率之积:

    p(πx)=t=1Tpt(πtx).p(\boldsymbol\pi\mid\mathbf x) =\prod_{t=1}^{T}p_t(\pi_t\mid\mathbf x).

    “相乘”发生在一条固定路径内部;RNN、BLSTM 或 Transformer encoder 仍可让每个时间步的分布利用上下文。

    折叠映射 B\mathcal B 执行两步:

    1. 合并原路径中连续相同的非 blank 标签;
    2. 删除全部 blank。

    例如:

    路径 折叠结果
    A A - B AB
    A - A B AAB
    - C - A - T - CAT

    相邻重复标签必须由 blank 隔开,否则会先被合并。因此 blank 既提供“不发射标签”的时刻,也使 AA 这类目标可表示。

    同一目标序列通常对应许多不同路径。CTC 对这些互斥路径边缘化:

    p(yx)=π:B(π)=yp(πx).p(\mathbf y\mid\mathbf x) =\sum_{\boldsymbol\pi:,\mathcal B(\boldsymbol\pi)=\mathbf y} p(\boldsymbol\pi\mid\mathbf x).

    “求和”发生在不同合法路径之间。它表达的是:模型不必先决定唯一边界,只要所有与正确文本一致的对齐总概率足够高即可。

    单样本损失为:

    LCTC=logp(yx).\mathcal L_{\mathrm{CTC}} =-\log p(\mathbf y\mid\mathbf x).

    负号把最大化正确序列概率改写为最小化目标;对数把极小概率变到稳定的加法尺度,并放大“正确序列总概率接近零”的惩罚。

    先构造:

    y=(,y1,,y2,,yU,),\mathbf y'=(\varnothing,y_1,\varnothing,y_2,\ldots,y_U,\varnothing),

    长度为 2U+12U+1。Forward 状态 αt(s)\alpha_t(s) 汇总所有在时刻 tt 到达 ysy'_s 的合法路径概率。常见紧凑递推写法是:

    αt(s)=pt(ysx)[αt1(s)+αt1(s1)+1skipαt1(s2)],\alpha_t(s)=p_t(y's\mid\mathbf x) \left[ \alpha{t-1}(s)+\alpha_{t-1}(s-1) +\mathbb 1_{\mathrm{skip}}\alpha_{t-1}(s-2) \right],

    其中只有当 ysy'_s 不是 blank,且它不等于 ys2y'_{s-2} 时,1skip=1\mathbb 1_{\mathrm{skip}}=1。这条限制防止跨过 blank 后把相邻相同标签错误合并。

    最终概率可由末尾两个状态得到:

    p(yx)=αT(2U)+αT(2U+1).p(\mathbf y\mid\mathbf x) =\alpha_T(2U)+\alpha_T(2U+1).

    Backward 变量从右向左作对称递推。αt(s)βt(s)\alpha_t(s)\beta_t(s) 可用于计算合法路径在时刻 tt 占用扩展标签位置 ss 的后验质量。

    CTC 路径边缘化与 Forward-Backward 算法
    CTC 路径边缘化与 Forward-Backward 算法

    训练阶段:

    • 已知目标 y\mathbf y
    • 对所有满足 B(π)=y\mathcal B(\boldsymbol\pi)=\mathbf y 的路径求和;
    • 不选择唯一对齐。

    推理阶段:

    • 目标文本未知;
    • greedy / best path 每帧取最大符号再折叠;
    • prefix beam search 累计标签前缀的多条路径概率;
    • 可再融合语言模型、词典或上下文约束。

    因此,“CTC 训练时考虑全部路径”与“推理时取 Viterbi 路径”并不矛盾,它们属于不同阶段。

    • 2006:Graves 等提出 CTC,用 RNN / BLSTM 在 TIMIT 上直接训练未分段音素序列。
    • 端到端 ASR:CTC 逐渐成为声学 encoder 的主损失、辅助损失或对齐头。
    • 自监督语音模型:预训练 encoder 可在少量标注下接 CTC head 微调转写。
    • 混合解码与对齐:CTC posterior、Viterbi path 或 spike 可供字幕时间戳、forced alignment、TTS 数据组织使用。
    • 现代多任务系统:CTC 常与 attention decoder、Transducer 或 flow / diffusion 中间层联合训练,承担单调对齐与内容约束。
    • “blank 就是静音”:错。blank 表示当前 CTC 步不发射标签;静音可以被 encoder 表示,但两者没有一一对应关系。
    • “CTC 会找出真实边界”:不保证。训练边缘化对齐,输出 spike 只是模型形成的概率结构;Viterbi 路径也不是人工边界真值。
    • “连续两个相同标签就会输出两个字”:错。连续重复会被折叠;目标 AA 需要 A- A 等中间有 blank 的路径。
    • “训练就是 greedy 解码后算交叉熵”:错。训练对所有合法路径求和,greedy 只用于推理近似。
    • “逐时刻概率相乘意味着 encoder 看不到上下文”:错。条件独立分解约束输出概率形式,encoder 隐状态仍可利用全局或局部上下文。
    • “CTC 天生流式”:不一定。若 encoder 是 BLSTM 或全局 attention,仍依赖未来帧;流式性取决于 encoder、chunk、缓存和提交策略。
    • “CTC 能输出比输入时间步更多的标签”:不能。标签序列长度受 TT 约束,重复标签还需要额外 blank 步。
    方法 对齐处理 输出依赖 典型特点
    逐帧交叉熵 需要帧级标签 每帧分类 简单,但依赖已分段监督
    CTC 边缘化全部单调路径 不显式自回归建模标签历史 训练稳定、解码可并行或 beam search
    RNN-T / Transducer 在时间轴与输出轴二维路径上边缘化 prediction network 显式依赖标签历史 更适合流式,但训练/解码更复杂
    Attention encoder-decoder 学习软注意力对齐 自回归依赖输出历史 表达力强,但单调性与长序列稳定性需额外约束
    Forced alignment 文本已知,求单条或后验边界 不负责识别未知文本 用于时间戳、数据切分与监督构造

    CTC 与 CTC-TTS 的关系也要分清:CTC-TTS 使用训练好的 CTC-ASR 对齐器取 Viterbi 路径,构造音素—语音 token 的局部块;TTS 生成器自身优化的是语音 token 交叉熵,并非 CTC loss。