Navigation

    Gpushare.com

    • Register
    • Login
    • Search
    • Popular
    • Categories
    • Recent
    • Tags

    Salute!ALBERT详解

    语音识别与语义处理领域
    1
    1
    55
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • 155****7220
      155****7220 last edited by

      BERT的问题

      BERT 发布后,在排行榜上产生了许多 NLP 任务的最新成果。但是,模型非常大,导致了一些问题。"ALBERT"论文将这些问题分为两类:

      内存限制

      考虑一个包含一个输入节点,两个隐藏节点和一个输出节点的简单神经网络。即使是这样一个简单的神经网络,由于每个节点有权重和偏差,因此总共有7个参数需要学习

      BERT-large是一个复杂的模型,它有24个隐藏层,在前馈网络和多头注意力机制中有很多节点,总共有3.4亿个参数,如果想要从零开始训练,需要花费大量的计算资源

      模型退化

      最近在NLP领域的研究趋势是使用越来越大的模型,以获得更好的性能。ALBERT的研究表明,无脑堆叠模型参数可能导致效果降低

      在论文中,作者做了一个有趣的实验

      如果更大的模型可以带来更好的性能,为什么不将最大的 BERT 模型(BERT-large)的隐含层单元增加一倍,从 1024 个单元增加到 2048 个单元呢?

      他们称之为"BERT-xlarge"。令人惊讶的是,无论是在语言建模任务还是阅读理解测试(RACE)中,这个更大的模型的表现都不如BERT-large

      从原文给出的图中(下图),我们可以看到性能是如何下降的

      ALBERT

      概述

      ALBERT利用了参数共享、矩阵分解等技术大大减少了模型参数,用SOP(Sentence Order Prediction) Loss取代NSP(Next Sentence Prediction) Loss提升了下游任务的表现。但是ALBERT的层数并未减少,因此推理时间(Inference Time)还是没有得到改进。不过参数减少的确使得训练变快,同时ALBERT可以扩展到比BERT更大的模型(ALBERT-xxlarge),因此能得到更好的表现

      ALBERT的结构和BERT基本一样,采用了Transformer以及GELU激活函数。具体的创新部分有三个:

      1. embedding层参数因式分解
      2. 跨层参数共享
      3. 将NSP任务改为SOP任务

      前两个改进的主要作用是减少参数。第三个改进其实算不上什么创新了,因为之前已经有很多工作发现BERT中NSP任务并没有什么积极的影响

      Factorized Embedding Parameterization

      原始的BERT模型以及各种依据Transformer的预训连语言模型都有一个共同特点,即E=HE=HE=H,其中EEE指的是Embedding Dimension,HHH指的是Hidden Dimension。这就会导致一个问题,当提升Hidden Dimension时,Embedding Dimension也需要提升,最终会导致参数量呈平方级的增加。所以ALBERT的作者将**EEE和HHH进行解绑**,具体的操作就是在Embedding后面加入一个矩阵进行维度变换。EEE的维度是不变的,如果HHH增大了,我们只需要在EEE后面进行一个升维操作即可

      所以,ALBERT不直接将原本的one-hot向量映射到hidden space size of HHH,而是分解成两个矩阵,原本参数数量为V<em>HV<em>HV<em>H,VVV表示的是Vocab Size。分解成两步则减少为V</em>E+E∗HV</em>E+E*HV</em>E+E∗H,当HHH的值很大时,这样的做法能够大幅降低参数数量

      V<em>H=30000</em>768=23,040,000V<em>H=30000</em>768=23,040,000V<em>H=30000</em>768=23,040,000

      V<em>E+E</em>H=30000<em>256+256</em>768=7,876,608V<em>E+E</em>H=30000<em>256+256</em>768=7,876,608V<em>E+E</em>H=30000<em>256+256</em>768=7,876,608

      举个例子,当VVV为30000,HHH为768,EEE为256时,参数量从2300万降低到780万

      通过因式分解Embedding的实验可以看出,对于参数不共享的版本,随着EEE的增大,效果是不断提升的。但是参数共享的版本似乎不是这样,EEE最大并不是效果最好。同时也能发现参数共享对于效果可能带来1-2个点的下降

      Cross-Layer Parameter Sharing

      传统Transformer的每一层参数都是独立的,包括各层的self-attention、全连接。这样就导致层数增加时,参数量也会明显上升。之前有工作试过单独将self-attention或者全连接层进行共享,都取得了一些效果。ALBERT作者尝试将所有层的参数进行共享,相当于只学习第一层的参数,并在剩下的所有层中重用该层的参数,而不是每个层都学习不同的参数

      同时作者通过实验还发现了,使用参数共享可以有效的提升模型稳定性,实验结果如下图

      BERT-base和ALBERT使用相同的层数以及768个隐藏单元,结果BERT-base共有1.1亿个参数,而ALBERT只有3100万个参数。通过实验发现,feed-forward层的参数共享会对精度产生比较大的影响;共享注意力参数的影响是最小的

      Sentence-Order Prediciton (SOP)

      BERT引入了一个叫做下一个句子预测的二分类问题。这是专门为提高使用句子对,如"自然语言推理"的下游任务的性能而创建的。但是像RoBERTa和XLNet这样的论文已经阐明了NSP的无效性,并且发现它对下游任务的影响是不可靠的

      因此,ALBERT提出了另一个任务——句子顺序预测。关键思想是:

      • 从同一个文档中取两个连续的句子作为一个正样本
      • 交换这两个句子的顺序,并使用它作为一个负样本

      SOP提高了下游多种任务(SQUAD,MNLI,SST-2,RACE)的表现

      Adding Data & Remove Dropout

      以上ALBERT都是使用跟BERT相同的训练数据。但是增加训练数据或许可以提升模型的表现,于是ALBERT加上STORIES Dataset后总共训练了157G的数据。另外,训练到1M步的时候,模型还没有对训练集Overfit,所以作者直接把Dropout移除,最终在MLM验证集上的效果得到了大幅提升

      Conclusion

      刚开始看这篇文章是很惊喜的,因为它直接把同等量级的BERT缩小了10+倍,让普通用户有了运行可能。但是仔细看了实验后才发现参数量的减小是需要付出代价的

      需要注意的是,Speedup是训练时间而不是Inference时间。Inference时间并未得到改善,因为即使是使用了共享参数机制,还是得跑完12层Encoder,故Inference时间跟BERT是差不多的

      实验用的参数如下

      可以得出的结论是:

      1. 在相同的训练时间下,ALBERT得到的效果确实比BERT好
      2. 在相同的Inference时间下,ALBERT base和large的效果都没有BERT好,而且差了2-3个点,作者在最后也提到了会继续寻找提高速度的方法(Sparse attention和Block attention)

      另外,结合Universal Transformer可以想到的是,在训练和Inference阶段可以动态地调整Transformer层数(告别12、24、48的配置)。同时可以想办法去避免纯参数共享带来的效果下降,毕竟Transformer中越深层学到的任务相关信息越多,可以改进Transformer模块,加入记忆单元、每层个性化的Embedding

      Reference

      • Visual Paper Summary: ALBERT (A Lite BERT)
      • Meet ALBERT
      • 论文整理 ALBERT
      • ALBERT论文解读
      • ALBERT粗读
      1 Reply Last reply Reply Quote 1
      • First post
        Last post