Press "Enter" to skip to content

香侬读 | 用上文k最近邻特征表示增强语言模型

本站内容均来自兴趣收集,如不慎侵害的您的相关权益,请留言告知,我们将尽快删除.谢谢.

论文标题: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表明了该方法的有效性。

 

最近邻语言模型

 

给定上文c(t)=(w(1),……,w(t-1)),语言模型的任务是估计下一个token的概率p(w(t)|c(t))。现在我们有一个预训练的语言模型f,它能得到一个定长向量表示。

 

对训练集D其中任意的(,目标token)对:(c(i),w(i))∈D,我们能定义一个相应的key-value对(k(i),v(i)),其中k(i)=f(c(i)),而v(i)=w(i)。

 

这样我们就能存下训练集中所有的(上文,目标token)对,存入Datastore里:

 

 

上面是我们的准备工作。现在我们的目标是要学习一个语言模型g,当我们有上文x要去预测目标y的时候,我们首先在(K,V)里使用平方距离d找出g(x)的k最近邻集合N。

 

然后通过这k个最近邻计算一个目标token的分布,再把相同的目标token聚合起来:

 

 

最后,把这个概率和语言模型的概率结合起来就得到kNN-LM的预测概率:

 

 

下图是流程图,更加清晰。

 

 

现在还有一个问题是,如果训练集D比较大,那幺在(K,V)中找最近邻就会难以承受。

 

为此,本文使用了FAISS (Johnson et al. 2017) 来快速找最近邻。此外,本文还使用了(Grave et al.)(2017c) 中的cache方法,实验表明这能够略微提高效果。

 

实验

 

本文在四个数据集上实验:WIKITEXT-103,BOOKS,WIKI-3B,WIKI-100M。

 

本文使用了和(Baevski&Auli)(2019) 同样的模型结构作为语言模型,该模型有16层,每层16个heads,1024的向量维度和4096的FFN维度,约247M的参数量。

 

另外,本文预训练了一个Transformer Decoder LM来得到K和Datastore,这里取其最后一层输入到FFN的1024维的向量。其他设置详见论文。

 

下面四个表中的前两个是在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能力。

 

下图是选取不同位置作为K的不同结果。可以看到,选取FFN input after layer norm效果最好,而使用model output效果很差。

 

 

下图一(a)显示,只使用WIKI-3B中的1.6B的kNN-LM就超过了在整个3B上训练的LM,而图一(b)又表明,当Datastore越大,kNN就越重要。

 

这是因为,模型学习语义表示比直接预测下一个token更加容易。

 

下图二是不同的k值的影响,显然,k越大效果越好;图三是不同数据集上插值系数的影响,在BOOKS上的in-domain系数为0.25时效果最好,而在domain adaptation时系数为0.65表现最好。

 

 

上图四是使用n-gram作为插值和kNN作为插值结果的比较。可以看到,n再大也没用,这表明使用神经网络f去得到向量表示是必要的。

 

图五探究在预训练模型中使用dropout和不使用dropout的区别。不使用dropout会导致模型过拟合,在验证集上得到28.59的ppl;而使用dropout会极大缓解过拟合,在验证集上得到17.96的ppl。

 

这表明了Transformer LM的确能够记住训练集,但也要防止过拟合问题。这种“记忆”就有助于缓解开篇提高的长距离依赖问题。

 

下表是一个具体的例子。在这个例子中,要训练的LM给目标token的概率比较低,为0.124,而预训练的kNN给了很高的0.998。

 

Be First to Comment

发表评论

邮箱地址不会被公开。 必填项已用*标注