【深度学习】BERT变种—百度ERNIE 2.0

news2024/11/27 19:43:12

         ERNIE 2.0 提出了一种持续学习的预训练框架:预训练使用了7种任务,而不是一两种简单的任务。不断引入新的预训练任务,让模型可以持续性地学习不同的预训练任务,并且不会遗忘先前学习的知识,以此让模型能够获得更为全面的表征能力。

ERNIE 2.0: A Continual Pre-Training Framework for Language Understanding

1 ERNIE 2.0简介

        就像是我们学习一个新语言的时候,我们需要很多之前的知识,在这些知识的基础上,我们可以更快地学习新语言,如此就有了迁移学习的效果。我们的语言模型如果增加多个任务的话,是不是可以获得更好的效果?

        事实上,经发现,ERNIE 1.0 加了DLM任务以及其他的模型。如Albert 加了sentence order prediction(SOP)任务、SpanBERT: Improving Pre-training by Representing and Predicting Spans在加上了SBO目标之后 ,模型效果得到了进一步的优化,在预训练的阶段中加入多个下游任务(有监督)进行多任务学习,可以得到state-of-the-art的效果。

2 ERNIE 2.0预训练任务

2-1 Continual Pre-training

         ERNIE 2.0提出了一个持续学习的框架,利用这个框架,模型可以持续添加任务但又不降低之前任务的精度,从而能够更好更有效地获得词法lexical,句法syntactic,语义semantic上的表达。

2-1-1 任务构建

        百度把语言模型的任务归类为三大类,模型可以持续学习新的任务。

  • 字层级的任务(word-aware pretraining task)
  • 句结构层级的任务(structure-aware pretraining task)
  •  语义层级的任务(semantic-aware pretraining task)

2-1-2 任务难点

        持续的多任务学习对于持续的多任务学习,主要需要攻克两个难点:

        1.如何保证模型不忘记之前的任务?

        常规的持续学习框架采用的是一个任务接一个任务的训练,导致的后果就是模型在最新的任务上得到了好的效果但是在之前的任务上获得很惨的效果(knowledge retention)。

        2.模型如何能够有效地训练?

        为了解决上一个的问题,有人propose新的方案,我们每次有新的任务进来,我们都从头开始训练一个新的模型不就好了。虽然这种方案可以解决之前任务被忘记的问题,但是这也带来了效率的问题:每次都要从头新训练一个模型,这样子导致效率很低。

2-1-3 解决办法 -sequential multi-task learning

       1.序列多任务学习方法

        初始化 optimized initialization,当一个阶段加入新的任务时,会使用上一阶段训练好的模型参数进行初始化,并且训练新的任务时,会一起与上个阶段的旧任务进行同步训练。保证模型学习好的参数能够编码前面学到的知识;

       2.训练任务安排

        对于多个任务,框架将自动的为每个任务在模型训练的不同阶段安排N个训练轮次,即每个任务会按照顺序,一个接着一个,依次训练N步。这样保证了有效率地学习到多任务。如何高效的训练,每个task 都分配有N个训练iteration。

        部分任务的语义信息建模适合递进式:比如ERNIE 1.0 突破完形填空ERNIE 2.0 突破选择题,句子排序题等不断递进更新,就好像前面的任务都是打基础,有点boosting的意味。

        顺序学习容易导致遗忘模式,所以只适合学习任务之间比较紧密的任务,就好像你今天学了JAVA,明天学了Spring框架,但是如果后天让你学习有机化学,就前后不能够联系起来,之前的知识就忘得快适合递进式的语音建模任务。

2-2 Pre-training Tasks

        ERNIE 2.0在训练过程中一共分为三大类,共包含7个预训练任务。

2-2-1 Word-aware Pre-training Tasks(词法层级任务)

        1.Knowledge Masking Task

        与ERNIE 1.0中的Mask机制相同,这个任务可以帮助模型学习局部和全局上下文的依赖信息,ERNIE 2.0使用这个任务来预训练,得到初始版本的模型;
        2.Capitalization Prediction Task(大小写预测)

        预测单词是否为大小写。大写的单词相比其他单词,往往有着特别的语义信息。区分大小写的模型对命名实体识别这类任务比较有优势;
        3.Token-Document Relation Prediction Task(词频关系)

       预测一个词是不是会多次出现在文章中,或者说这个词是不是关键词。根据经验来看,在文档中许多片段都出现的单词往往与主题相关。因此,这个任务可以提升模型捕获关键单词的能力。

2-2-2 Structure-aware Pre-training Tasks(语法层级的任务)

        1.Sentence Reordering Task(句子排序)

        一个段落被拆分为m个片段并打乱顺序,模型需要预测这m个片段的原始顺序,其实就是一个k分类任务让模型去预测这篇文章是第几种,就是一个多分类的问题。这个问题就能够让模型学到句子之间的顺序关系。就有点类似于Albert的SOP任务的升级版。

        2.Sentence Distance Task(句子距离预测)

        三分类任务:“0”代表两个句子属于同个文档并且是相邻的,“1”代表两个句子属于同个文档但不是相邻的,“2”则代表两个句子来自不同文档。

        这个任务可以让模型通过文档级别的信息,学习句子之间的距离。

2-2-3 Semantic-aware Pre-training Tasks(语义层级的任务     

        1.篇章句间关系任务(Discourse Relation Task)

        判断句子的语义关系例如logical relationship( is a, has a, contract etc.),预测两个句子的语义或者修饰(rhetorical)关系。数据集出自论文:Mining discourse markers for unsupervised sentence representation learning。

        2.信息检索关系任务(IR Relevance Task)

         三分类任务,预测query和网页标题的关系。查询文本为第一个句子,标题为第二个句子,模型需要预测这两个句子的关系。

  • “0”代表强关联,用户输入可该查询文本并且点击了这个标题。
  • “1”代表弱关联,用户输入了该查询,并且这个标题出现在了搜索结果中,但用户并未点击。
  • “2”则代表查询文本和标题在语义信息上是随机的,完全不相关的。这个任务可以让模型学习信息检索中的短文本之间的关联。

2-3 Task Embedding

        模型加入了一个新的嵌入 Task Embedding,用来表征不同任务的特征,即每一个预训练任务对应着一个id,从0到N。微调阶段,可以使用任意一个任务的id来加载模型。

 2-4 训练结构

        Encoder可以使用循环神经网络或者Transformer,ERNIE用了Transformer。Encoder参数对于所有任务都是共享的,每个任务都可以更新参数。

        其中存在两种损失函数,一种是句子级别的loss,一种的token级别的loss(与BERT类似)。每个预训练任务拥有自己的损失函数。

        Token level loss:给每个token一个label。

        Sentence level loss:例如句子重排任务,判断[CLS]的输出是那一类别。

        在 ERNIE 2.0 中,新构建的预训练任务类型可以无缝的加入训练框架,持续的进行语义理解学习。通过新增的实体预测、句子因果关系判断、文章句子结构重建等语义任务,ERNIE 2.0 语义理解预训练模型从训练数据中获取了词法、句法、语义等多个维度的自然语言信息,极大地增强了通用语义表示能力。

Reference:

1.百度安全验证

2.BERT模型系列大全解读_我就算饿死也不做程序员的博客-CSDN博客

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

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

相关文章

让小白也能看懂,ChatGPT入门级科普“十问十答”

由于现在GPT火热,360老板已经开始总动员. 白领的日常工作肯定是要发生颠覆性变化的。下面我们就通过自问自答的方式带领小白用户了解一下ChatGPT. 1、ChatGPT到底是什么? ChatGPT 是一个由美国人工智能公司 OpenAI 开发的自然语言处理(NLP&…

vue Electron ArcGis 桌面应用 Sqllite3 node-grp:老旧项目的起死回生

最近接收了一个三四年前做的项目。主要技术栈就是vue2electronsqllite3node-gyp。看到这个技术栈,基本可以知道感知这个项目的关键词:vue、Gis地图、本地数据库、桌面客户端。顿时深感亚历山大。 不多说,开干。 第一步,查看项目…

Qemu搭建ARM Vexpress开发环境

Qemu搭建ARM Vexpress开发环境 文章目录 Qemu搭建ARM Vexpress开发环境Qemu简介QEMU安装前的准备工作QEMU 安装的两种方式通过网络在线安装源码编译安装源码获取QEMU依赖库安装编译安装 命令选项qemu的标准选项qemu显示选项网络属性相关选项kvm的网络模型 Ubuntu 双网卡&#x…

阿里高级工程师纯手打造的Spring Cloud Alibaba微服务全彩手册,限时分享

Spring Cloud Alibaba 是阿里巴巴提供的微服务开发一站式解决方案,是阿里巴巴开源中间件与 Spring Cloud 体系的融合。 Springcloud 和 Srpingcloud Alibaba 区别? SpringCloud: 部分组件停止维护和更新,给开发带来不便;SpringC…

msvcr120.dll丢失怎样修复,快速修复msvcr120.dll的方法分享

msvcr120.dll是Microsoft Visual C Redistributable for Visual Studio 2013的一个组件,是一个动态链接库文件。它包含了许多函数和程序,可以被其他程序调用,这些程序使用了Visual C 2013运行时库。在Windows操作系统中,许多软件和…

vxe-table 列表过滤踩坑

vxet-table 官网给的案例:https://vxetable.cn/#/table/base/filter 通过设置 filters 属性和 filter-method 方法可以开启列筛选功能,通过 filter-multiplefalse 设置为单选 如果是服务端筛选,只需加上 filter-config{remote: true} 和 fi…

vue页面缓存失效问题解决

文章目录 一、问题背景二、问题排查三、问题解决 一、问题背景 前端技术栈用的是vue,然后用keep-alive组件进行缓存页面【切换页面不进行刷新页面,保留之前的查询条件及状态等等】 测试提bug:部分页面突然缓存失效了,每次切换都…

易基因:全基因组DNA甲基化和小RNA分析揭示甘蓝型油菜种子的基因组不对称性 | 植物发育

大家好,这里是专注表观组学十余年,领跑多组学科研服务的易基因。 多倍体是被子植物基因组进化中的一种持续现象,有助于现存开花植物的多样性。甘蓝型油菜(Brassica napus)是世界上最重要的被子植物油料作物品种之一&a…

2023年系统分析师上午题

全国计算机技术与软件专业技术资格(水平)考试 2023年上半年 系统分析师 上午试卷 (考试时间 9 : 00~11 : 30 共 150 分钟) 1. 在答题卡的指定位置上正确写入你的姓名和准考证号,并用正规 2B 铅笔在你写入…

重命名文件名也可以很优雅,看看这些技巧

文件重命名对于许多工作场景来说是非常重要的。比如,当你需要整理大量文件时,一个好的文件命名系统可以帮助你更轻松地管理和查找文件。但是,当需要重命名大量文件时,逐个重命名显然是非常耗时和繁琐的。这时,批量重命…

mysql-8.0.32 数据库的安装 (Linux)

Linux 中 mysql-8.0.32 数据库的安装 缘步骤常见问题解决方案问题一. mysql: error while loading shared libraries: libtinfo.so.5: cannot open shared object file: No such file or directory解决方案:方案一(推荐):方案二&a…

【6 微信小程序学习 - 小程序的组件化开发,通信】

1 小程序组件化开发 2 创建一个组件 1 创建 1,在根目录创建components文件夹,自定义组件都放在此处 2,右键新建component,输入名称后悔创建四个文件 3.其中.json中的"component": true,表示这是一个组件 4,编写代码,和其他代码逻辑相同 2 使用 1,要使用组件的父组…

1:操作系统导论

1.1操作系统的定义 •Anoperatingsystemactsanintermediarybetweenuserofacomputerandthecomputer hardware. ◦ 操作系统充当计算机⽤⼾和计算机硬件之间的中介 •Thepurposeofanoperatingsystemistoprovideanenvironmentinwhichausercanexecute programsinaconvenientandeff…

小红书平台,“松弛感”生活十大趋势报告出炉

放眼时尚、教育、情感、职场等各大领域,继氛围感、仪式感、精致感后,今年都在谈论一个词——松弛感。包括现下轻户外、轻运动、轻解压等风口,也都呼应着年轻人对松弛感的追求。 千瓜数据显示,2023年1月-5月,“松弛感”…

Vue全局事件总线简明笔记

1、作用: 全局事件总线是一种组件间通信的方式,并不是插件,适用于任意组件间通信、实现组件间的通信。 让所有的组件都能访问得到全局事件总线,那么创建的思路就是,全局事件总线一定要让VC或者VM访问得到。 结合组件的…

leetcode24. 两两交换链表中的节点(java)

两两交换链表中的节点 leetcode24. 两两交换链表中的节点題目描述 迭代法.解题思路代码演示 递归法解题思路代码演示 二叉树专题 leetcode24. 两两交换链表中的节点 来源:力扣(LeetCode) 链接:https://leetcode.cn/problems/swap-…

全志V3S嵌入式驱动开发(看门狗驱动)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 大家如果做过工业级别的嵌入式设备,那么对看门狗应该不陌生。很多工业级的设备,其应用环境很多时候是非常糟糕的&#xff0…

抖音seo矩阵系统源码开发及部署配置文档分享

一、开发要求及实现流程 :Scope: video.create 需要申请权限 需要用户授权 该接口用于上传视频文件到文件服务器,获取视频文件video_id(该 ID 为加密后的 ID)。该接口适用于抖音。 注意: 抖音的OAuth API以https://…

阿里云弹性公网ip(EIP)是什么?eip详细介绍

阿里云eip是什么?阿里云百科分享弹性公网IP详细介绍,阿里云弹性公网EIP是什么意思?EIP是可以独立持有的公网IP地址,EIP可以和阿里云专有网络VPC类型的云服务器ECS、NAT网关、ENI网卡、私网负载均衡SLB等绑定,通过EIP可…

chatgpt赋能python:Python是什么

Python是什么 Python是一门高级编程语言,由Guido van Rossum于1991年发明并开发。它具有简单易学、可读性强、跨平台等特点,在Web开发、数据分析、机器学习等领域广泛应用。 Python的文档 Python的文档非常全面,包括官方文档、第三方文档、…