我们引入了kNN-LMs,它扩展了一个预先训练的神经语言模型(LM),通过与k个最近邻(kNN)模型线性插值。最近邻是根据预先训练好的LM嵌入空间中的距离进行计算的,并可以从任何文本集合中提取,包括原始的LM训练数据。
定性地说,该模型在预测罕见的模式方面特别有用,如事实知识。总之,这些结果强烈地表明,学习文本序列之间的相似性比预测下一个单词更容易,而最近邻搜索是一种在长尾进行语言建模的有效方法。
我们提出了一种新的语言建模方法,它基于表示学习问题可能比预测问题更容易的假设。
我们提供了强有力的证据,表明现有的语言模型在第一个问题上更好,通过在一个简单的最近邻方案中使用它们的前缀嵌入,显著提高了整体性能。
我们引入了kNN-LM,这是一种通过线性插入LM与k-最近邻(kNN)模型的其下一个单词分布来扩展预训练的方法。最近邻是根据预先训练的嵌入空间中的距离计算的,可以从任何文本集合中提取,包括原始的LM训练数据。这种方法允许显式地记忆罕见模式,而不是隐式地在模型参数中。当使用相同的训练数据来学习前缀表示和kNN模型时,它还提高了性能,这强烈表明预测问题比以前所认识到的更具挑战性。
通过使用kNN对next word的概率分布进行线性插值 对PLM进行扩展。
最近邻是根据预先训练的嵌入空间中的距离计算的,可以从任何文本集合中提取,包括原始的LM训练数据。这种方法允许显式地记忆罕见模式,而不是隐式地在模型参数中。当使用相同的训练数据来学习前缀表示和kNN模型时,它还提高了性能,这强烈表明预测问题比以前所认识到的更具挑战性。
为了更好地衡量这些影响,我们进行了广泛的实证评估。将我们的kNN增强应用到一个强大的维基文本-103lm上,仅使用原始数据集,实现了一个新的最先进的困惑状态15.79——比基础模型提高了2.86点(Baevski & Auli,2019)——没有额外的训练。我们还表明,该方法可以有效地扩展到更大的训练集,并通过简单地改变最近邻数据存储,允许有效的领域自适应。
在1亿个令牌上训练一个模型,并在30亿个令牌数据集上使用kNN搜索,可以超过在所有30亿个令牌上训练同一模型的性能,开启了一个新的
类似地,向数据存储中添加域外数据可以使单个LM跨多个域非常有用,同样无需进行进一步的训练。定性地说,我们发现该模型对于长尾模式特别有用,比如事实知识,这可能更容易通过显式记忆访问。
context-target pairs are stored in a key-value datastore
存储的是context的representation和target word 的键值对
在测试时,给定输入上下文x,模型生成下一个单词pLM(y|x)和上下文表示f (x)的输出分布。该模型使用f (x)查询数据存储,根据距离函数d(·,·)(我们实验中距离的平方,使相似函数成为RBF核)检索其k个最近邻N。然后,它根据邻居的负距离的softmax计算一个关于邻居的分布,同时聚合每个词汇表项在检索目标中出现的所有项目的概率质量(没有出现在检索目标中的项目的概率为零):
最后,我们遵循Grave等人(2017a),方法,使用调整参数λ将最近邻分布pkNN与模型分布pLM进行插值,生成最终的kNN-LM分布:
数据存储包含训练集中每个目标的一个条目,对于lm来说,多达可以有数十亿个示例。为了搜索这个大型数据存储,我们使用了FAISS(Johnson等人,2017),这是一个用于在高维空间中快速进行最近邻检索的开源库。FAISS通过聚类键和基于集群质心查找邻居来加速搜索,同时通过存储向量的压缩版本来减少内存使用。我们在初步实验中发现,与内积距离相比,使用L2距离进行FAISS检索对kNN-LM具有更好的性能。
之前的工作(Grave等人,2017c;Merity等人,2017)使用了类似的方法来计算与测试文档之前隐藏状态的相似性,从而更容易复制最近过去的罕见词汇项。自从transformer(Vaswani等人,2017)的开发以来,这种技术就不那么流行了,它可以学习使用自我注意复制最近的单词;在第4.1节中,我们观察到在同一测试文档`alaGrave等人(2017c)中缓存最近的项目相对较小的收益。最相关的是,Grave等人(2017a)描述了一种在线语言模型,使用对之前所有隐藏状态的最近邻搜索,以改善领域自适应。在我们的工作中,我们只保存训练数据,目的是明确地记忆训练的例子,以便更好地在测试时推广到类似的案例
评估指标使用的PPL