微软发现了一个超简单的NLP上分技巧,还发了ACL2022 ??

1252561a2e2ea2fc594269f8891b98ae.png

文 | QvQ
编 | Sheryc_王苏

今天给大家介绍一篇来自工业界巨头微软的工作,这篇论文真是把资本家的嘴脸暴露的一览无余:用最低的成本,创造最高的收益(狗头.jpg)

文章从头到尾就阐述了一个结论:通过在输入文本中拼接与之最相似的已标注数据,能大幅度提升模型性能。

实验结果表明,这种简单的方法可以在各种包括摘要生成、机器翻译、语言建模和问答等任务上都有更好的表现。

论文题目
Training Data is More Valuable than You Think: A Simple and Effective Method by Retrieving from Training Data

论文链接:
https://arxiv.org/abs/2203.08773

源码
https://github.com/microsoft/REINA

65dd517ad6901baaa8ca0fd478347333.png预备知识de958de4a13f12c014008af48dbf3dd7.png

在自然语言处理中,通过从大型语料库中利用检索的方法获取与输入相关的文本信息来作为补充,通常可以较为显著的提升模型性能。这是因为通过检索,模型收获了额外的与输入相关的知识。因此,基于检索的方法已成功地应用于许多任务,如开放领域问答、机器翻译等。

然而,这些方法都需要建立大规模语料库的索引,并且检索会显著地增加计算负担。例如,机器翻译的kNN-MT模型的生成速度比传统的MT模型慢两个数量级。

那么有什么既可以获取额外知识,又能高效训练的办法吗?

15f3664c09f0646b517ed86cb30d14b5.png核心思路c0994ae92c475ca63897b44253328468.png

对于给定输入,通过检索从语料库中收集与输入最相似的信息,然后将检索结果与输入结合,一同输入到自然语言处理模型中。

具体来说,和把大象放进冰箱的步骤数量一致,分为如下三步:

  1. 为语料库索引建立键值对列表,即;

  2. 给定输入,依据键值对寻找与最相似的k个键值并取出其对应的;

  3. 将检索结果与输入拼接并一同送入模型中进行训练。

于是乎,模型从原始输入

变化为:

402 Payment Required

其中,为检索得到的键值对。

没了吗?

没了....

以上就是最核心的思路。但是别急,虽然这些步骤看上去只有“拼接”这一步操作与之前不同,但这个框架还没有解决所有的问题。大规模语料库的索引效率问题如何解决如何寻找最相似的键值对?这需要对本文的细节一探究竟。

0005796afa6426f694542f03bc15edb6.png一些细节33bc254619eeb0bd89f19ea23356b3ff.png

建立索引库

如果从大型语料库中检索的话,计算开销较大。所以,本文提出直接从有标签的训练集数据中检索,即REtrieval from traINing datA。(?,好家伙,这就是REINA的由来呗,没缩写硬凑呗?)

这里实际上就是把训练集中每一行的输入与其对应的ground-truth label转化为格式。训练集的规模远小于大型语料库,这就解决了索引效率问题。说了这么多,合着就一行代码搞定啊...

from collections import defaultdict :)

检索算法

对于检索,本文用BM25算法来找出与输入最相似的个句子。文中说主要是看上了它的检索速度之快。果然,最trick的提点的技巧,往往只需要最朴素的算法:)

KV定义 & 组合形式

a3d785c4d862d69159a0fbffef95f49d.png

接下来的就是比较关键的步骤了。对于不同任务如何定义对,以及检索到的对以何种形式与组合似乎大有说法。根据任务的不同,输入所拼接的索引内容也不尽相同:

摘要生成

摘要生成任务是为给定的文档生成摘要。

首先将训练数据转为

402 Payment Required

的 对。对于给定文档 , 从训练数据中检索出与之最相似的k个文档下标,取出其 对应摘要与输入进行拼接,即:

402 Payment Required

这里没有选择拼接相似文档本身的原因显而易见:文档本身太…长…了…

语言模型

语言模型任务通常是生成给定单词/序列的概率。在本文中使用基于Seq2Seq的方法,即给定上一个文本块,我们预测下一个文本块。

这里的索引是 为每一对上下文块建立索引 ,最后与输入拼接的时候同样只拼接 ,即输入为。

机器翻译

这没什么好说的,原句与译文组成对,最后与输入拼接的时候同样只拼接译文 ,即输入为:

402 Payment Required

问答

问答任务这里关注的是从多个选项里选择最正确答案的问答任务。

该任务中,索引是为唯一正确的答案建立kv问答对。但是与上述任务不同的是该任务将索引得到最相似的数个对直接与输入拼接,即输入为

402 Payment Required

训练 & 预测

训练阶段:考虑到在训练阶段BM25算法可能检索到原输入,所以需要过滤掉原输入对应的对,以防止数据泄露

预测阶段:无需过滤。

286f756800b6f64b9dba927732c56174.png

1014ae5482c9dde035c8c27e472bb5a8.png实验0f6aa39033283e47766167e59aa78f32.png

Summarization

b90e3b4ece6656f2fcc3c471d02d2e19.png

Language Modeling

e3a8ec3474fd4610a25abb9d7e6918f0.png

Machine translation

faeff99500c26a77e62874f711fba136.png

Question answering

1bf588529137a4a96e60796a1af83643.png

可以看到,REINA在多个任务的多个数据集上都取得不错的提升,有效的证明了该方法虽然简单但还是非常work的~

8deefd04d6ce49f76c49d723b2a8fc4e.png小编锐评6b03685fdfef7aed9a2d9ab1e50dbbe1.png

本文算是一篇数据增强方面的工作,其原理也比较容易理解:即使有数亿个参数,模型也不能记住训练数据中的所有范式。因此,提取相关训练数据作为输入,可以显式地提供所需的一些候补信息,以提高模型的推理性能。可以预见到该方法同样试用于few-shot learning

说句题外话,这种思路应该早在10年前就在工业界中应用了,与搜索中click-query真是如出一辙...

这种浓浓工业界文风的文章,有时候很容易让人“失望”。要么大力出奇迹,要么简单到“可耻”却有用!但是不得不说,这种提点的trick你难道不想在工作中一试吗?

不说了,我先去了~

9e41f6ff3ab50704beaa4ff9f31f5e1f.png萌屋作者:乐乐QvQ

硕士毕业于中国科学院大学,前ACM校队队长,区域赛金牌。竞赛混子,Kaggle两金一银,国内外各大NLP、大数据竞赛Top10。校招拿下国内外数十家大厂offer,超过半数的SSP。目前在百度大搜担任搜索算法工程师。知乎ID:QvQ

作品推荐:

1.13个offer,8家SSP,谈谈我的秋招经验

2.2020深度文本匹配最新进展:精度、速度我都要!

3.7款优秀Vim插件帮你打造完美IDE

4.他与她,一个两年前的故事

5.Bing与DuckDuckGo搜索结果惊人一致?Google展现强势差异

db5ddc8731efda2b4f51b5f749d624df.png后台回复关键词【入群

加入卖萌屋NLP、CV与搜推广求职讨论群

后台回复关键词【顶会

获取ACL、CIKM等各大顶会论文集!

b239f7e8edd9bd2b8051939b7f3178b7.gif
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值