算法面试之Roberta、Albert
算法面试之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相关推荐
- 4种最常问的编码算法面试问题,你会吗?
导语:面试是测查和评价人员能力素质的一种考试活动.最常问的编码算法面试问题你知道多少呢? 作者 | Rahul Sabnis 译者 | 苏本如,编辑 | 刘静 来源 | CSDN(ID:CSDNnew ...
- 机器学习与算法面试太难?
机器学习与算法面试太难? 来源: https://mp.weixin.qq.com/s/GrkCvU2Ia_mEaQmiffLotQ 作者:石晓文 八月参加了一些提前批的面试,包括阿里.百度.头条.贝 ...
- 摊牌了:我就靠这几点,搞定了算法面试官
很多时候,你即使提前复习了这些最常见的面试算法题,你依旧无法通过算法面试! 为什么? 1. 你在提前准备复习的时候,在网上找了半天相应题目的分析文章,但你看了就是不懂. 2. 你在面试的时候,卡壳了, ...
- 《大厂算法面试题目与答案汇总,剑指offer等常考算法题思路,python代码》V1.0版...
为了进入大厂,我想很多人都会去牛客.知乎.CSDN等平台去查看面经,了解各个大厂在问技术问题的时候都会问些什么样的问题. 在看了几十上百篇面经之后,我将算法工程师的各种类型最常问到的问题都整理了出来, ...
- 算法面试的理想与现实
2020-01-11 16:00:12 大型科技公司通常都主张必须进行算法面试,因为他们的规模过大,无法承受低效代码带来的巨额成本.但一次的算法面试真的能体现一个人真正的实力吗? 作者 | Dan L ...
- 几道 BAT 算法面试中经常问的「字符串」问题
https://www.toutiao.com/a6675839856192520711/ String 作为最常见的编程语言类型之一,在算法面试中出现的频率极高. 1. 验证回文串 题目来源于 Le ...
- 前 Google 工程师总结的算法面试指南
作者 | 小争哥 出品 | 小争哥 (ID:xiaozhengge0822) 为什么要学习算法和数据结构?尽管原因有很多,比如锻炼逻辑思维能力.编码能力.阅读源码的能力等等,但我想对于大多数人来说,最 ...
- NLP中文面试学习资料:面向算法面试,理论代码俱全,登上GitHub趋势榜
鱼羊 发自 凹非寺 量子位 报道 | 公众号 QbitAI 一年一度的秋招已经悄悄来临,征战在求职路上的你,准备好了吗? 工欲善其事,必先利其器. 这里有一份NLP面试大全,全中文教学,囊括机器学习 ...
- 算法面试:精选微软经典的算法面试100题(第1-20题)
算法面试:精选微软经典的算法面试100题 引言: 给你10分钟时间,根据上排给出十个数,在其下排填出对应的十个数 要求下排每个数都是先前上排那十个数在下排出现的次数. 上排的十个数如下: [0,1,2 ...
最新文章
- js页面跳转或重定向
- Jsoup获取全国地区数据(省市县镇村)
- WordPress 5.2 Beta 3 发布,要求 PHP 5.6.20 以上版本
- 使用CoreData的轻量级自动数据迁移
- Tomcat集群快速入门:Nginx负载均衡配置,常用策略,场景及特点
- Linux 查看 MySQL 版本的四种方法
- p2000专业软件测试对比,对比说说丽台p2000和p2200对比哪个好些?有何区别呢?良心点评实际情况...
- Linux常用命令笔记2---文件管理2
- 语音识别几成标配,哈弗F7的智能语音系统有何不同?
- 总结之:CentOS 6.5 LAMP分主机平台的搭建及测试
- MIT操作系统实验-XV6项目环境搭建
- 中国AI领袖人物|阿里王坚:区块链与数据价值的交换
- 魅族一直显示无服务器,魅族手机用久了卡顿,这三个方法轻松解决
- java猜拳_Java猜拳小游戏(剪刀、石头、布)
- PDO介绍[不包括具体使用方法]
- TestCenter测试管理工具介绍和环境配置(A)
- Python之网络编程
- spring mvc前端验证代码生成器
- 提供云媒体服务器图片,云开发 把媒体文件上传到微信服务器 已知报错
- Solarwinds 系列介绍
热门文章
- Qt高仿电脑管家界面
- 盘古团队发布 iOS 9.3.3 越狱工具,不但能“越狱”还能“回监狱”
- 网站优化SEO技巧分享-企业建立自己的关键词库@运营猫工具箱
- 企业网盘的映射盘、同步盘、虚拟盘 都是些什么?
- css 怎么覆盖框架样式
- 中考计算机操作题试题文档,初中信息技术中考excel操作题
- 酷狗音乐(繁星网)PHP岗位笔试题
- NC15446 	 wyh的物品
- android定位获得经纬度,android 定位(获取经纬度)
- 3.3 数值分析: 逐次超松弛迭代法-SOR方法