前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Bertopology: Bert及其改进型总结

Bertopology: Bert及其改进型总结

作者头像
Steve Wang
发布2020-09-10 14:39:16
1.2K0
发布2020-09-10 14:39:16
举报
文章被收录于专栏:从流域到海域

BERT自从被提出之后,因为其开源且表现及其优异,工业界开始广泛采用Bert来完成各项NLP的任务。一般来说,Bert都能给我们相当强悍的结果,唯一阻止Bert上线使用的,就是其难以接受的计算复杂度。因此各种模型压缩的方法层出不穷。本篇博客意在总结Bert及其改进型主要的特点,这也是NLP算法面试常见的问题。

Bert使用的激活函数是GELU: 正态分布下GELU(x),论文给出了近似计算公式:

Bert使用的版本则更为简单,源码如下:

代码语言:javascript
复制
def gelu(input_tensot):
	cdf = 0.5 * (1.0 + tf.erf(input_tensor / tf.sqrt(20.)))

改进方法:

  1. 更大更强悍
  2. 瘦身,模型压缩
  3. 引入常识或知识

(更大更强悍) RoBERTa

RoBERTa

  • More data
  • Large batch size
  • Traing longer
  • No NSP (很多论文作者认为next sentence prediction无用)
  • Large sequence length
  • Dynamic masking
  • Byte level BPE

static masking: create pretraing data中,先对数据进行提前的mask,为了充分利用数据,定义dupe_factor,将数据复制dupe_factor份,同一条数据有dupe_factor份,每一份执行不同的mask,这些数据不是全部喂给同一个epoch,而是不同的epoch。

dynamic masking: 每一次将训练样本喂给模型的时候,随机进行mask。

Byte level BPE:

BERT原型使用的是 character-level BPE vocabulary of size 30K, RoBERTa使用了GPT2的 BPE 实现,使用的是byte而不是unicode characters作为subword的单位。

(瘦身,模型压缩): ALBERT

ALBERT

[1]. 对Embedding做因式分解(Factorized embedding parameterization)

使用了更小的E,H可以维持不变,显著降低参数。

[2]. 跨层的参数共享(Cross-layer parameter sharing)

Transformer有两种共享参数的方案:

  • 只共享全连接层
  • 只共享attention层 ALBERT结合上述两种方法,全连接层,attention层都进行参数共享。

[3]. inter-sentence coherence loss

sentence-order prediction(SOP) BERT的NSP其实包含了两个子任务,主题一致性与关系一致性预测。主题预测(因为正样本在同一个文档中选取,负样本在不同文档中选取,主题预测很简单,并且MLM任务中也有类型的效果)。

ALBERT中,为了只保留一致性任务去除主题识别的影响,提取了sentence-order prediction。SOP是在同一个文档中选取的,所以只关注句子的顺序并没有主题的影响。

[4]. 移除Dropout

(引入知识) ERNIE(Baidu)、ERNIE 2.0(Baidu)、ERNIE(THU)

百度的详见官方博客:paddlepaddle

ERNIE(Baidu) 中文

[1]. 不同粒度的信息融合

  • Basic Level Masking训练 英文而言,粒度为word;中文而言,粒度为字。
  • Phrase-Level Masking 对短语也进行mask。
  • Entity-level Masking 对句子中的实体也进行mask。

[2]. 多源数据 中文维基百科,百度百科,百度新闻,百度贴吧。其中,百度贴吧由于其社区的特性,里面的内容是对话形式的,而 ERNIE 中对于 Segement Embedding 预训练与 Bert 的 NSP 不同的是,其采用 DLM 来获得这种句子粒度级别的信息,而这对于句子语义的把握更佳准确

[3]. DLM: Dialog Language Model DLM更能把握句子的语义信息,并且用于对话、问答这种形式的任务效果更好。

为了能够表示多轮对话,其输入采用QRQ、QQR、QRR的形式。

ERNIE 2.0(Baidu)

  1. Continual Learning(持续学习)
  2. Multi-task Learning(多任务学习)
  3. Sequential Multi-task Learing(顺序多任务学习)
模型的预训练任务:

[1]. 词汇级别任务(word-aware pretraining task):获取词法知识

  • 知识掩码任务(同ERNIE)
  • 大小写预测任务

[2]. 结构级别任务(structure-aware pretraining task):获取句法知识

  • 句子排序任务
  • 句子距离任务(判断两个句子是否相邻、是否属于同一文章,来判断两句的语义关系是否紧密,是否属于同一话题。) 一个三分类的问题: 0: 代表两个句子相邻 1: 代表两个句子在同个文章但不相邻 2: 代表两个句子在不同的文章中

[3]. 语义级别的任务(semantic-aware pretraining task):获取语义知识 获取语义关系的知识 0: 代表了提问和标题强相关(出现在搜索的界面且用户点击了) 1: 代表了提问和标题弱相关(出现在搜索的界面但用户没点击) 2: 代表了提问和标题不相关(未出现在搜索的界面)

[4]. 篇章句间关系任务(Discourse Relation Task) 判断句子的语义关系,无监督的逻辑关系分类(因果、假设、递进、转折)

[5]. 信息检索关系任务(IR Relevance Task) 一个三分类的问题,预测query和网页标题的关系: 0: 代表了提问和标题强相关(出现在搜索的界面且用户点击了) 1: 代表了提问和标题弱相关(出现在搜索的界面但用户没点击) 2: 代表了提问和标题不相关(未出现在搜索的界面)

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/09/09 ,如有侵权请联系 cloudcommunity@tencent.com 删除

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • RoBERTa
  • ALBERT
  • ERNIE(Baidu) 中文
  • ERNIE 2.0(Baidu)
    • 模型的预训练任务:
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档