← 返回题目列表

CTC Loss 解决什么问题?

高频 困难 第 11 / 25 题 更新于 2026/09/20
RNNLSTMGRU序列建模
学习 AI 实战项目

简化版

CTC 用 blank 和对齐路径边缘化,在不知道帧级标签对齐时训练输入长序列到较短标签序列。它假设给定输入后各时间步条件独立,通过动态规划求所有能折叠成目标序列的路径概率。

详细版

  • 路径先合并连续重复符号,再删除 blank。

  • 重复标签之间必须有 blank 或其他符号分隔。

  • 输入时间步必须足以容纳标签与必要分隔。

  • 前向后向算法避免枚举指数条路径。

  • 解码可用 greedy 或带语言模型的 prefix beam search。

完整版教学

一、CTC 把未知对齐当隐变量求和

语音帧与文字长度不同且边界未知,强制人工对齐成本高。

CTC 为每帧输出字符加 blank,再把所有合法路径概率相加。

时间步独立假设限制了语言依赖,因此实际系统常结合外部语言模型或改用 RNN-T/attention。

二、底层机制与公式

B(a)=remove_blank(merge_repeats(a))
P(y|x)=sum_(a:B(a)=y) product_t P(a_t|x)

三、带数字的推演

目标是 aa,路径 a a 会先合并成单个 a,不合法;至少需要 a blank a 三步。

因此标签长度 2 不代表输入长度 2 一定可训练。

四、方案对比

方案/对象核心特点代价或边界
CTC无需帧级对齐、单调独立假设强
Attention seq2seq对齐灵活流式与长序列较难
RNN-T流式且建模输出历史训练解码更复杂

五、执行流程

编码 T 帧 -> 输出 T×(V+blank) 概率 -> 前向后向累加合法路径
-> 负对数似然 -> 反向训练 -> greedy/prefix beam 解码

六、边界条件与工程代价

若 input_length 包含 padding,CTC 会把补齐帧当真实证据;长度张量必须是下采样后的有效长度。

blank id、词表 id 与解码器映射不一致会造成看似收敛却输出异常,需用小例子核对折叠。

记忆钩子:CTC 三步记忆:“路径含 blank,连续重复先合并,blank 再删除”。

七、常见误区与追问

  • 误区:blank 就是空格字符。 它是对齐占位符,折叠时删除。

  • 追问:重复字符为何困难? 连续相同符号会被合并,需 blank 分隔。

  • 误区:CTC 会学习任意乱序对齐。 它要求输出顺序与输入单调一致。

  • 追问:训练复杂度如何控制? 用前向后向动态规划而非枚举路径。

  • 追问:为什么加语言模型? CTC 帧独立输出对语言依赖建模较弱。

八、加强记忆

CTC 三步记忆:“路径含 blank,连续重复先合并,blank 再删除”。

训练把所有合法单调路径求和,解码才选择具体序列。