Distinct-1/2 是什么?衡量生成文本有多不重复
TL;DRDistinct-1 和 Distinct-2 是评价文本生成多样性的指标,分别统计生成内容里不重复的单词和不重复的相邻词对占比,数值越高说明表达越丰富。
Distinct-1 和 Distinct-2 是评价文本生成多样性的指标,看的是模型说话会不会翻来覆去用同几个词。Distinct-1 统计生成内容里不重复的单个词(unigram)占多少,Distinct-2 统计不重复的相邻两词组合(bigram)占多少。数值越高,说明表达越丰富,越不容易千篇一律。
怎么算
按 2015 年 Li 等人在对话生成研究里的原始定义:把模型生成的所有文本放在一起,数出有多少种不同的 unigram(或 bigram),再除以生成文本的总词数。举个例子,一个聊天机器人对一百个不同的问题都回答“我不知道”“好的”,词汇量很小,Distinct 分数就会很低;而回答内容各不相同、用词丰富的模型,分数会高得多。
需要注意口径问题:有些后来的实现和教程,把分母换成了全部 n-gram 的数量,而不是总词数,算出来的数和原论文不一样。不同论文之间比较 Distinct 分数时,最好先确认用的是哪种算法。
它为什么重要
早期的对话模型有个通病:倾向于输出“安全”但空洞的通用回答,因为这类回答在训练数据里出现得多,模型觉得最保险。Distinct 指标就是为了量化这个问题而流行起来的。在故事生成、对话、文案创作这类开放式任务里,它常和 BLEU、困惑度等指标一起报告。
局限
Distinct 只看“不重复”,不看“说得对不对、通不通顺”。一个随机乱说的模型也能拿到很高的 Distinct 分数。所以它必须和衡量质量、相关性的指标搭配使用,单看它容易被误导。它也受文本长度影响,生成越长,重复的概率越大,比较时要控制长度。