困惑度是评估生成语言是否「自然」的最常见标准,它的值越小,则表示模型生成的句子越接近人类语言。但是这种基于统计的方法并不能很好地评估生成质量,因此本文提出一种新的评估方式 HUSE,它为自然语言生成提供了结合人类和统计评估的新架构。
怎样度量生成的语言
生成文本是很多 NLP 任务的核心,但如何恰当地评估生成语言的「自然性」是很有难度的。好的评估指标应该不仅能捕捉到生成结果的质量,还能考虑到生成结果的多样性,这对对话或故事生成这类需要创造性的开放性任务尤为关键。
人类评估通常被视为金科玉律,既能捕捉质量也不会忽略多样性。但是,统计评估(即在参考测试集上的困惑度)也能捕捉多样性,因为它确保模型为新句子分配合理的概率,但是困惑度(Perplexity)无法提供充分的质量评估。
目前困惑度在语言模型等领域中是应用最广泛的度量方法,它刻画的是语言模型估计一句话出现的概率。困惑度有一个非常直观的理解,即我们可以认为它是平均分支系数。也就是说语言模型预测下一个词时平均可选的数量,即模型对下一个词的「困惑程度」。
现有的将统计评估和人类评估结合起来的方法是点对点的,这会导致有误导性的性能评估。常见的方法是通过概率模型的困惑度来评估多样性、通过对束搜索输出进行人类评估来衡量质量。这就会产生一种错觉:某个模型质量高且具备多样性,而现实则是这个模型要么只具备多样性,要么只能输出高质量的结果。
斯坦福的解决方案
在这篇论文中,斯坦福的研究者采用对抗的思想,用判别器判断句子到底是来自参考分布还是模型分布,并将最优判别器误差率的 2 倍作为理想的评估指标。如果模型生成的句子质量较低,则最优判别器能够对模型生成的句子进行准确地分类。如果参考分布包含该模型无法生成的句子(低多样性),则最优判别器也能够对来自参考分布的句子进行准确地分类。
但是,最优判别器并不可得。「人类」判别器无法高效捕捉多样性,训练得到的判别器(比如基于 GAN 或人类判断训练得到的判别器)也无法用于严谨的评估。
该研究的关键结果,即最优分类器依赖于两个数值:句子是模型生成的概率;句子才样子参考分布的概率。前者可以直接从模型中计算得到,后者可以通过人类判断的分数近似得到,从而得到图 1 所示的二维空间。
图 1:HUSE(Human Unified with Statistical Evaluation)是分类误差的两倍,即基于人类判断分数和模型预测概率来区分文本是来自参考数据还是模型生成。HUSE 能识别出质量和多样性存在问题的样本。
CodaLab 与 论文复现
该研究在 CodaLab 平台上提供了所有代码、数据和实验结果。值得注意的是,CodaLab 也是 Percy Liang 和斯坦福等研究者构建的一个开放平台,它希望能为可复现研究提供管理实验、数据等方法。
Codalab 地址:https://worksheets.codalab.org/worksheets/0x88644b5ee189402eb19d39d721d1005c
GitHub 地址:https://github.com/hughbzhang/HUSE
论文:Unifying Human and Statistical Evaluation for Natural Language Generation
论文链接:https://arxiv.org/pdf/1904.02792.pdf
我们该如何度量自然语言生成系统是否生成高质量和多样性的输出?人类评估可以捕捉质量,但是不能衡量多样性,因为这种方法不能分辨生成结果是不是简单地抄袭自训练集。但同时,基于统计的度量方法(即困惑度)能很好地捕捉多样性,但不能严格地度量质量,因为偶尔生成的低质量样本并不能得到充分的惩罚。
在这篇论文中,我们提出了一个统一的框架以同时评估生成质量与多样性,它主要通过预测一句话到底是机器生成语言还是人类语言,从而给出预测的最优误差率。我们表示,该误差率能通过结合人类和统计评估高效地估计,我们将使用的评估度量称之为 HUSE。
在摘要生成和聊天对话生成中,我们证明了 (1) HUSE 能够检测到纯粹人类评估无法发现的多样性缺陷,(2) 退火等技术在提升质量的同时降低了 HUSE 值,即以降低多样性为代价。
核心方法 HUSE
自然语言生成可以视为在给定先验句 x 的情况下生成后续 y 的概率,即 p_model(y | x)。现在我们理想的评估是判断 p_model 与真实的参考分布 p_ref 之间的距离,如果它们之间的距离很小,那么我们就可以说生成效果很好。
具体而言,如果 y 可以是机器生成的(采样自 p_model),也可以是人类的自然语言(采样自 p_ref),那么类似 GAN 的概念可以定义为:
如果我们有任意判别器,它尝试在给定 x 和 y 的情况下判断 z,那么我们可以定义 L*为该判别器最低可能误差率的两倍:
其中 L*即度量了 p_model 和 p_pref 的相似性,它是总变分散度(variational divergenc)的线性函数。因此,如果 p_model 和 p_pref 是互斥的,那么 L*就为 0,如果是等同的,那么 L*就为 1。
对于将 (x, y) 映射到 d 维实数φ(x, y) 的任意特征映射φ,我们可以将评估分数 L(φ) 定义为:
其中 L(φ) 会在所有依赖于φ的函数上做最优化,因此φ包含的信息越多,L(φ) 就会越低。这表示了两个内在关系:首先任何特征映射φ都会导致 L*的上边界(optimistic),即 L(φ) 能检测模型差的程度但却又不能确定好的程度;第二向 φ添加新特征只会提升上边界。
因为基于 (x, y) 的最优判别器只需要两个特征就足够了,我们可以将特征映射 φ 定义为如下:
此外,如果我们使用句子长度 len(y) 做正则化,它会构建更低或更紧致的分数。因此总的而言,HUSE 特征可以定义为如下:
其中 HJ(x, y) 为 20 个众包工作者的平均回复,图 2 展示了 Reddit 语料库的自然语言建模与 HJ(x, y)。
图 2:在 Reddit 语料库中,对于句子 y 中的「typicality」人类判断(HJ),它与其在语料库出现的频率高度相关(r = 0.92)。因此 HJ 是 log p_ref 很好的代理函数。
实验
研究者使用 HUSE 评估三种不同类型的单句子自然语言生成任务:1)无条件和高熵的语言建模;2)有条件和高熵的故事生成、聊天对话系统;3)有条件和低熵的文本摘要。实验表明,HUSE 为高熵任务上的多样性提供直接、可解释的评估,同时为低熵任务提供有用的模型诊断。
表 1:在文本摘要、故事生成、聊天对话系统和语言建模四种任务上最优模型的性能,评估指标为整体的拟合优度 (HUSE)、样本质量 (HUSE-Q) 和多样性 (HUSE-D)。HUSE 和 HUSE-Q 的范围是 0.0(完全可与参考文本区分开来)到 1.0(完全无法与参考文本区分开来),分类误差为 HUSE/2。当 HUSE-Q > HUSE 时,HUSE-D 的范围可能会超出 1.0,因为它的样本量较小。
图 3:HUSE-D 和 HUSE-Q 之间的权衡。点表示模型,颜色表示任务。神经模型(圆圈)使用退火生成(点标签表示 Temperature)。与右上最接近的模型越优秀,灰色的对角线表示 HUSE。任务的阴影区域表示严格主导该任务的模型。退火是对多样性和质量的权衡,但是它无法轻松地增加底层模型性能(HUSE)。
图 4:算法 1 中的二维分类问题在具备不同 Softmax Temperature 的摘要任务上的示例。每个点表示参考句子 φ_huse(x_i, y_i) 或模型生成句子 φ_huse(x_i, y'_ i)。颜色表示句子的来源 (z),阴影表示最近邻分类器的分类置信度。
图 5:HUSE 的估计也适用于较小的测试集规模,但是通常需要约 20 个众包工作者对每个样本进行评估。