全面超越人类!Google称霸SQuAD,BERT横扫11大NLP测试
乾明 岳排槐 发自 凹非寺
量子位 出品 | 公众号 QbitAI
Google又有重大突破!
在机器阅读理解顶级水平测试SQuAD1.1中,Google AI团队新发布的BERT模型,交出了一份惊人的成绩单。
在斯坦福大学这个著名的测试中,全面超越人类表现。在全部两个衡量指标上,全面超越人类表现。
甚至在单一模型的情况下,表现也丝毫不虚同行的混合模型。
实际上,BERT不止在SQuAD中摧枯拉朽,总计在11种不同NLP测试中创出最佳成绩,包括包括将GLUE基准提升7.6%,将MultiNLI的准确率提提升5.6%。
新进展让不少研究人员非常兴奋。
有人说这是自然语言理解领域几个月来最重大的事件。Google BERT的出现,也被一些人认为将改变NLP的研究模式。
“这不是NLP的结束,甚至不是结束的开始。这可能是开始的结束。”有人借用丘吉尔的《The End of the Beginning》来形容这一突破的意义。
一个NLP的新时代开启了,Google团队的Thang Luong说。
横扫11大NLP测试
机器阅读理解,是一场竞争激烈的比拼。
竞技场是SQuAD。
SQuAD是行业公认的机器阅读理解顶级水平测试,可以理解为机器阅读理解领域的ImageNet。它们同样出自斯坦福,同样是一个数据集,搭配一个竞争激烈的竞赛。
这个竞赛基于SQuAD问答数据集,考察两个指标:EM和F1。
EM是指精确匹配,也就是模型给出的答案与标准答案一模一样;F1,是根据模型给出的答案和标准答案之间的重合度计算出来的,也就是结合了召回率和精确率。
这次Google AI基于BERT的混合模型,在SQuAD1.1数据集上,获得EM:87.433、F1:93.160分的历史最佳成绩。
上个月底,微软亚洲研究院团队刚刚在SQuAD测试中刷出最新成绩,那是AI首次在这个测试中全面超越人类表现。过去一年里,科大讯飞、腾讯、阿里巴巴等中国团队,也先后在SQuAD测试中轮番登顶。
不过需要说明的是,Google BERT这次并没有参与SQuAD2.0测试。2.0是斯坦福NLP团队今年6月13日发布的最新数据集。
目前SQuAD2.0的最佳成绩,还是来自微软亚洲研究院,复旦+流利说团队、国防科大团队、阿里巴巴团队并列位于第二位。
除了SQuAD,BERT还横扫了如下10大NLP测试,包括:GLUE、MNLI、QQP、QNLI、SST-2、CoLA、STS-B、MRPC、RTE、WNLI。
当然关于机器阅读理解这件事,也一直有争论。
详解BERT
这种新的语言表征模型BERT,意思是来自Transformer 的双向编码器表征(Bidirectional Encoder Representations from Transformers)。
与最近的语言表征模型不同,BERT基于所有层中的左、右语境进行联合调整,来预训练深层双向表征。
因此,只需要增加一个输出层,就可以对预训练的 BERT 表征进行微调,就能为更多的任务创建当前的最优模型,比如问答和语言推断任务。
整个过程不需要对特定任务进行实质性的架构修改。
BERT概念很简单,但效果很强大:刷新了11项NLP任务的最优结果。包括:
将GLUE基准提升至80.4 % ( 7.6 %的绝对改进)。
将MultiNLI准确度提升至86.7%( 5.6 %的绝对改进)。
将SQuAD v1.1 问答测试F1提高到93.2分 ( 1.5分的绝对改进),比人类表现高出2.0分。
BERT论文的主要内容如下。
模型结构
在本文中,我们将层数(即 Transformer 块)表示为L,将隐藏尺寸表示为H,将自注意力头(self-attention heads)的数量表示为A。在所有的情况下,我们都将前馈/滤波器尺寸设置为4H,即H = 768时,为3072,H = 1024时,为4096。我们主要报告两种模型尺寸上的结果,分别是:
BERTBASE: L=12, H=768, A=12, 总参数=110M
BERTLARGE: L=24, H=1024, A=16, 总参数=340M
为了比较,BERT(BASE)采用了与OpenAI GPT相同的模型尺寸。但关键的是,BERT Transformer 使用双向自注意力机制,而 GPT Transformer 使用受限的自注意力机制,从而使每个 token 只能关注左侧的语境。
我们也注意到,双向 Transformer 在文献中通常称为“Transformer 编码器”(Transformer encoder),而只关注左侧语境的Transformer被称为“Transformer 解码器”(Transformer decoder),因为它能用于文本生成。BERT、OpenAI GPT和ELMo之间的比较如下图所示:
△BERT 使用双向 Transformer,OpenAI GPT 使用从左到右的 Transformer,ELMo 使用独立训练的从左到右和从右到左 LSTM 的级联,来生成下游任务的特征。三种模型中,只有 BERT 表征是联合的,基于所有层中的左右两侧语境。
输入表征
我们的输入表征能够在一个标记序列中清晰地表示单个文本句子或两个文本句子(例如,[问题、答案])。对于给定的token,其输入表征是通过对相应的token、分段和位置嵌入求和来构建的。下图更直观的展示了我们的输入表征。
△BERT输入表征。
具体的情况是:
我们使用WordPiece嵌入,拥有30000个token词汇。我们用##表示拆分的单词片段。
我们使用学习的位置嵌入,支持多达512个token的序列长度。
每个序列的第一个token是特殊分类嵌入([CSL])。对应于该token的最终隐藏状态(即Transformer的输出)被用作分类任务的聚合序列表征。对于非分类的任务,则忽略此向量。
句子对被组合成单一的序列。我们用两种方式区分句子。首先,我们用一个特殊的token将它们分开([SEP])。其次,我们在第一句的每一个token中添加了一个学习句子A嵌入,在第二句的每一个token中添加了一个句子B嵌入。
对于单句输入,我们只使用句子A嵌入。
预训练任务
与 Peters 等人和 Radford 等人此前的实验不同,我们不使用传统的从左到右或从右到左的语言模型来预训练 BERT,而是使用两个新的无监督预测任务对BERT进行预训练。
任务 #1:Masked LM
为了训练深度双向表征,我们采用了一种直接的方法,随机评级一定百分比的输入 token,然后预测那些屏蔽的 token。我们将这个过程称为“masked LM”(MLM)。在这种情况下,和标准 LM 中的一样,对应屏蔽 token 的最终隐藏向量会通过词汇输入到 softmax 函数中。在我们的所有实验中,我们随机屏蔽了每个序列中15%的 WordPiece token。与去噪自编码器 ( denoising auto-encoders )相反,我们只预测遮蔽的单词,而不是重建整个输入。
虽然这确实允许我们获得一个双向预训练模型,但是这种方法有两个缺点。第一,我们正在造成预训练和微调之间的不匹配,因为在微调过程中从未看到屏蔽的token。为了减轻这种情况,我们并不总是用实际的“mask”token来代替“mask”这个词。相反,训练数据生成器随机选择15 %的token。这样做的目的是将表征偏向于实际观察到的单词。
Transformer 编码器不知道它将被要求预测哪些单词,或者哪些单词已经被随机单词取代,因此它被迫保留每个输入token的分布式语境表征。此外,因为随机替换仅发生在所有token的1.5 % (即15 %的10 % ),这似乎不会损害模型的语言理解能力。
使用MLM的第二个缺点是,在每批中仅预测了15 %的token,这表明模型收敛可能需要更多的预训练步骤。但是MLM模型的改进远远超过了增加的训练成本。
任务 #2:预测下一句
很多重要的下游任务都是基于对两个文本句子之间关系的理解,比如如问答(QA)和自然语言推断(NLI)。这种关系并不是语言建模直接捕捉到的。为了训练一个理解句子关系的模型,我们预训练了一个二值化预测下一句的任务,它可以很简单地从任意一个单语语料库中生成。具体来说,当为每个预训练示例选择句子 A 和 B时:50% 的可能B是 A 的下一句,也有 50% 的可能B是来自语料库的随机句子。
……
一些关键图表数据
我们的任务特定模型是通过将BERT与一个额外的输出层结合在一起而形成的,因此需要从零开始学习最少数量的参数。在这些任务中,( a )和( b )是序列级任务,而( c )和( d )是token级任务。在图中,E表示输入嵌入,Ti表示token I的语境表征,[ CLS ]是分类输出的特殊符号,[ SEP ]是分离非连续token序列的特殊符号。
GLUE测试结果,由GLUE评估服务器评分。每个任务下面的数字表示训练样本的数量。“Average”栏与官方GLUE分数略有不同,因为我们排除了有问题的WNLI集。OpenAI GPT = ( L = 12,H = 768,A = 12 );BERTBASE = ( L = 12,H = 768,A = 12 );BERTLARGE= ( L = 24,H = 1024,A = 16 )。BERT和OpenAI GPT是单一模型、单一任务。
SQuAD结果。BERT集成是7x系统,使用不同的预训练检查点和微调种子。
CoNLL-2003 Named Entity Recognition结果。使用Dev集选择超参数,并且使用这些超参数在5次随机重启中平均报告的Dev和测试分数。
论文
传送门:
https://arxiv.org/abs/1810.04805
— 完 —
加入社群
量子位AI社群开始招募啦,欢迎对AI感兴趣的同学,在量子位公众号(QbitAI)对话界面回复关键字“交流群”,获取入群方式;
此外,量子位专业细分群(自动驾驶、CV、NLP、机器学习等)正在招募,面向正在从事相关领域的工程师及研究人员。
进专业群请在量子位公众号(QbitAI)对话界面回复关键字“专业群”,获取入群方式。(专业群审核较严,敬请谅解)
诚挚招聘
量子位正在招募编辑/记者,工作地点在北京中关村。期待有才气、有热情的同学加入我们!相关细节,请在量子位公众号(QbitAI)对话界面,回复“招聘”两个字。
量子位 QbitAI · 头条号签约作者
վ'ᴗ' ի 追踪AI技术和产品新动态
全面超越人类!Google称霸SQuAD,BERT横扫11大NLP测试相关推荐
- NLP模型超越人类水平?你可能碰到了大忽悠
大数据文摘出品 来源:thegradient 编译:张睿毅.武帅.钱天培 一个军方训练的神经网络声称可以分类图像中的坦克,但实际上,它只是学会了识别不同的亮度,因为一种类型的坦克仅出现在明亮的图片中, ...
- 科大讯飞刷新SQuAD 2.0问答榜纪录,机器阅读理解全面超越人类
近日,科大讯飞再次登上 SQuAD 2.0 挑战赛榜首,不过这次顺带刷新了一下纪录:在EM(精准匹配率)和F1(模糊匹配率)两项指标上全面超越人类平均水平,分别达到87.147和89.474.其中EM ...
- 继BERT之后,这个新模型再一次在11项NLP基准上打破纪录
机器之心报道 作者:思源 自 BERT 打破 11 项 NLP 的记录后,可应用于广泛任务的 NLP 预训练模型就已经得到大量关注.最近微软推出了一个综合性模型,它在这 11 项 NLP 任务中超过了 ...
- 科大讯飞刷新纪录,机器阅读理解如何超越人类平均水平? | 技术头条
点击上方↑↑↑蓝字关注我们~ 「2019 Python开发者日」明日开启,扫码咨询 ↑↑↑ 记者 | 琥珀 出品 | AI科技大本营(公众号ID:rgznai100) 对于日常从事模型训练的研究人员来 ...
- 阿里达摩院包揽AI领域六大权威榜单冠军:用人类的学习方式超越人类
让AI模仿人类的学习方式,结果会怎样? 8月26日,阿里达摩院语言技术实验室取得一系列突破,斩获自然语言处理(NLP)领域6大权威技术榜单冠军.据介绍,参与竞赛的6项自研AI技术均采用模仿人类的学习模 ...
- 中文任务全面超越BERT:百度正式发布NLP预训练模型ERNIE(附项目地址)
来源:机器之心 本文约1700字,建议阅读7分钟. 百度提出知识增强的语义表示模型ERNIE,并发布了基于PaddlePaddle的开源代码与模型. [ 导读 ]近日,百度提出知识增强的语义表示模型 ...
- AI在这张“问卷”上首次超越人类,SuperGLUE被微软谷歌两家“攻破”
晓查 发自 凹非寺 量子位 报道 | 公众号 QbitAI 自然语言理解(NLU)迎来新的里程碑. 在最新的NLU测试基准SuperGLUE中,人类首次被AI超越了. SuperGLUE相比&quo ...
- 是什么让深度学习再次崛起并超越人类?
是什么让深度学习再次崛起并超越人类? 2016-03-12 14:44 原创 小芹菜 3条评论 按:作者潘争,格灵深瞳计算机视觉工程师,清华大学自动化系博士,师从智能技术与系统国家重点实验室副主任张长 ...
- 机器阅读理解首次超越人类!云从刷新自然语言处理新纪录
媒体动态发展历程资质荣誉人才招聘 机器阅读理解首次超越人类!云从刷新自然语言处理新纪录 2019-03-11 10:06 浏览:454 近日,云从科技和上海交通大学在自然语言处理领域取得重大突破,在卡 ...
最新文章
- Google Maps API v2 android版本开发 国内手机不支持google play Service相关问题解决--图文教程
- 为UINavigationBar添加自定义背景
- JFinal整合CKFinder
- RabbitMq如何确保消息不丢失
- linux shell之xargs 、tr、sha1sum、head、tail一般使用
- 福大计算机课程表,教学文件 - 福州大学电气工程与自动化学院
- 电子助力方向机控制模块_【技师投稿】使用道通MS908PRO更换宝马F20底盘方向机...
- 【Java从0到架构师】Filter_Listener_AJAX
- select 中添加option的注意
- 数论之勾股数组(毕达哥拉斯三元组)
- 安卓app逆向破解脱壳教程
- iOS 什么是MVC
- 草蛋的Android studio 居然让我搞了好几天 真是智障啊non-zero exit value 2
- idea 中 maven Process terminated
- 打击感在动作游戏中如何实现?【战斗篇】
- 期货期权股票资管分仓系统(子账户系统、风控系统)的功能介绍
- 0045-一个Dashbord页面监控多个消费者
- python做相册_动感网页相册 python编写简单文件夹内图片浏览工具
- TM4C1294使用
- 穷爸爸富爸爸读书笔记
热门文章
- ofo 列入被执行人;摩拜 LV 跨界合作;iPhone X 遭黑客攻击 | 极客头条
- 水滴直播风波背后:事关隐私的恐慌和“委屈”的周鸿祎
- ======第三章处理机调度与死锁======
- “金三银四”春招指南!在线javascript
- nodejs和cnpm安装
- linux版本信息i686,Linux下如何查看版本信息
- c语言中声明外部函数需要添加的关键字,C语言中声明和定义的区别——分析extern关键词。...
- 标题栏透明android,android改变标题栏的透明度
- fpga驱动oled iic显示代码_Arduino提高篇02—OLED屏汉字显示
- c语言 分函数,C语言部分函数.doc