Transformer 101 个思考问题:
https://gitee.com/oatmeal3000/Transformer101Q
谷歌 Lab 发布的预训练模型 "ALBERT" 全面在 SQuAD 2.0、GLUE、RACE 等任务上超越了 BERT、XLNet、RoBERTa 再次刷新了排行榜。ALBERT 是一种轻量版本的 BERT,利用更好的参数来训练模型,但是效果却反而得到了很大提升!ALBERT的核心思想是采用了两种减少模型参数的方法,比 BERT 占用的内存空间小很多,同时极大提升了训练速度,更重要的是效果上也有很大的提升!
ALBERT 提出了三种优化策略,做到了比 BERT 模型小很多的模型,但效果反而超越了 BERT, XLNet。
- Factorized Embedding Parameterization. 他们做的第一个改进是针对于 Vocabulary Embedding。在 BERT、XLNet 中,词表的 embedding size(E) 和transformer 层的 hidden size(H) 是等同的,所以 E=H。但实际上词库的大小一般都很大,这就导致模型参数个数就会变得很大。为了解决这些问题他们提出了一个基于factorization 的方法。
他们没有直接把 one-hot 映射到 hidden layer, 而是先把 one-hot 映射到低维空间之后,再映射到 hidden layer。这其实类似于做了矩阵的分解。
- Cross-layer parameter sharing. Zhenzhong 博士提出每一层的 layer 可以共享参数,这样一来参数的个数不会以层数的增加而增加。所以最后得出来的模型相比BERT-large小 18 倍以上。
- Inter-sentence coherence loss. 在 BERT 的训练中提出了 next sentence prediction loss, 也就是给定两个 sentence segments, 然后让 BERT 去预测它俩之间的先后顺序,但在 ALBERT 文章里提出这种是有问题的,其实也说明这种训练方式用处不是很大。 所以他们做出了改进,他们使用的是 setence-order prediction loss (SOP),其实是基于主题的关联去预测是否两个句子调换了顺序。
ALBERT 用 70% 的参数量,1.5M steps 时效果明显,就是训练时间比较长。
如果不到 xlarge 版,那么没必要用 ALBERT;
同一速度的 ALBERT 效果比 BERT 差;
同一效果的 ALBERT 速度比 BERT 慢。
BERT 也都有 tiny/small 版了,比如追一科技开源的,基本上一样快而且效果更好,除非你是真的需要体积小这个特点。
那 xlarge 版是什么概念?有些读者还没尝试过 BERT,因为机器跑不起来;多数读者显存有限,只跑过 base 版的 BERT,没跑过或者跑不起 large 版的。而 xlarge 是比 large 更大的,对设备的要求更高,所以对于很多读者来说也就没必要用 ALBERT了。