跳到主内容
快讯直播
AI智模界
AI 词典

CTC 损失:不用逐帧对齐也能训语音识别

一句话定义:CTC(Connectionist Temporal Classification,连接时序分类)损失是一种专门为“输入和输出长度不一致、又没有逐帧对齐标注”的序列任务设计的损失函数,最典型的应用是语音识别。

假设你有一段 3 秒的“你好世界”录音,模型每 10 毫秒输出一帧,大约 300 帧;可你手里只有整句文字“你好世界”,不知道“你”对应哪几帧。CTC 的做法是:让模型在每一帧从“你、好、世、界、空(blank)”里选一个,得到一个长度 300 的路径;再定一条压缩规则——先把连续重复的标签合并成一个,然后删掉所有空白符。比如路径“你 你 空 好 好 空 世 界 界 空”,压缩后就是“你好世界”。训练时,CTC 把所有能压缩成“你好世界”的路径的概率加起来,最大化这个总概率。路径太多不能穷举,所以用动态规划(前向-后向算法)来算。这就像老师只要求你最终说出正确的句子,不管你中间怎么停顿、怎么重复,只要按规则压缩后对就行。

那张 blank(空白符)表是 CTC 的代价,也是它的关键。blank 不只是占位,它有两个作用:一是表示“这一帧没有输出”;二是隔开相邻的相同标签——想输出“你你”,必须写成“你 空 你”,否则连续两个“你”会被合并成一个。代价也来自这里:blank 和真实标签会竞争,训练初期模型容易“摆烂”一直输出 blank,需要学习率预热、课程学习等技巧来稳住。

和相邻方案的区别可以看这张表:

方案需要逐帧对齐是否需 blank输出独立性典型场景
逐帧交叉熵是否假设各帧独立帧级标注任务
CTC否,只需整句标签是假设各帧独立语音识别、手写识别
注意力 seq2seq否否可建模标签依赖机器翻译、语音识别

CTC 假设每个时间步输出条件独立,所以它不会自动学到“你好”后面接“世界”这种标签间的依赖,通常要外挂语言模型或 beam search 来补救。另外,它要求输出长度不能超过输入长度(考虑重复和 blank 后的扩展),太短的音频配太长的文本就无能为力。

对从业者,CTC 最大的好处是标注便宜:只要整句转写,不用时间戳,数据门槛低,语音识别、OCR(Optical Character Recognition,光学字符识别)都能用。对普通人,这意味着语音转文字、会议纪要等功能可以用更少的人工标注训出来。具体框架的实现细节和默认参数,以官方页面为准。

AI 生成本文由 AI 基于公开信息自动生成,仅供参考。