算法面试之Roberta、Albert

  • Roberta
    • 1.dynamic masking
    • 2.No NSP and Input Format
    • 3.Text Encoding
  • Albert
    • 1.词向量因式分解
    • 2.跨层参数共享
    • 3.句子顺序预测
    • 4.提分点
      • 预训练用长句
      • 遮挡多个连续词
      • 扩大模型参数
      • 增加预训练数据
      • 去掉 Dropout 层

Roberta

RoBERTa基本没有什么太大创新,主要是在BERT基础上做了几点调整:
1)训练时间更长,batch size更大,训练数据更多;
2)移除了next predict loss;
3)训练序列更长;
4)动态调整Masking机制。

1.dynamic masking

原本的BERT采用的是static mask的方式,就是在create pretraining data中,先对数据进行提前的mask,为了充分利用数据,定义了dupe_factor,这样可以将训练数据复制dupe_factor份,然后同一条数据可以有不同的mask。注意这些数据不是全部都喂给同一个epoch,是不同的epoch,例如dupe_factor=10, epoch=40, 则每种mask的方式在训练中会被使用4次

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

2.No NSP and Input Format

Segment+NSP:bert style
Sentence pair+NSP:使用两个连续的句子+NSP。用更大的batch size
Full-sentences:如果输入的最大长度为512,那么就是尽量选择512长度的连续句子。如果跨document了,就在中间加上一个特殊分隔符。无NSP。实验使用了这个,因为能够固定batch size的大小。
Doc-sentences:和full-sentences一样,但是不跨document。无NSP。效果最优。

3.Text Encoding

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

Albert

ALBERT 先通过嵌入矩阵分解和共享参数降低参数量,然后再扩大网络宽度提高参数量。整个过程就很像火箭发动机使用的拉伐尔喷管,管道一缩一放,气流就从亚音速加速到超音速

1.词向量因式分解

不管是 BERT,还是后续在 BERT 基础上改进的模型 XLNet,RoBERTa,他们的嵌入向量维度和隐藏层维度都是相等的,这样能进行残差连接的加和运算。这里以 BERT-base 为例,算下嵌入矩阵的参数量:BERT-base 的词表大小 V=30000,嵌入向量维度 E 和隐藏层维度 H 相等,都是 768,一个嵌入矩阵的参数量就是 V×E,有点大,不好顶

Albert在嵌入向量后面紧接着加了一个全连接层,把 E 映射到 H 维度

2.跨层参数共享

多头注意力和 FFN 都共享,也就是一份数据在 Transformer 的一个编码层上,来回过 12 遍

如果共享全部参数,参数量为 12M,是不共享参数时的 13%,参数量降低很多,但平均分数也同样降低很多,最开始均分 82.3,矩阵分解后降到 81.7,现在参数共享后降到 80.1

3.句子顺序预测

仔细分析 NSP 这个任务,它的正样本是选取了两个相邻的 segments,而负样本是选取了两个不同文档的 segments。所以对于模型来说,NSP 有两种方法可以解决:

1.主题预测。如果两个 segments 主题不同说明来自不同文档,进而判断为负样本。
2.连贯性预测。这是 BERT 的本意,让模型判断两个 segment 是不是邻接的。

我们希望模型学到后者,但是前者更好学,并且主题预测和 MLM 任务有些重叠了,所以导致 NSP 这个预训练任务效果不好。

ALBERT 提出了 SOP(Sentence-Order Prediction)。SOP 就是让模型预测两个相邻 segments 有没有被调换前后顺序,如下图:

这样模型就只能通过连贯性来预测 True or False,而不会借助主题信息。

4.提分点

预训练用长句

BERT 在预训练的时候,为了加速,前 90% 的 steps 用长度为 128 的句子,而后 10% 的 steps 用长度为 512 的句子,来训练位置编码。

ALBERT 则是反过来,90%-512,10%-128。

长句能激发模型学习文档级别的表示向量,短句则是让模型学习句级的表示向量,ALBERT 用更多的长句,模型内部的向量会更高级、更抽象,所以效果有所提升。

遮挡多个连续词

ALBERT 借鉴 SpanBERT 中的方法,改进了 BERT 的 MLM 任务,每次不随机遮一个词,而是随机遮连续的多个词,连续多个词具有更完整的语义,提高了预训练的难度,有利于下游微调任务。
下一篇将介绍spanBert

扩大模型参数

用于屠榜的 ALBERT 并不是 base 配置,而是 xxlarge 配置。ALBERT-xxlarge 的平均分比 BERT-large 高了 3.5,参数量是 BERT-large 的 70%,但速度是 0.3 倍。所以可见 ALBERT 通过共享参数把参数量压下来了,但该计算的还得计算,计算量是不会减小的。

ALBERT-xxlarge 层数是 12,而不是 24,因为作者通过实验发现,当隐藏层维度是 4096 时,24 层和 12 层效果一样,也就是说模型到达了深度极限。

增加预训练数据

BERT 使用的预训练数据是 Wikipedia 和 BOOKCORPUS 两个数据集,而 ALBERT 使用了 XLNet 和 RoBERTa 中都使用到的额外预训练数据集

去掉 Dropout 层

因为共享参数降低了参数量,参数量下降对模型来说是一种正则化,所以这个时候再搭配 Dropout 效果就会下降,因为有点过度正则化了。ALBERT 在去掉 Dropout 后,平均分数提高了0.3

上一篇:算法面试之BERT细节
下一篇:算法面试之SpanBERT

注:本专题大部分内容来自于总结,若有侵权请联系删除。

算法面试之Roberta、Albert相关推荐

  1. 4种最常问的编码算法面试问题,你会吗?

    导语:面试是测查和评价人员能力素质的一种考试活动.最常问的编码算法面试问题你知道多少呢? 作者 | Rahul Sabnis 译者 | 苏本如,编辑 | 刘静 来源 | CSDN(ID:CSDNnew ...

  2. 机器学习与算法面试太难?

    机器学习与算法面试太难? 来源: https://mp.weixin.qq.com/s/GrkCvU2Ia_mEaQmiffLotQ 作者:石晓文 八月参加了一些提前批的面试,包括阿里.百度.头条.贝 ...

  3. 摊牌了:我就靠这几点,搞定了算法面试官

    很多时候,你即使提前复习了这些最常见的面试算法题,你依旧无法通过算法面试! 为什么? 1. 你在提前准备复习的时候,在网上找了半天相应题目的分析文章,但你看了就是不懂. 2. 你在面试的时候,卡壳了, ...

  4. 《大厂算法面试题目与答案汇总,剑指offer等常考算法题思路,python代码》V1.0版...

    为了进入大厂,我想很多人都会去牛客.知乎.CSDN等平台去查看面经,了解各个大厂在问技术问题的时候都会问些什么样的问题. 在看了几十上百篇面经之后,我将算法工程师的各种类型最常问到的问题都整理了出来, ...

  5. 算法面试的理想与现实

    2020-01-11 16:00:12 大型科技公司通常都主张必须进行算法面试,因为他们的规模过大,无法承受低效代码带来的巨额成本.但一次的算法面试真的能体现一个人真正的实力吗? 作者 | Dan L ...

  6. 几道 BAT 算法面试中经常问的「字符串」问题

    https://www.toutiao.com/a6675839856192520711/ String 作为最常见的编程语言类型之一,在算法面试中出现的频率极高. 1. 验证回文串 题目来源于 Le ...

  7. 前 Google 工程师总结的算法面试指南

    作者 | 小争哥 出品 | 小争哥 (ID:xiaozhengge0822) 为什么要学习算法和数据结构?尽管原因有很多,比如锻炼逻辑思维能力.编码能力.阅读源码的能力等等,但我想对于大多数人来说,最 ...

  8. NLP中文面试学习资料:面向算法面试,理论代码俱全,登上GitHub趋势榜

    鱼羊 发自 凹非寺  量子位 报道 | 公众号 QbitAI 一年一度的秋招已经悄悄来临,征战在求职路上的你,准备好了吗? 工欲善其事,必先利其器. 这里有一份NLP面试大全,全中文教学,囊括机器学习 ...

  9. 算法面试:精选微软经典的算法面试100题(第1-20题)

    算法面试:精选微软经典的算法面试100题 引言: 给你10分钟时间,根据上排给出十个数,在其下排填出对应的十个数 要求下排每个数都是先前上排那十个数在下排出现的次数. 上排的十个数如下: [0,1,2 ...

最新文章

  1. js页面跳转或重定向
  2. Jsoup获取全国地区数据(省市县镇村)
  3. WordPress 5.2 Beta 3 发布,要求 PHP 5.6.20 以上版本
  4. 使用CoreData的轻量级自动数据迁移
  5. Tomcat集群快速入门:Nginx负载均衡配置,常用策略,场景及特点
  6. Linux 查看 MySQL 版本的四种方法
  7. p2000专业软件测试对比,对比说说丽台p2000和p2200对比哪个好些?有何区别呢?良心点评实际情况...
  8. Linux常用命令笔记2---文件管理2
  9. 语音识别几成标配,哈弗F7的智能语音系统有何不同?
  10. 总结之:CentOS 6.5 LAMP分主机平台的搭建及测试
  11. MIT操作系统实验-XV6项目环境搭建
  12. 中国AI领袖人物|阿里王坚:区块链与数据价值的交换
  13. 魅族一直显示无服务器,魅族手机用久了卡顿,这三个方法轻松解决
  14. java猜拳_Java猜拳小游戏(剪刀、石头、布)
  15. PDO介绍[不包括具体使用方法]
  16. TestCenter测试管理工具介绍和环境配置(A)
  17. Python之网络编程
  18. spring mvc前端验证代码生成器
  19. 提供云媒体服务器图片,云开发 把媒体文件上传到微信服务器 已知报错
  20. Solarwinds 系列介绍

热门文章

  1. Qt高仿电脑管家界面
  2. 盘古团队发布 iOS 9.3.3 越狱工具,不但能“越狱”还能“回监狱”
  3. 网站优化SEO技巧分享-企业建立自己的关键词库@运营猫工具箱
  4. 企业网盘的映射盘、同步盘、虚拟盘 都是些什么?
  5. css 怎么覆盖框架样式
  6. 中考计算机操作题试题文档,初中信息技术中考excel操作题
  7. 酷狗音乐(繁星网)PHP岗位笔试题
  8. NC15446 wyh的物品
  9. android定位获得经纬度,android 定位(获取经纬度)
  10. 3.3 数值分析: 逐次超松弛迭代法-SOR方法