16

从BERT到ALBERT

 4 years ago
source link: http://mp.weixin.qq.com/s?__biz=MjM5ODkzMzMwMQ%3D%3D&%3Bmid=2650412703&%3Bidx=3&%3Bsn=77b65cf531303b0a4f9b314cfa5402f2
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

fieYjqq.jpg!web

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.

目录:

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

  2. BERT模型的回顾

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

  4. ALBERT总结

  5. Future(current) works

  6. 对NLP领域的展望

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

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

r6nmA3e.jpg!web

这两年我们在自然语言处理方面有很大的进展,突破性进展主要来源于“全网络预训练的算法”,主要包括上图中的三篇论文(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%。

uamuamq.jpg!web

2. BERT模型的回顾

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

yiuaA3V.jpg!web

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

yuquqqj.jpg!web

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

q6fURvM.jpg!web

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

M7Fr2aY.jpg!web

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

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

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

M3aErqQ.jpg!web

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

3.2 Method 1: factorized embedding parametrization

mA77Fvy.jpg!web

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

JBBzaaJ.jpg!web

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

  • 词的Context independent表示与Context dependent表示之间解锁,可以自由的对Context dependent表示进行加高,也就是网络变宽。

  • One-hot向量到第一次映射的参数非常多,可以把这块参数变的非常小。

N7j6fi3.jpg!web

矩阵分解本质上就是一个低秩分解的操作,其通过对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层的因式分解其实并不是降低参数量的主要手段。

3QnqErB.jpg!web

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关注的都是相似的地方,因此每一层可以做权值共享。

2UBZFrF.jpg!web

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

zU3meym.jpg!web

zeaeEfJ.jpg!web

ZNVBVrm.jpg!web

3.4 模型变宽

vmeMbiu.jpg!web

FRRjaqZ.jpg!web

3.5 模型变深

nuemErF.jpg!web

Yrieaez.jpg!web

3.6 预训练策略 SOP 替代 NSP

创新点:Design better self-supervised learning tasks

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

m2QzIji.jpg!web

VVny2y7.jpg!web

VnU7Vze.jpg!web

3.7 移除dropout

创新点:Further increase model capacity by removing dropout

YZJvInR.jpg!web

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

AVJVJna.jpg!web

3.8 数据量增加

7zuyUrR.jpg!web

4. ALBERT总结

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

ALBERT的创新点如下图:

MNFVRn7.jpg!web

5. Future(current) works

fIFRVvA.jpg!web

6. 对NLP领域的展望

3AveiuR.jpg!web

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

推荐阅读

AINLP年度阅读收藏清单

自动作诗机&藏头诗生成器:五言、七言、绝句、律诗全了

逆向而行,中文轻量级预训练模型的探索之路

From Word Embeddings To Document Distances 阅读笔记

模型压缩实践系列之——bert-of-theseus,一个非常亲民的bert压缩方法

这门斯坦福大学自然语言处理经典入门课,我放到B站了

可解释性论文阅读笔记1-Tree Regularization

关于AINLP

AINLP 是一个有趣有AI的自然语言处理社区,专注于 AI、NLP、机器学习、深度学习、推荐算法等相关技术的分享,主题包括文本摘要、智能问答、聊天机器人、机器翻译、自动生成、知识图谱、预训练模型、推荐系统、计算广告、招聘信息、求职经验分享等,欢迎关注!加技术交流群请添加AINLPer(id:ainlper),备注工作/研究方向+加群目的。

qIR3Abr.jpg!web


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK