前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >BERT+实体-百度ERNIE优化了啥

BERT+实体-百度ERNIE优化了啥

作者头像
百川AI
发布2022-01-04 08:26:56
6121
发布2022-01-04 08:26:56
举报
文章被收录于专栏:我还不懂对话

ERNIE 1.0

如何将知识(knowledge)信息融入到模型训练中,一种方式是将知识信息作为输入,成本是其他人使用的时候也要构建知识库,并且fine-tune和pre-train的知识库分布不一致,fine-tune也会出现问题。

另一种方式是将知识信息融入到训练任务中,ERNIE提出一种知识掩盖策略取代bert的mask,包含实体层面和短语级别的掩盖,实验验证了这种策略的有效性,

多阶段的mask

Basic-Level Masking

和bert一样,随机选取token做mask。

Phrase-Level Masking

会将语法中的短语做mask,例如:a series of|such as 等。

Entity-Level Masking

会将一些实体整个mask,主要实体包含人物、地点、组织、产品名等。

数据

训练预料包括中文维基百科,百度百科,百度新闻(最新的实体信息),百度贴吧。

DLM

其中百度贴吧的Query-Response信息用于DLM训练,即对话语言模型,每个句子会有一个标记,Q表示query,R表示response。这个dialogue embedding,其实就是bert里面的sentence embedding(segment id)。

效果

实验证明了其提出的两种mask策略都对下游人物有所提升,其二,证明了DLM人物,对于下游人物也有相应的提升。其三,通过完型填空人物,ernie能够更好地利用词语信息预测出正确的实体。

ERNIE 2.0

当前pre-training模型更多关注词语或者句子共现,没有很好地利用语料中词汇( lexical)、句法(syntactic)和语义(semantic)信息,例如实体、semantic closeness、discourse relations。为了更好的利用训练语料中的词汇、句法和语义信息,提出可持续学习(continual learning)的ERNIE2.0的多任务的预训练框架,并实验论证了在GLUE上效果超过BERT和XLNet。

XLNet看论文提出的方法很有意思,但是效果提升上来说,真的难讲是参数量带来的提升还是模型改进,甚至怀疑是调优上带来的提升(炼丹术)。 纵观BERT相关改进方法,无非模型和数据两方面,添加跟多语言建模任务其实是数据和模型上的改进,效果上肯定是数据优化带来的提升更为明显,例如roberta改进了数据预处理带来的某些任务提升就超过了XLNet。

ERNIE2.0框架

作者基于上面假设,提出来ERNIE2.0的框架,支持添加定制的任务与原有多任务一起增量地预训练,使得模型能够更好地学习到语料中的词汇( lexical)、句法(syntactic)和语义(semantic)表示。

个人理解主要区别就在于添加了更多的语言任务,底层模型的话还是Transformer,或者你也可以换成RNN(换成RNN图个啥呢)

git: https://github.com/PaddlePaddle/ERNIE

Continual Pre-training

持续预训练包含两步。首先,通过引入先验知识和大数据上持续地无监督任务训练模型,然后增量的添加多任务更新ERNIE模型。

对于第一步pre-training,会构造词语感知、结构感知、语义感知的任务,这些任务都是无监督或者弱监督的信号,能够方便的从大量语料中,无须人工标注。

对于第二步的多任务,使用持续学习的方式训练。首先使用一个简单的任务训练初始模型,然后持续增加新的预训练任务来升级模型。注意,在添加新任务的时候,会和之前任务一起训练,来保证模型不会忘记之前学到的知识。基于此,作者认为这种持续学习能够让ERNIE框架保持学习并且持续收集知识,同时积累的知识保证模型在新任务上能够学得更好。

讲道理,这不就是 积跬步而至千里 吗?

整体框架如下图,中间的Encoder为各个人物所共享,可以是Transformer、RNN、甚至CNN(as you like,但是也没必要开倒车),将其分类了两大类损失,一类是句子级别的损失,一类是字级别,后面会介绍。

ERNIE 2.0 Model

模型结构

Transformer Encoder:作为底层的共享编码层,细节参考:Attention Is All You Need

Task Embedding:底层引入了任务的编码特征来区分不同的任务,对于不同的任务使用唯一表示的ID来表示,每个id有一个唯一的向量表示(就想word embedding一样,只是这里id少而已)。其他的和BERT类似,就是Token embedding, sentence embedding, Position embedding. 见图三。

看到这里我有点好奇训练方式,难道七个任务是交替训练吗,继续看下文吧

在这里插入图片描述

预训练任务

Word-aware Pre-training Tasks

Knowledge Masking Task:和ERNIE1.0类似,使用字、短语、实体级别的mask LM任务来训练,具体就是掩盖掉整个短语、实体,让模型通过上下文和全局信息预测这些被掩盖掉的词语。此任务是初始化训练模型。

Capitalization Prediction Task: 即大小写预测,在英文中大写字母一般有特殊含义,一般都是实体,所以这个任务对于识别实体会有一些帮助。

Token-Document Relation Prediction Task:这是啥意思,TF? no IDF? 预测一个词语是否在其他段落中。一般主题词不会在其他段落中出现,但是主题词也有可能在其他类似文档中出现,所以作者期望这个能够让模型具备捕获关键词能力。

Structure-aware Pre-training Tasks

Sentence Reordering Task: 即排序任务,咋建模呢,哈哈,将一段话随机切成[1,m]段,然后随机打乱顺序,那模型咋预测,简单,可能的序列有

k=\sum_{n=1}^{m}n!

种,那不就是一个k分类问题吗,好吧。然后模型就能学到段落中句子的关系。

说实话,我觉得能如果m比较小还行,比如m=2就很像BERT里面的NSP任务,但是m大的话,呵呵。但是,作者这种范式总结还是很赞。

Sentence Distance Task: 对于句子距离,怎么建模呢,仍然是分类来做,具体为3分类问题。

  • 0类:两个句子是同一段中相邻。
  • 1类:两个句子在同一段话中,但是不相邻。
  • 2类:两个句子没有在同一段话中。
Semantic-aware Pre-training Tasks

Discourse Relation Task:除了句子的位置距离,那么语义关系还没有呢,于是这里提出了句子间的语义(其实是修辞)关系任务。使用了Mining discourse markers for unsupervised sentence representation learning中的英文数据训练模型,同时使用期方法自动构建了中文数据来训练中文模型。

IR Relevance Task:那么真语义相似性任务呢,这就来了,利用百度搜索引擎的数据(要是能用google的估计能好不少),判断query(第一句)和url title(第二句)的关系,也是一个三类别。

  • 0表示强相关(即用户点击)。
  • 1表示弱相关,即用户输入query,title被展示出来,哈哈,就是百度的搜索结果作为标签(那不全学到广告了,哈哈,开玩笑的,应该会去掉广告吧)。
  • 2表示query、title完全不相关,随机选取。

那么具体是怎么训练的呢?

Continual Multi-task Learning

面临两个问题,一是使用持续学习的方式学习多个任务,并且模型不能遗忘之前的任务的知识。作者通过continual multi-task learning方法,每次训练新任务之前加载之前模型参数,并且新任务会和之前的任务一起同时训练。

另一个是怎么更高效地训练多个任务。通过对不同的任务,分配不同的迭代次数N,在不同的训练阶段框架需要自动对每个任务分配N的值,以此来保证高效并且模型不会遗忘之前任务。

那么问题来了,这个超参数N咋设置呢,炼丹吗?

实验

最重要的,数据来源,英文数据集来自于wiki百科,book corpus,收集了Reddit和Discoery data[3]作为语义关系的数据。中文预料包含百科、新闻、对话、信息检索、语义关系、搜索引擎数据。见下表

Fine-tuning任务

英文自然是GLUE任务。中文任务包含9项:阅读理解、实体识别、NLI、语义相似度、情感分析、QA。

结果自然是超过了之前的一些BERT模型。英文数据集GLUE结果

中文数据集:

训练方式对比

作者所谓的continual Multi-task Learning,分别和MTL、CL做了对比,如图

三种训练方式,continual Multi-task Learning最优,具体训练是stage1训练任务1 20k步,stage2训练任务1和任务2以3:1比例训练。以此类推,作者任务这样会

Reference

  1. Attention Is All You Need
  2. https://github.com/PaddlePaddle/ERNIE
  3. Mining discourse markers for unsupervised sentence representation learning
  4. [GLUE](
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/05/09 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • ERNIE 1.0
  • 多阶段的mask
    • Basic-Level Masking
      • Phrase-Level Masking
        • Entity-Level Masking
        • 数据
          • DLM
          • 效果
          • ERNIE 2.0
            • ERNIE2.0框架
              • Continual Pre-training
            • ERNIE 2.0 Model
              • 模型结构
              • 预训练任务
            • 实验
              • Fine-tuning任务
            • 训练方式对比
            • Reference
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档