论文标题:Generalization through Memorization: Nearest Neighbor Language Models
论文作者:Urvashi Khandelwal, Omer Levy, Dan Jurafsky, Luke Zettlemoyer, Mike Lewis
论文链接:https://arxiv.org/abs/1911.00172
本文提出kNN-LMs,把上文的语义编码特征向量的k最近邻和一般的语言模型结合从而显著提高语言模型的效果。本方法在WIKITEXT-103上取得15.79的ppl(将最好效果提高2.9个点),这表明了学习文本间相似度比预测下一个token更为简单。
概述
语言模型(Language Model, LM)指的是利用链式法则给出一个句子的概率,主要要解决两个问题:(1)得到上文表示;(2)用上文表示预测下一个token。这两个问题一般使用一个autoregressive模型解决。使用AR模型去进行语言建模的一个普遍问题是:难以充分建立长距离依赖。由此出发,本文提出通过计算上文表示的k最近邻去结合语言模型从而更好地捕捉上下文之间的语义关系。总的来说,本文贡献如下:
- 提出一个kNN-LM去结合训练集中上文向量表示的k最近邻和当前语言模型的预测概率,方法相当简单有效;
- 在若干数据集上取得显著效果提升;
- 通过ablation study表明了该方法的有效性
最近邻语言模型
给定上文
上面是我们的准备工作。现在我们有一个要学习的语言模型
最后,把这个概率和语言模型的概率结合起来:
下图是流程图,看起来更加清晰。
现在还有一个问题是,如果训练集
实验
本文在四个数据集上实验:WIKITEXT-103,BOOKS,WIKI-3B,WIKI-100M。本文使用了和 (Baevski&Auli)(2019) 同样的模型结构作为语言模型,该模型有16层,每层16个heads,1024的向量维度和4096的FFN维度,约247M的参数量。另外,本文预训练了一个Transformer Decoder LM来得到
下面四个表中的前两个是在WIKITEXT-103,BOOKS。可以看到,加了kNN之后,ppl有了显著的降低(注意到kNN是在对应训练集上使用预训练模型得到的,没有增强额外数据量,也没有对要训练的kNN-LM模型产生直接影响)。
这是在同一个训练集上使用kNN得到的,那么在不同的数据集上使用kNN又如何呢?本文接着使用WIKI-3B作为Datastore,在WIKI-100M训练kNN-LM,将它和直接在WIKI-3B与WIKI-100M上得到的LM比较,结果如上图表三。显然,在更大数据(WIKI-3B)上训练的LM肯定比小数据(WIKI-100M)上训练的LM好不少,但是用大数据作为Datastore去补充小数据训练的LM却能超越直接在数据上训练的LM,这说明了去取最近邻比直接训练要好。
上图最后一个表是domain adaptation的表现。在WIKI-3B上训练的模型在BOOKS上测试表现很差(34.84),但是在这个基础上使用BOOKS作为Datastore可以大幅提高约14点的表现。这说明kNN-LM还有比较好的domain adaptation能力。
下图是选取不同位置作为
FFN input after layer norm
效果最好,而使用
model output
效果很差。
下面图一(a)显示,只使用WIKI-3B中的1.6B的kNN-LM就超过了在整个3B上训练的LM,而图一(b)又表明,当Datastore越大,kNN就越重要。这是因为,模型学习语义表示比直接预测下一个token更加容易。
下图二是不同的
上图四是使用n gram作为插值和kNN作为插值结果的比较。可以看到,n再大也没太大用,这表明使用神经网络
图五探究在预训练模型中使用dropout和不使用dropout的区别。不使用dropout会导致模型过拟合,在验证集上得到28.59的ppl;而使用dropout会极大缓解过拟合,在验证集上得到17.96ppl。这表明了Transformer LM能够记住训练集,但也要防止过拟合。
下表是一个具体的例子。在这个例子中,要训练的LM给目标token的概率比较低,为0.124,而预训练的LM给了很高的0.998。
小结
本文提出了kNN-LM模型,通过结合标准的语言模型和训练集中的k最近邻向量表示取得显著效果提升。该方法可以用到多个NLP任务上。该方法在语言模型上的成功可以初步说明,模型学习语义相似度比直接预测下一个token更加简单,也能取得更好的效果。