【NLP】从BERT到ALBERT

来源 | Microstrong

作者 | Microstrong

ALBERT推荐语:

虽然BERT模型本身是很有效的,但这种有效性依赖于大量的模型参数,所以训练一套BERT模型所需要的时间和资源成本是非常大的,甚至这样复杂的模型也会影响最终效果。在本文中,我们重点来介绍一种瘦身版的重磅BERT模型-ALBERT,它通过几种优化策略来获得比BERT小得多的模型,但在GLUE、RACE等数据集上反而超越了BERT模型。

ALBERT的论文:

Lan Z, Chen M, Goodman S, et al. Albert: A lite bert for self-supervised learning of language representations[J]. arXiv preprint arXiv:1909.11942, 2019.

目录:

对于大规模预训练模型的训练

BERT模型的回顾

ALBERT采用的几种优化策略

ALBERT总结

Future(current) works

对NLP领域的展望

1. 对于大规模预训练模型的训练

We are witnessing a big shift in the approach in natural language understanding in the last two years.

【NLP】从BERT到ALBERT

这两年我们在自然语言处理方面有很大的进展,突破性进展主要来源于“全网络预训练的算法”,主要包括上图中的三篇论文(GPT、BERT等)。全网络预训练的意识是预训练和下游任务是基本上共享大部分参数。像之前的Skip-gram、Continuous Bag of Words(CBOW)只是训练词嵌入部分,这部分参数比较小,如果要做下游任务,还要在这上面添加很多的参数,从头开始训练,这就使得在训练下游任务时需要很多的训练数据。

全网络预训练模型到底有多强大呢?这里跟AlexNet做了一个对比,Alext基本上是点燃人工智能的导火索。下图中左边是ImageNet的Error的图像,2012年的时候,Error方面有个陡降,这是因为Alext的原因,之后每一年Error都会有一个大降,由于深度学习带来的好处。下图中右边,2017年RACE数据集发布的时候,用的方法是local pre-training(类似于Skip-gram、CBOW),准确率是45.9%。18年6月份GPT把精度做到59%,这基本上就是全网络训练了。然后BERT在同年11月,把精度做到72%。然后是XLNET把精度做到81.8%,Roberta把精度做到83.2%,ALBERT把精度做到98.4%。由于全网络预训练的原因,我们把精度翻了一倍,从原来的45.9%到现在的89.4%。

【NLP】从BERT到ALBERT

2. BERT模型的回顾

Can we improve Full-network pre-training models, similar to what computer vision community did for AlexNet?

【NLP】从BERT到ALBERT

从上图可以看出,AlextNet之后,精度的提升大部分是由于网络深度的增加。下图来源于BERT的论文里,BERT同样做了把网络变宽和变深的实验,发现网络变宽和变深,精度会提升。

【NLP】从BERT到ALBERT

思考问题:Is having better NLU model as easy as increasing the model size?

【NLP】从BERT到ALBERT

上图是我们先来简单的回顾一下BERT的模型。下图是我们只把BERT的宽度增加到2倍,发现参数已经达到了12亿7千万个,内存直接爆了。

【NLP】从BERT到ALBERT

思考问题:Can we have more efficient ways of using parameters?我们能不能在大量减少参数的情况下,不减少或者稍微减少模型的精度呢?这就是ALBERT的主题。

3. ALBERT采用的几种优化策略

3.1 BERT和Transformer的参数主要在哪里

【NLP】从BERT到ALBERT

上图中,Attention feed-forward block占总共参数的80%左右,Token embedding projection block占参数的20%左右。

3.2 Method 1: factorized embedding parametrization

【NLP】从BERT到ALBERT

下图表示BERT的One-hot向量输入,第一次投影是词与词之间是没有交互的。只有到了做Attention时,词与词之间才有交互。因此第一次投影不需要很高维度的向量。

【NLP】从BERT到ALBERT

下图是ALBERT的改进,先把第一次的映射放到很低的维度,然后在映射为我们需要的维度。这样做有两个好处:

  • 词的Context independent表示与Context dependent表示之间解锁,可以自由的对Context dependent表示进行加高,也就是网络变宽。
  • One-hot向量到第一次映射的参数非常多,可以把这块参数变的非常小。
【NLP】从BERT到ALBERT

矩阵分解本质上就是一个低秩分解的操作,其通过对Embedding 部分降维来达到降低参数的作用。在最初的BERT中,以Base为例,Embedding层的维度与隐层的维度一样都是768,但是我们知道,对于词的分布式表示,往往并不需要这么高的维度,比如在Word2Vec时代最多采用50或300这样的维度。那么一个很简单的思想就是,通过将Embedding部分分解来达到降低参数量的作用,其以公式表示如下:

:词表大小;:隐层维度;:词向量维度

我们以 BERT-Base 为例,Base中的Hidden size 为768, 词表大小为3w,此时的参数量为:768 * 3w = 23040000。如果将 Embedding 的维度改为 128,那么此时Embedding层的参数量为:128 * 3w + 128 * 768 = 3938304。二者的差为19101696,大约为19M。我们看到,其实Embedding参数量从原来的23M变为了现在的4M,似乎变化特别大,然而当我们放到全局来看的话,BERT-Base的参数量在110M,降低19M也不能产生什么革命性的变化。因此,可以说Embedding层的因式分解其实并不是降低参数量的主要手段。

【NLP】从BERT到ALBERT

3.3 Method 2: Cross-layer parameter sharing

通过论文“Gong L, He D, Li Z, et al. Efficient training of bert by progressively stacking[C]//International Conference on Machine Learning. 2019: 2337-2346”受到启发,每一层的Transformer中Attention关注的都是相似的地方,因此每一层可以做权值共享。

【NLP】从BERT到ALBERT

ALBERT提出的另一个减少参数量的方法就是层之间的参数共享,即多个层使用相同的参数。参数共享有三种方式:只共享feed-forward network的参数、只共享attention的参数、共享全部参数。ALBERT默认是共享全部参数的。可以理解为此时的权值共享并不是说12层transformer_encoder的值是一样的,只是占用了同一变量,所以模型的计算量并没有少,只是参数个数变成了原来的12分之一。

【NLP】从BERT到ALBERT

【NLP】从BERT到ALBERT

【NLP】从BERT到ALBERT

3.4 模型变宽

【NLP】从BERT到ALBERT

【NLP】从BERT到ALBERT

3.5 模型变深

【NLP】从BERT到ALBERT

【NLP】从BERT到ALBERT

3.6 预训练策略 SOP 替代 NSP

创新点:Design better self-supervised learning tasks

这个预训练策略也算是一个创新点,SOP 全称为 Sentence Order Prediction,其用来取代 NSP 在 BERT 中的作用,毕竟一些实验表示NSP非但没有作用,反而会对模型带来一些损害。SOP的方式与NSP相似,其也是判断第二句话是不是第一句话的下一句,但对于负例来说,SOP并不从不相关的句子中生成,而是将原来连续的两句话翻转形成负例。

【NLP】从BERT到ALBERT

【NLP】从BERT到ALBERT

【NLP】从BERT到ALBERT

3.7 移除dropout

创新点:Further increase model capacity by removing dropout

【NLP】从BERT到ALBERT

ALBERT移除dropout对精度提升非常小,但是在训练的时候显著减少了内存的使用。

【NLP】从BERT到ALBERT

3.8 数据量增加

【NLP】从BERT到ALBERT

4. ALBERT总结

ALBERT的提出就是为了给BERT瘦身,让模型更大的BERT有算力能跑起来。作者通过权值共享和矩阵分解减少参数。降低了空间复杂度,但计算量并没有减少,所以在模型进行下游任务和预测的时候并不会更快。所以作者说现在优化BERT的方法也是往时间复杂度的方向优化。

ALBERT的创新点如下图:

【NLP】从BERT到ALBERT

5. Future(current) works

【NLP】从BERT到ALBERT

6. 对NLP领域的展望

【NLP】从BERT到ALBERT

7. Reference

【1】本文是Microstrong观看蓝振忠在B站上讲解的直播课程《从BERT到ALBERT》的学习笔记。直播地址:https://live.bilibili.com/11869202
【2】【自然语言处理】NLP免费直播(贪心学院),https://www.bilibili.com/video/av89296151?p=4
【3】对albert的理解 - xixika的文章 - 知乎 https://zhuanlan.zhihu.com/p/108105658 【4】ALBERT原理与实践,地址:https://mp.weixin.qq.com/s/SCY2J2ZN_j2L0NoQQehd2A

The End


分享到:


相關文章: