微软发现了一个超简单的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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/477335.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

程序员面试金典 - 面试题 01.05. 一次编辑(编辑距离,DP)

1. 题目 字符串有三种编辑操作:插入一个字符、删除一个字符或者替换一个字符。 给定两个字符串,编写一个函数判定它们是否只需要一次(或者零次)编辑。 示例 1: 输入: first "pale" second "ple" 输出: True示例 2: 输入: first "pa…

Spring Boot使用@Async实现异步调用:ThreadPoolTaskScheduler线程池的优雅关闭

上周发了一篇关于Spring Boot中使用Async来实现异步任务和线程池控制的文章:《Spring Boot使用Async实现异步调用:自定义线程池》。由于最近身边也发现了不少异步任务没有正确处理而导致的不少问题,所以在本文就接前面内容,继续说…

MIT毕业生亲述:在Deepmind打工是一种什么样的体验?

文 | Akhil Raju源 | 机器之心在这里,既有头脑风暴,也有生活气息。本月初,时任苹果机器学习总监的 Ian Goodfellow 宣布在加入公司三年后辞职,没过几天,就有消息曝出大神去向定了,他将重返谷歌加入 DeepMin…

LeetCode 72. 编辑距离(DP)

1. 题目 给定两个单词 word1 和 word2,计算出将 word1 转换成 word2 所使用的最少操作数 。 你可以对一个单词进行如下三种操作: 插入一个字符删除一个字符替换一个字符 示例 1: 输入: word1 "horse", word2 "ros" 输出: 3 解…

毕业后到底去学术界还是工业界?杜克大学陈怡然教授亲述5条“小秘籍”

文 | 卖萌酱大家好,我是卖萌酱。今天和大家聊一个非常受关心的话题:毕业到底是去学术界还是工业?刚好最近看到杜克大学陈怡然教授在微博上对此有亲身感悟:陈怡然教授认为回学校而不去公司有以下几个理由:1. 我不喜欢随…

程序员面试金典 - 面试题 17.11. 单词距离(multimap平衡二叉搜索树)

1. 题目 有个内含单词的超大文本文件,给定任意两个单词,找出在这个文件中这两个单词的最短距离(相隔单词数)。 如果寻找过程在这个文件中会重复多次,而每次寻找的单词不同,你能对此优化吗? 示例: 输入:w…

腾讯薪酬改革来了!晋升≠加薪?员工到底为何工作?

文 | 天于刀刀这届打工人真的是太太太难了!朝九晚九地写PPT,熬KPI,疫情它来了;终于习惯了隔离核酸,走出EMO,隔壁工位的同学被毕业了;最终凭着玄学幸运留组,还没来得及准备庆祝一下六…

Spring Boot和Feign中使用Java 8时间日期API(LocalDate等)的序列化问题

LocalDate、LocalTime、LocalDateTime是Java 8开始提供的时间日期API,主要用来优化Java 8以前对于时间日期的处理操作。然而,我们在使用Spring Boot或使用Spring Cloud Feign的时候,往往会发现使用请求参数或返回结果中有LocalDate、LocalTim…

LeetCode 1054. 距离相等的条形码(优先队列)

1. 题目 在一个仓库里,有一排条形码,其中第 i 个条形码为 barcodes[i]。 请你重新排列这些条形码,使其中两个相邻的条形码 不能 相等。 你可以返回任何满足该要求的答案,此题保证存在答案。 示例 1: 输入&#xff1a…

Meta AI团队大换血!组织拆散,高管离职,LeCun进军元宇宙??

编 | 桃子 时光源 | 新智元【导读】全力助攻元宇宙,Meta人工智能部门要重组了!今天,Yann LeCun发文表示,Meta的人工智能实验室FAIR将整合到Reality Labs中。另外,任职4年的人工智能高管Jerome Pesenti也宣布了将要离职…

【译】Spring Boot 2.0 官方迁移指南

前提 希望本文档将帮助您把应用程序迁移到 Spring Boot 2.0。 在你开始之前 首先,Spring Boot 2.0 需要 Java 8 或更高版本。不再支持 Java 6 和 7 了。 在 Spring Boot 2.0 中,许多配置属性被重新命名/删除,开发人员需要更新application…

剑指Offer - 面试题22. 链表中倒数第k个节点(快慢指针)

1. 题目 输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。例如,一个链表有6个节点,从头节点开始,它们的值依次是1、2、3、4、5、6。这个…

AI正在改变制造业!快递单信息抽取、智能物流仓案例盘点

大家好,我是卖萌酱。制造业作为国民经济主体,是国家创造力、竞争力和综合国力的重要体现。作为制造强国建设的主攻方向,智能制造发展水平关乎我国未来制造业的全球地位。制造业与物流结合紧密,随着制造业的高速发展,对…

Spring Boot 2.0 新特性(二):新增事件ApplicationStartedEvent

今天继续来聊Spring Boot 2.0的新特性。本文将具体说说2.0版本中的事件模型,尤其是新增的事件:ApplicationStartedEvent。 在Spring Boot 2.0中对事件模型做了一些增强,主要就是增加了ApplicationStartedEvent事件,所以在2.0版本中…

剑指Offer - 面试题57. 和为s的两个数字(双指针)

1. 题目 输入一个递增排序的数组和一个数字s,在数组中查找两个数,使得它们的和正好是s。如果有多对数字的和等于s,则输出任意一对即可。 示例 1: 输入:nums [2,7,11,15], target 9 输出:[2,7] 或者 [7,…

爷青结!吴恩达十年《机器学习》课程关闭注册!网友:一个时代的终结

文 | 杜伟、陈萍源 | 机器之心俗语说,旧的不去新的不来。也许新课程又会成为新的经典呢。要说人工智能领域的课程,斯坦福大学客座教授吴恩达的《机器学习》(Machine Learning)堪称经典。该课程最开始于 2012 年在 Coursera 上线&a…

Spring Boot 2.0 新特性(一):配置绑定 2.0 全解析

在Spring Boot 2.0中推出了Relaxed Binding 2.0,对原有的属性绑定功能做了非常多的改进以帮助我们更容易的在Spring应用中加载和读取配置信息。下面本文就来说说Spring Boot 2.0中对配置的改进。 配置文件绑定 简单类型 在Spring Boot 2.0中对配置属性加载的时候会…

剑指Offer - 面试题57 - II. 和为s的连续正数序列(滑动窗口)

1. 题目 输入一个正整数 target ,输出所有和为 target 的连续正整数序列(至少含有两个数)。 序列内的数字由小到大排列,不同序列按照首个数字从小到大排列。 示例 1: 输入:target 9 输出:[[…

博士读一半,导师跳槽了!博士生把亲身经历发在了Science上

源 | 微算云平台、知乎有这样一个迫在眉睫的问题,困扰着博士生:导师要跳槽,自己该怎么办?▲图源:知乎同样的,Jessica Toothaker 是匹兹堡大学医学院的一名博士生,也是耶鲁大学的访问学生。在她读…

Spring Boot 2.0正式发布,升还是不升呢?

Spring帝国 Spring几乎是每一位Java开发人员都耳熟能详的开发框架,不论您是一名初出茅庐的程序员还是经验丰富的老司机,都会对其有一定的了解或使用经验。在现代企业级应用架构中,Spring技术栈几乎成为了Java语言的代名词,那么Sp…