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

长度归一化:别让长句子在打分时吃亏

一句话定义

长度归一化(Length Normalization)是在序列生成任务(机器翻译、文本摘要、语音识别等)中,把模型给整句打的累计分数按句子长度折算一下,让长短不同的候选句能在同一尺度上比较。

问题出在哪

beam search 每生成一个词,就给这个词一个概率,取对数后累加到整句分数上。对数概率是负数,所以每多一个词,总分就更低一点。一个 50 词的句子要被压低 50 次,一个 10 词的句子只被压低 10 次。如果直接比总分,短句基本稳赢,模型会系统性地偏向短输出——哪怕长句其实更好。

打个比方:评分员给作文打分,每写对一个要点加一分,不设上限。写 100 个要点的人当然分高,但你分不清他是写得好还是写得多。想比较“平均质量”,就得除以要点数。这就是最朴素的长度归一化:分数 ÷ 长度。

但不能傻除

完全平均也有副作用。句子越短,“平均每词分数”越容易被推高——三个词的残句可能每个词都很常见、概率都很高,平均下来反而压过完整通顺的长句。所以实践中常用折中:分数除以长度的 α 次方,α 取 0 到 1 之间(常见取值在 0.6 上下,具体以各自实现和官方文档为准)。

  • α 接近 0:几乎不归一化,偏爱短句;
  • α 等于 1:完全按平均每词打分,偏爱“每词都很稳”的可疑短句;
  • 0 < α < 1:折中,长句有优势但不会无限膨胀。

和相邻概念的区别

做法直觉倾向
原始对数概率累加每个词的分数直接相加明显偏爱短句
除以长度平均每词分数偏爱短而“稳”的句子
除以长度^α折中折算长短都有机会胜出
  • 和 beam search 的分数本身:长度归一化不是新的打分模型,只是排序前对分数做的一次换算。
  • 和“长度惩罚”(length penalty):基本是同一件事的两种写法,一个除以长度,一个在分数上加长度相关的奖惩项,调参方向相反,目的相同。
  • 和 BLEU 的简短惩罚(brevity penalty):那是评估指标为惩罚过短译文而设的;长度归一化是解码时为避免系统性偏短而设的。一个在评估端,一个在生成端,互为镜像。

对从业者的实际意义

调 α 本质上是在调输出“话多话少”。做摘要时 α 偏大,系统更愿意铺开写,信息更全但可能啰嗦;α 偏小,输出紧凑却容易漏掉次要信息。做翻译时 α 偏小会漏译或断句,偏大会硬凑词。上线前建议在固定测试集上扫一遍 α,同时看输出长度分布和人工评价怎么变,别只盯一个自动指标——BLEU、ROUGE 这类指标本身对长度敏感,α 一改指标就变,未必说明模型变好了。

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