大数据文摘转载自数据实战派
文本生成对于许多自然语言处理应用来说都是非常重要的。
但神经语言模型的基于最大化的解码方法(如 beam search)往往导致退化解,即生成的文本是不自然的,并且常常包含不必要的重复。现有的方法通过采样或修改训练目标来引入随机性,以降低某些 token 的概率(例如,非似然训练)。然而,它们往往导致解决方案缺乏连贯性。
近日,来自剑桥大学、香港中文大学、腾讯 AI 实验室和 DeepMind 的科学家们证明,自然语言生成模型出现退化现象的一个潜在原因是 token 的分布式表示向量存在各向异性。
他们进一步提出了一个基于对比学习的自然语言生成框架。在两种语言的三个基准测试上进行的大量实验和分析表明,该方法在人工评估和自动评估两个方面上优于目前最先进的文本生成方法。
研究动机与主要研究内容
这项研究中,研究团队发现,神经语言模型的退化源于 token 表示向量的各向异性分布,即它们的表示向量驻留在整个空间的一个狭窄子集中。
图1(a)展示了 token 表示向量的 cosine 相似度矩阵,其中表示向量来源于 GPT-2 的最后一个隐层的输出。研究团队看到句子中 token 之间的余弦相似度超过 0.95,这意味着这些表征彼此十分接近。
在理想情况下,模型的 token 表示应遵循各向同性分布,即 token 相似度矩阵应是稀疏的,不同 token 的表示应是有区别的,如图2(b)所示。在解码过程中,为了避免模型退化,需要保留生成文本的 token 相似矩阵的稀疏性。
基于上述动机,研究团队提出了 SimCTG(一个简单的神经文本生成对比框架),该框架鼓励模型学习有区分度的、各向同性的 token 表示。
对比搜索背后的关键直觉是:
(1)在每个解码步骤,输出应该从组中选择最有可能的候选词的预测模型,以更好地维护生成的文本之间的语义一致性;
(2)token 相似矩阵的稀疏性应该保持以避免退化。
主要方法
研究团队的目标是鼓励语言模型学习有区别且各向同性的 token 表示。为此,在语言模型的训练中引入了一个对比损失函数 LCL。给定任意一个变长序列 x,该对比损失函数定义为:
其中,ρ 是预先设定的 margin,hxi 是模型输出的 xi 的表示向量。相似度函数 s 计算任意两个表示向量之间的余弦相似度:
可以想象,通过训练上述对比损失函数,不同 token 的表示间的距离将被拉开。因此,可以得到一个可分的、各向同性的模型表示空间。最终的总损失函数为:
研究团队提出一种新的解码方法:对比搜索(contrastive search)。每一步解码时,(1)模型从最可能的候选集合中选出一个作为输出,(2)产生的输出应当与前面已经生成的内容足够不同。这种方式下生成的文本在保持与前文的语义一致性的同时还能避免模型退化。具体来说,输出 xt 的生成满足:
其中 V(k) 是候选词集合,k 通常取 3 到 10。上式的第一项代表模型对 v 的支持度 v(model confidence),是模型估计的候选词 v 为下一个词的概率。第二项是对模型退化的惩罚项(degeneration penalty)是下一个词 v 与前面已生成的词的相似度最大值。α 是超参数,负责调节两项损失之间的平衡。当 α=0 时,解码方法退化到贪婪搜索。
效率分析:该方法可以有效地实现对比搜索。所需的额外计算是退化罚的计算,该计算可以通过简单的矩阵乘法来实现。后文将证明,对比搜索的译码速度优于或可与其他广泛应用的译码方法相媲美。
文本生成
首先在开放式文本生成任务(open-ended document generation)上评价研究团队所提出的新方法。
模型和基线 本文提出的方法与模型结构无关,因此可以应用于任何生成模型。在这项实验中,他们在具有代表性的 GPT-2 模型上评估了所提出的方法。
具体来说,研究团队在评估基准(详细如下)上使用提出的目标 LSimCTG 对 GPT-2 进行了调优,并使用不同的解码方法生成连续文本。使用基础模型(117 M 参数)进行实验,该模型由 12 个 Transformer 层和 12 个 attention head 组成,将本方法与两个强基线方法进行比较:
(1)GPT-2 在标准 MLE 损失函数上微调;(2)利用非似然目标函数微调。研究团队的实现基于 Huggingface 库(Wolf 等人,2019)。
基准数据集 研究团队在 Wikitext-103 数据集(Merity 等人, 2017)上进行了实验,该数据集包含了一个包含超过 1 亿单词。Wikitext-103 是一个文档级数据集,已被广泛用于大规模语言建模的评估。
评价指标
研究团队从两个方面进行评价:
(1)语言建模质量,衡量模型的内在质量;
(2)生成质量,用来衡量生成文本的质量。
l 语言建模质量
n 困惑度
n 预测准确率
n 预测重复率
l 文本生成质量
n 生成重复度
n 多样性
nMAUVE(一种度量机器生成文本与人类生成文本间相近程度的指标;MAUVE 越高,机器文本越像人类文本)
n 语义连贯性
n 生成文本的困惑度
实验结果
表1. 多种方法在 Wikitext-103 数据集上的测试结果
表1 展示了 Wikitext-103 数据集上的实验结果。
语言建模质量 从结果来看,SimCTG 获得了最好的困惑度和下一个 token 预测准确率。因为其使用了更有区分度的分布式表示,SimCTG 在进行下一个 token 预测时更不容易混淆,从而提高了模型性能。在 rep 和 wrep 度量上,非似然模型产生了最好的结果,但代价是复杂性和下一个 token 预测准确性方面的性能下降。
文本生成质量
首先,在 rep-n 和多样性指标上,SimCTG+对比搜索获得了最好的性能,表明它最好地解决了模型退化问题。其次,MAUVE 分数表明 SimCTG+对比搜索生成的文本在令牌分布方面与人类编写的文本最接近。第三,在所有方法中,SimCTG+对比搜索是唯一一种一致性得分在 0.6 以上的方法,表明该方法生成的文本质量高,且相对于前缀而言语义一致。最后,gen-ppl 度量也验证了 SimCTG+对比搜索的优越性,因为与其他方法相比,它获得了明显更好的生成困惑度。
此外,从 MLE 和 Unlikelihood 基线的结果来看,对比搜索仍然比贪婪搜索和 beam 搜索带来了额外的性能提升。然而,对比训练的性能提高仍然滞后于 SimCTG,这说明了对比训练的必要性。一个可能的原因是,没有对比损失 LCL,MLE 或 unlikelihood 训练出来的 token 表示不具备充分的可区分性。因此,不同候选对象的退化惩罚不易区分,输出的选择受模型置信度的影响,使得对比搜索的有效性降低。
人工评价
研究团队还通过内部评分平台,在高英语水平学生的帮助下进行了人工评价。所有生成文本和真实的后文放在一起随机打乱,然后由 5 个人类评分者评估,最终产生总共 9000 个标注样本。评估遵循李克特 5 点量表(1、2、3、4 或 5),从以下三个方面进行打分: