知识就是力量

培根

背景

去年可以说是语言模型快速发展的一年,BERT、XLNET、Albert等等模型不断刷新各个NLP榜单。在NLP榜单中比较引人注目的应该属于阅读理解型的任务,例如SQuAD等等。以SQuAD为例,模型需要阅读一段给定的文本,然后回答几个问题,问题如果存在答案,答案一定可以在文章中找到。所以说虽然叫阅读理解,但其实和序列标注有点相像,是在给定序列中标出答案段。而这篇论文针对的问题叫开放领域问答(Open-domain QA),对于一个问题Q,模型需要从包含大量文档的知识库中找到答案,而不是像SQuAD数据集一样从一篇文章中寻找。

大部分的语言模型都采用一种称为masked language model,简称MLM的任务来训练,让模型学会类似完形填空一样的能力。通过在大规模语料上的训练,预训练语言模型如BERT实际上已经隐含了一些知识。例如输入一句“The       is the currency of the United Kingdom”,BERT很有可能会填入单词"pound"。虽然他还是根据词的共现信息学习和推理的,但看上去就像具有所谓的知识一样。从去年开始就有越来越多的研究从单纯语言模型转换为带有知识嵌入的语言模型,例如清华和百度提出的两个同名模型ERNIE。

但上面说的这种隐含知识不好把握,也难以扩展。这篇论文则提出了一种更加模块化且可解释性更强的知识嵌入方法。总的来说,他的方法是训练一个独立的“语境知识抽取器”(contextual knowledge retriever),通过这个抽取器来决定应该在推理时使用哪些知识。而且这个抽取器和语言模型一起进行非监督预训练大大提高模型性能。

方法

如上图所示,整篇论文涉及两个任务,左边是语言模型预训练任务MLM,右边是QA任务。下图是预训练任务一个更加完整的流程图,我们由此切入进行介绍。

整个过程分为两个关键步骤。先看第一步,即neural knowledge retriever,它负责计算p(z|x)。要实现这个过程首先需要对z和x进行编码。论文采用的是BERT,对于问题x,直接输入BERT,取[CLS] token的输出作为编码向量,而对于文档z,则将标题和正文用[SEP]连接后输入BERT,同样去[CLS] token的输出。论文中还对BERT的输出向量进行了降维处理。即

对于文档库中的某一个z,则

其中f是问题和文档的相关性,

以上部分就称为neural knowledge retriever,通过他每篇z都会得到一个p。现在可以进行第二步,综合x和z求y。上图是一个预训练的例子,y是抠掉的词。利用z的方式是将z的正文和x拼在一起来提供上下文信息,然后优化下面的目标

其中j指第j个masked token。

在做QA的时候稍有不同。由于此时是针对某个具体的z,所以作者将开放域问答任务退化成了像SQuAD一样在文档中找答案的阅读理解任务。

这一部分就是knowledge-augmented encoder


训练

上面已经描述了预训练阶段和QA finetune阶段的任务。训练的过程都是最大化正确y对应的logp(y|z,x),而且以上描述的两个任务都是可以端到端优化的。

但这里面对一个问题,上面有个公式需要对整个知识库中所有的文档z的相关概率求和,这是很困难的。作者提出将这一步用只对概率最高的k个文档计算来近似,因为绝大部分文档由于与问题不相关,p(z|x)都非常小。但问题还没有解决,如何找到概率最高的k个文档呢。

观察公式可以发现p(z|x)是正比于两个编码后的内积的,由于大家的分母都一样,分子的顺序就是整个分数的顺序。所以可以用最大内积搜索算法(Maximum Inner Product Search, MIPS,并不知道是什么,维基百科都没有)来解决。但要构建一个快速检索的索引又要求两个编码后的向量是确定的,而由于编码器是不断训练的,所以这个条件无法满足。为了追求一个平衡,作者决定每隔几百步才更新一下编码器,并重新构建索引。而且这只发生在预训练语言模型的时候,在finetune QA任务的时候只使用语言模型得到的编码器编码一次所有的z和x并构建索引。


额外策略

在研究过程中作者发现了一些能让模型更好训练的策略。

  • 只训练真正需要知识的词(通常是实体和日期)来训练MLM

  • 在topk文档外添加一个虚拟的null document

  • 避免让x出现在z中(因为x被mask过,如果它来源于z,那答案就暴露了!)

  • 避免冷启动的retriever太渣导致的恶性循环,他们用了一个以ICT作为任务的模型来初始化retriever


结果对比

这篇论文的对手主要是原来sparse retriever+神经阅读理解模型的组合,例如大名鼎鼎的DrQA。所谓sparse retriever就是指用例如TFIDF之类的特征进行检索的模型。还有一些跟本文很像的neural retriever+neural reader的组合。其中提到了一个ORQA,跟这篇非常像,只是这篇增加了预训练的步骤。最后是一些生成式模型,例如finetune后的T5(可怕!)

在Natural Questions-Open(NQ)、Web Questions(WQ)和Curated Trec(CT)三个数据集上的结果如下

总之一句话,非常牛逼!而且这里模型只取了top 5文档,其他模型可能取了20-80篇,还是打不过他。注意到ours的括号内有两个数据,Z是知识库,很好理解,X是指预训练用的语料。而且通过文章的Ablation Analysis部分可以知道预训练其实是非常关键的一个步骤,对performance的贡献非常大。


后记

我感觉这篇论文和他提到的ORQA还是很厉害的,知识嵌入也从去年的实体粒度的嵌入发展到了如今句子、篇章级别的嵌入。试想一下,这项技术发展起来之后,如今基于词的Sparse搜索引擎应该很快会发展成对NN更友好的Dense搜索引擎,所有的内容也许都会被映射到一个向量空间。各路神经网络将在这个向量空间尽情驰骋~莫非得encoder者得天下?!

论文链接:https://kentonl.com/pub/gltpc.2020.pdf

往期精彩回顾适合初学者入门人工智能的路线及资料下载机器学习在线手册深度学习在线手册AI基础下载(pdf更新到25集)备注:加入本站微信群或者qq群,请回复“加群”获取一折本站知识星球优惠券,请回复“知识星球”喜欢文章,点个在看

【ICML 2020】REALM: Retrieval-Augmented Language Model PreTraining相关推荐

  1. 【AAAI 2020】全部接受论文列表(三)

    来源:AINLPer微信公众号(点击了解一下吧) 编辑: ShuYini 校稿: ShuYini 时间: 2020-01-22 最近武汉肺炎形势严峻,请小伙伴们带好口罩,做好防护,大家新年快乐~    ...

  2. 【AAAI 2020】全部接受论文列表(四)

    来源:AINLPer微信公众号(点击了解一下吧) 编辑: ShuYini 校稿: ShuYini 时间: 2020-01-22 最近武汉肺炎形势严峻,请小伙伴们带好口罩,做好防护,大家新年快乐~    ...

  3. 【AAAI 2020】全部接受论文列表(二)

    来源:AINLPer微信公众号(点击了解一下吧) 编辑: ShuYini 校稿: ShuYini 时间: 2020-01-22 最近武汉肺炎形势严峻,请小伙伴们带好口罩,做好防护,大家新年快乐~    ...

  4. 【CVPR 2020】神经网络架构搜索(NAS)论文和代码汇总

    关注上方"深度学习技术前沿",选择"星标公众号", 技术干货,第一时间送达! [导读]今天给大家整理了CVPR2020录用的几篇神经网络架构搜索方面的论文,神经 ...

  5. 【CVPR 2020】蒸馏篇(四):Online Knowledge Distillation via Collaborative Learning

    [CVPR 2020]蒸馏篇(四):Online Knowledge Distillation via Collaborative Learning 论文地址: 代码地址: 主要问题: 主要思路: 具 ...

  6. 4.9 论文笔记 |【USENIX 2020】That Was Then, This Is Now

    [USENIX 2020]That Was Then, This Is Now 作者 Abstract Introduction Background Password Managers Relate ...

  7. 【备战2020】高考数学全套知识点(二)

    [备战2020]高考数学全套知识点(二)本文章有电子版,私信领取.

  8. 【深度学习】扩散模型(Diffusion Model)详解

    [深度学习]扩散模型(Diffusion Model)详解 文章目录 [深度学习]扩散模型(Diffusion Model)详解 1. 介绍 2. 具体方法 2.1 扩散过程 2.2 逆扩散过程 2. ...

  9. (五十):COCO-LM: Correcting and Contrasting Text Sequences for Language Model Pretraining

    (五十):COCO-LM: Correcting and Contrasting Text Sequences for Language Model Pretraining Abstract 1. I ...

最新文章

  1. Chrome 打印PDF技巧
  2. Windows server 2012 搭建×××图文教程(一)安装×××相关服务
  3. python编程试题单词倒排_Python 单词字母顺序不变且全部倒排
  4. Native C++ _isnan()函数的应用
  5. 关于ABST2的若干问题
  6. 紧急不代表重要:管理时间的六个秘密
  7. 【ES6】Class 类的使用与继承方法详解
  8. Linux系统安装MySql步骤及截屏
  9. 线性回归(Linear Regression)模型的构建和实现
  10. GridView网格布局
  11. selinux denied: u:r:untrusted_app:s0:c512,c768报错解决
  12. 基于 Arduino 的 RFID 识别实验
  13. JavaScript学习指南 修订版pdf
  14. 静态HTML网页模板源码——仿男装女装购物商城(40页功能齐全)
  15. 大学生HTML作业篮球网页 HTML作业篮球网页期末作业 HTML+CSS篮球网页 HTML学生作业体育篮球网页
  16. 台式计算机如何取消屏幕密码,台式电脑怎么取消锁屏?
  17. [VN2020 公开赛]内存取证
  18. 我的世界java无限水_我的世界基岩版:如何获得无限水?这里有5种方法,最后一种无中生有...
  19. 谷歌身份验证器验证码不对怎么回事_兼容谷歌验证器,开源的动态验证码小程序了解一下
  20. qq邮箱html源码,qq邮箱源码

热门文章

  1. day21.模块和包
  2. HTML 5.2 新特性介绍
  3. Studio右键选项中没有Git?
  4. win10安装问题小结
  5. HDOJ(1115)多边形重心
  6. 【20090319-02】asp.net 操作 word(转)
  7. zabbix如何添加图表显示内容_Zabbix图表出现中文乱码解决方案
  8. LncRNADisease database数据库使用方法
  9. 计算机网络实验四:利用UDP协议实现点对点聊天
  10. 图像分类简单介绍-转