我跑了ERNIE和BERT两个模型,结果出乎意料......
BERT和ERNIE,NLP领域近来最受关注的2大模型究竟怎么样?
刚刚有人实测比拼了一下,结果在中文语言环境下,结果令人意外又惊喜。
具体详情究竟如何?不妨一起围观下这篇技术评测。
写在前面
随着2018年ELMo、BERT等模型的发布,NLP领域终于进入了“大力出奇迹”的时代。采用大规模语料上进行无监督预训练的深层模型,在下游任务数据上微调一下,即可达到很好的效果。曾经需要反复调参、精心设计结构的任务,现在只需简单地使用更大的预训练数据、更深层的模型便可解决。
随后在2019年上半年,百度的开源深度学习平台PaddlePaddle发布了知识增强的预训练模型ERNIE,ERNIE通过海量数据建模词、实体及实体关系。相较于BERT学习原始语言信号,ERNIE直接对先验语义知识单元进行建模,增强了模型语义表示能力。
简单来说,百度ERNIE采用的Masked Language Model是一种带有先验知识Mask机制。可以在下图中看到,如果采用BERT随机mask,则根据后缀“龙江”即可轻易预测出“黑”字。引入了词、实体mask之后,“黑龙江”作为一个整体被mask掉了,因此模型不得不从更长距离的依赖(“冰雪文化名城”)中学习相关性。
除此之外,百度ERNIE还引入了DLM(对话语言模型)任务,通过这种方式来学习相同回复对应的query之间的语义相似性。实验证明DLM的引入对LCQMC(文本相似度计算)系列任务带来了较大的帮助。最终ERNIE采用多源训练数据,利用高性能分布式深度学习平台PaddlePaddle完成预训练。
亲测
到底百度ERNIE模型所引入训练机制有没有起到作用,只有实践了以后才知道。为此,我亲自跑了BERT和ERNIE两个模型,在下面的几个场景中得到了预测结果。
完形填空
完形填空任务与预训练时ERNIE引入的知识先验Mask LM任务十分相似。从下图的比较中我们可以看到,ERNIE对实体词的建模更加清晰,对实体名词的预测比BERT更准确。例如BERT答案“周家人”融合了相似词语“周润发”和“家人”结果不够清晰;“市关村”不是一个已知实体;“菜菜”的词边界是不完整的。ERNIE的答案则能够准确命中空缺实体。
NER (命名实体识别)
在同样为token粒度的NER任务中,知识先验Mask LM也带来了显著的效果。对比MSRA-NER数据集上的F1 score表现,ERNIE与BERT分别为93.8%、92.6%。在PaddleNLP的LAC数据集上,ERNIE也取得了更好的成绩,测试集F1为92.0%,比BERT的结果90.3%提升了1.7%。分析二者在MSRA-NER测试数据中二者的预测结果。可以观察到:
1.)ERNIE对实体理解更加准确:“汉白玉”不是实体类型分类错误;
2.)ERNIE对实体边界的建模更加清晰:“美国法律所”词边界不完整,而“北大”、“清华”分别是两个机构。
Case对比:摘自MSRA-NER数据测试集中的三段句子。B_LOC/I_LOC为地点实体的标签,B_ORG/L_ORG为机构实体的标签,O为无实体类别标签。下表分别展现了 ERNIE、BERT模型在每个字上的标注结果。
相似度
ERNIE在训练中引入的DLM能有效地提升模型对文本相似度的建模能力。因此,我们比较文本相似度任务LCQMC数据集上二者的表现。从下表的预测结果可以看出,ERNIE学习到了中文复杂的语序变化。最终ERNIE与BERT在该任务数据的预测准确率为87.4%、87.0%.
分类
最后,比较应用最广泛的情感分类任务。经过预训练的ERNIE能够捕捉更加细微的语义区别,这些句子通常含有较委婉的表达方式。下面展示了PaddleNLP情感分类测试集上ERNIE与BERT的打分表现:在句式“不是很…”中含有转折关系,ERNIE能够很好理解这种关系,将结果预测为“消极”。在ChnSentiCorp情感分类测试集上finetune后ERNIE的预测准确率为95.4%,高于BERT的准确率(94.3%)。
从以上数据我们可以看到,ERNIE在大部分任务上都有不俗的表现。尤其是在序列标注、完形填空等词粒度任务上,ERNIE的表现尤为突出,一点都不输给Google的BERT。有兴趣的开发者可以一试:
https://github.com/PaddlePaddle/LARK/tree/develop/ERNIE
长按识别下方二维码
免费申请Tesla V100算力卡
配合PaddleHub让模型原地起飞
?
现在,在「知乎」也能找到我们了
进入知乎首页搜索「PaperWeekly」
点击「关注」订阅我们的专栏吧
关于PaperWeekly
PaperWeekly 是一个推荐、解读、讨论、报道人工智能前沿论文成果的学术平台。如果你研究或从事 AI 领域,欢迎在公众号后台点击「交流群」,小助手将把你带入 PaperWeekly 的交流群里。
我跑了ERNIE和BERT两个模型,结果出乎意料......相关推荐
- 五分钟搭建一个基于BERT的NER模型
BERT 简介 BERT是2018年google 提出来的预训练的语言模型,并且它打破很多NLP领域的任务记录,其提出在nlp的领域具有重要意义.预训练的(pre-train)的语言模型通过无监督的学 ...
- 原创 | 从ULMFiT、Transformer、BERT等经典模型看NLP 发展趋势
自然语言处理(Natural Language Process,简称NLP)是计算机科学.信息工程以及人工智能的子领域,专注于人机语言交互,探讨如何处理和运用自然语言.自然语言处理的研究,最早可以说开 ...
- 必须要GPT-3吗?不,BERT的MLM模型也能小样本学习
©PaperWeekly 原创 · 作者|苏剑林 单位|追一科技 研究方向|NLP.神经网络 大家都知道现在 GPT-3 风头正盛,然而,到处都是 GPT-3.GPT-3 地推,读者是否记得 GPT- ...
- Bert机器问答模型QA(阅读理解)
Github参考代码:https://github.com/edmondchensj/ChineseQA-with-BERT https://zhuanlan.zhihu.com/p/33368203 ...
- bert中文分类模型训练+推理+部署
文章预览: 0. bert简介 1. bert结构 1. bert中文分类模型训练 1 下载bert项目代码 代码结构 2 下载中文预训练模型 3 制作中文训练数据集 2. bert模型推理 1.te ...
- Pytorch两种模型保存方式
以字典方式保存,更容易解析和可视化 Pytorch两种模型保存方式 大黑_7e1b关注 2019.02.12 17:49:35字数 13阅读 5,907 只保存模型参数 # 保存 torch.save ...
- (03)两个模型的交集、并集、差集
前言 在做一碰撞检测时,犹豫一直无法实现,就行想到直接对两个模型求交集,如果交集部分为空,就说明其没有相交,于是使用了下面的方法,求模型的交集.(后来由于在不相交时一直有报错误,但在后来的研究中发现及 ...
- session-based recommendation的两个模型对比NARM, STAMP
文章目录 介绍 模型介绍 NARM global encoder local encoder final model STAMP short-term memory long-term memory ...
- 旅行商问题(TSP)的两种模型
TSP简介 一个商人从一点出发,经过所有点后返回原点.它需要满足:除起点和终点外,所有点当且仅当经过一次:起点与终点重合:所有点构成一个连通图.要求:得到这个商人经过所有点的最短路程. TSP模型表示 ...
最新文章
- luogu P2572 [SCOI2010]序列操作
- python小作品speak_python 小案例demo05 升级版石头剪刀布
- Groovy里使用Runnable实现多线程
- sql 之like 和通配符%,_(mysql)
- c语言结构体多门成绩排序,c语言结构体按学号排序求大神帮忙改一下吧
- 那天空飘过的梅花月饼,是今年中秋最好的礼物
- win8安装wampserver报403错误解决方法
- 从零基础入门Tensorflow2.0 ----一、3.4 实战深度神经网络(dropout)
- EmEditor中,正则判断行中是否存在自动字符串
- 使用Springboot开发前后端分离校园智能出行拼车系统
- mysql fk_MySQL FK的正确命名约定是什么?
- 基于OpenCv+Django的网络实时视频流传输(前后端分离)
- web页面-JS/DOM/BOM/窗口滚动/修改内容/上传文件
- There was a problem confirming the ssl certificate: [SSL: CERTIFICATE_VERIFY_FAILED]
- js网页繁体简体转换(备忘)
- jeefast使用Mybatis进行图片上传
- Rsa 非对称加密算法使用问题分享--使用通过密钥对同一段数据加密得到结果每次不一样
- pythonif语句怎么换行输入_李沁和李易峰演的电视剧叫什么名字
- ubuntu系统出错且无法恢复请联系管理员(A problem has occurred and the system can‘t recover,please contact the admini)
- Linux: 磁盘状态观察命令lsblk、blkid
热门文章
- 《剑指offer》— JavaScript(6)旋转数组的最小数字
- ActionBar设置自定义setCustomView()留有空白的问题
- TFS2013 微软源代码管理工具 安装与使用图文教程
- 图像相似度测量与模板匹配总结
- CF 67A - Partial Teacher
- sicily 1762. 排座椅
- python中线条颜色_python中plot用法——线条、点、颜色
- 304 vue 启动项目打开页面_Vue搭建项目工程(续)
- python登录接口代码_(转载)Python 的 OAuth 登录接口 python-oauth2
- python交叉编译_交叉编译Python3.6.2,使用海思arm-hisiv200-linux-gcc,移植到arm开发板上...