BERT家族:ALBERT

ALBERT

论文:《ALBERT: A Lite BERT For Self-Supervised Learning Of Language Representations》

论文地址:https://arxiv.org/pdf/1909.11942

作者/机构:google

年份:2019.9

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

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

(1)对Embedding进行因式分解

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

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

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

这样做的目的是:拉开E和H的大小,减小模型大小的同时不降低模型整体性能。

(2)跨层的参数共享

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

这样做的目的是:减小模型参数,提升训练速度,且文中提到训练速度快之外,ALBERT每一层的输出的embedding相比于BERT来说震荡幅度更小一些。可见参数共享其实是有稳定网络参数的作用的。

(3)移去NSP任务,使用SOP任务

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

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

这样做的目的是:通过调整正负样本的获取方式去除主题识别的影响,使预训练更关注于句子关系一致性预测。

(4)移除dropout

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

更多NLP相关技术干货,请关注微信关注【NLP有品】

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值