本文是我对ALBERT论文的一个总结归纳,如有理解上的偏差、错误欢迎大家指正批评,感谢。

前言

RoBERTa没霸榜几天,这不Google爸爸就又放大招,这次的新模型不再是简单的的升级,而是采用了全新的参数共享机制,反观其他升级版BERT模型,基本都是添加了更多的预训练任务,增大数据量等轻微的改动。这次ALBERT的改进,不仅提升了模型的整体效果再一次拿下来各项榜单的榜首,而且参数量相比BERT来说少了很多。

对于预训练模型来说,提升模型的大小是能对下游任务的效果有一定提升,然而如果进一步提升模型规模,势必会导致显存或者内存出现OOM的问题,长时间的训练也可能导致模型出现退化的情况。为了解决这些问题,Google爸爸提出了ALBERT,该模型提出了两种减少内存的方法,同时提升了训练速度,其次改进了BERT中的NSP的预训练任务。接下来就让我们一起来看看这个新的模型到底是什么样子的。

相比于BERT的改进

ALBERT也是采用和BERT一样的Transformer的encoder结果,激活函数使用的也是GELU,在讲解下面的内容前,我们规定几个参数,词的embedding我们设置为E,encoder的层数我们设置为L,hidden size即encoder的输出值的维度我们设置为H,前馈神经网络的节点数设置为4H,attention的head个数设置为H/64。

在ALBERT中主要有三个改进方向。

1、对Embedding因式分解(Factorized embedding parameterization)

在BERT中,词embedding与encoder输出的embedding维度是一样的都是768。但是ALBERT认为,词级别的embedding是没有上下文依赖的表述,而隐藏层的输出值不仅包括了词本生的意思还包括一些上下文信息,理论上来说隐藏层的表述包含的信息应该更多一些,因此应该让H>>E,所以ALBERT的词向量的维度是小于encoder输出值维度的。

在NLP任务中,通常词典都会很大,embedding matrix的大小是E×V,如果和BERT一样让H=E,那么embedding matrix的参数量会很大,并且反向传播的过程中,更新的内容也比较稀疏。

结合上述说的两个点,ALBERT采用了一种因式分解的方法来降低参数量。首先把one-hot向量映射到一个低维度的空间,大小为E,然后再映射到一个高维度的空间,说白了就是先经过一个维度很低的embedding matrix,然后再经过一个高维度matrix把维度变到隐藏层的空间内,从而把参数量从 O ( V × H ) O(V×H) O(V×H)降低到了 O ( V × E + E × H ) O(V×E+E×H) O(V×E+E×H),当E<<H时参数量减少的很明显。

下图是E选择不同值的一个实验结果,尴尬的是,在不采用参数共享优化方案时E设置为768效果反而好一些,在采用了参数共享优化方案时E取128效果更好一些。

2、跨层的参数共享(Cross-layer parameter sharing)

在ALBERT还提出了一种参数共享的方法,Transformer中共享参数有多种方案,只共享全连接层,只共享attention层,ALBERT结合了上述两种方案,全连接层与attention层都进行参数共享,也就是说共享encoder内的所有参数,同样量级下的Transformer采用该方案后实际上效果是有下降的,但是参数量减少了很多,训练速度也提升了很多。

下图是BERT与ALBERT的一个对比,以base为例,BERT的参数是108M,而ALBERT仅有12M,但是效果的确相比BERT降低了两个点。由于其速度快的原因,我们再以BERT xlarge为参照标准其参数是1280M,假设其训练速度是1,ALBERT的xxlarge版本的训练速度是其1.2倍,并且参数也才223M,评判标准的平均值也达到了最高的88.7

除了上述说了训练速度快之外,ALBERT每一层的输出的embedding相比于BERT来说震荡幅度更小一些。下图是不同的层的输出值的L2距离与cosine相似度,可见参数共享其实是有稳定网络参数的作用的。

3、句间连贯(Inter-sentence coherence loss)

BERT的NSP任务实际上是一个二分类,训练数据的正样本是通过采样同一个文档中的两个连续的句子,而负样本是通过采用两个不同的文档的句子。该任务主要是希望能提高下游任务的效果,例如NLI自然语言推理任务。但是后续的研究发现该任务效果并不好,主要原因是因为其任务过于简单。NSP其实包含了两个子任务,主题预测与关系一致性预测,但是主题预测相比于关系一致性预测简单太多了,并且在MLM任务中其实也有类型的效果。

这里提一下为啥包含了主题预测,因为正样本是在同一个文档中选取的,负样本是在不同的文档选取的,假如我们有2个文档,一个是娱乐相关的,一个是新中国成立70周年相关的,那么负样本选择的内容就是不同的主题,而正样都在娱乐文档中选择的话预测出来的主题就是娱乐,在新中国成立70周年的文档中选择的话就是后者这个主题了。

在ALBERT中,为了只保留一致性任务去除主题识别的影响,提出了一个新的任务 sentence-order prediction(SOP),SOP的正样本和NSP的获取方式是一样的,负样本把正样本的顺序反转即可。SOP因为实在同一个文档中选的,其只关注句子的顺序并没有主题方面的影响。并且SOP能解决NSP的任务,但是NSP并不能解决SOP的任务,该任务的添加给最终的结果提升了一个点。

4、移除dropout

除了上面提到的三个主要优化点,ALBERT的作者还发现一个很有意思的点,ALBERT在训练了100w步之后,模型依旧没有过拟合,于是乎作者果断移除了dropout,没想到对下游任务的效果竟然有一定的提升。这也是业界第一次发现dropout对大规模的预训练模型会造成负面影响。

总结

在初闻ALBERT时,以为其减少了总的运算量,但实际上是通过参数共享的方式降低了内存,预测阶段还是需要和BERT一样的时间,如果采用了xxlarge版本的ALBERT,那实际上预测速度会更慢。

ALBERT解决的是训练时候的速度提升,如果要真的做到总体运算量的减少,的确是一个复杂且艰巨的任务,毕竟鱼与熊掌不可兼得。不过话说回来,ALBERT也更加适合采用feature base或者模型蒸馏等方式来提升最终效果。

ALBERT作者最后也简单提了下后续可能的优化方案,例如采用sparse attention或者block attention,这些方案的确是能真正降低运算量。其次,作者认为还有更多维度的特征需要去采用其他的自监督任务来捕获。

参考文献

ALBERT: A LITE BERT FOR SELF-SUPERVISED
LEARNING OF LANGUAGE REPRESENTATIONS

一文揭开ALBERT的神秘面纱相关推荐

  1. [转]揭开正则表达式的神秘面纱

    揭开正则表达式的神秘面纱 关闭高亮 [原创文章,转载请保留或注明出处:http://www.regexlab.com/zh/regref.htm] 引言 正则表达式(regular expressio ...

  2. 揭开木马的神秘面纱 2

    揭开木马的神秘面纱zz 2 离冰河二的问世已经快一年了,大家对于木马这种远程控制软件也有了一定的认 识,比如:他会改注册表,他会监听端口等等,和一年前几乎没有人懂得木马是什么东   西相比,这是一个质 ...

  3. Azure Stack技术深入浅出系列6:Azure Stack一体机探究 — 揭开黑盒子的神秘面纱

    Azure Stack是微软公有云平台的延伸,为客户环境里提供接口和相关的功能.微软的Azure Stack安装在指定的合作伙伴的一体机中,并以一体机的形式部署到客户的混合云应用环境里的.2017年7 ...

  4. 揭开木马的神秘面纱 1

    揭开木马的神秘面纱 1 前言 在网上,大家最关心的事情之一就是木马:最近出了新的木马吗?木马究竟能实现 哪些功能?木马如何防治?木马究竟是如何工作的?本文试图以我国最著名的木马之  - 冰河为例,向大 ...

  5. 揭开Spark Streaming神秘面纱② - ReceiverTracker 与数据导入

    问题导读: 1.streaming application 如何兼容众多数据源? 2.receivers 是如何分发并启动的? 3.receiver 接收到的数据是如何流转的? Spark Strea ...

  6. 服装界的小米? 揭开小虫米子的神秘面纱

    昨日,小虫米子对外宣布了双十二战绩,C店第一.整个淘宝.天猫女装第六的成绩格外惹眼.很多人都对这家名不见经传的淘品牌感到好奇,他并不像茵曼.韩都.裂帛.阿卡那样名声在外,一般名气是与销售额划等号的,可 ...

  7. 「曼孚科技」揭开计算机视觉的神秘面纱——物体检测技术

    计算机视觉是当前人工智能最热门的领域之一,在其快速发展中,物体检测发展发挥了关键作用.本文旨在详解物体检测基本概念.衍生技术及其社会化应用,揭开计算机视觉的神秘面纱,深刻理解人工智能的独特魅力. 什么 ...

  8. 了解黑客的关键工具---揭开Shellcode的神秘面纱

    2019独角兽企业重金招聘Python工程师标准>>> ref:  http://zhaisj.blog.51cto.com/219066/61428/ 了解黑客的关键工具---揭开 ...

  9. 揭开PC-Lint9的神秘面纱

    前言 今天,又定位了一个令人懊恼的C++内存使用异常问题,最终结果,竟然是减少接口类的方法后,为了避免编译错误,顺手添加的强制类型转换导致的. 对于这样的问题,我们碰到很多很多次了.没有这样的问题,我 ...

最新文章

  1. vlmcsd 编译与测试
  2. 【Android Developers Training】 104. 接受地点更新
  3. ubuntu 启动时 设置多个ip 修改mac 网关 。。。
  4. 吴裕雄 Bootstrap 前端框架开发——Bootstrap 辅助类:在元素获取焦点时显示(如:键盘操作的用户)...
  5. RAID5中的“左、右循环”与“同步、异步”(2)
  6. UNIAPP 小说采集阅读器
  7. 华为荣耀7i刷linux,华为荣耀7i(ATH-AL00 全网通)ROOT教程,简单几步完成ROOT
  8. 忘记Windows服务器密码怎么办
  9. 灵敏度分享码显示服务器不可用,和平精英灵敏度分享码怎么使用 复制高玩主播灵敏度方法...
  10. 鼠标移动文字上显示图片
  11. 租房合同中维修费需要谁出呢
  12. 中国与印度软件工程师之比较…
  13. 1 5 php,直接可以拿来用的PHP惯用功能代码片段(1~5)
  14. siggraph_Siggraph的统一性
  15. 8.HTML标签-表格标签table
  16. linux模拟蓝牙播放器,为 Ubuntu Linux 开启蓝牙 APTX / LDAC 支持
  17. arduino 源码分层浅析
  18. IOS13破解屏幕使用时间,无需电脑,不丢数据
  19. 计算机网络各层协议说明及常见协议
  20. C#联合Halcon打开笔记本摄像头

热门文章

  1. 拼多多618来了:500余家官旗齐聚“品牌专场”,发放30亿消费红包
  2. 6-5 奇数值结点链表 (20分)
  3. 【Jquery】Jquery操作table表格详细说明
  4. 2010年计算机考研选择题解析,2009-2010计算机考研真题及答案(含选择题解析)WORD高清晰版.pdf...
  5. vue3+ts+vite后台管理模板
  6. CDR中人民币符号怎么打
  7. 【写作中的复杂名词短语练习题】前置与后置修饰
  8. 谈谈市场上常用语音芯片方案选型,录音芯片方案选型
  9. “使用达芬奇软件实现Autosar架构:配置和注意事项“
  10. JAVA自定义信件消息模板内容