前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >谷歌丰田联合成果ALBERT了解一下:新轻量版BERT,参数小18倍,性能依旧SOTA

谷歌丰田联合成果ALBERT了解一下:新轻量版BERT,参数小18倍,性能依旧SOTA

作者头像
AI科技大本营
发布2019-10-21 15:58:49
5720
发布2019-10-21 15:58:49
举报
文章被收录于专栏:AI科技大本营的专栏
作者 | Less Wright

编译 | ronghuaiyang

来源 | AI公园(ID:AI_Paradise)

【导读】这是来自Google和Toyota的新NLP模型,超越Bert,参数小了18倍。

你以前的NLP模型参数效率低下,而且有些过时。祝你有美好的一天。

谷歌Research和丰田技术研究所(Toyota Technological Institute)联合发布了一篇新论文,向全世界介绍了BERT的继任者——ALBERT。(“ALBERT:A Lite BERT for Self-supervised Learning of Language Representations”)。

ALBERT在SQuAD和RACE测试上创造了新的SOTA,并在比赛中以+14.5%的优势击败BERT。

ALBERT的最终结果(为GLUE,RACE,SQuAD创造了新的SOTA)方面给人留下了深刻的印象,但是…真正令人惊讶的是模型/参数大小的显著减少。

两个关键架构的更改和一个训练更改的组合使ALBERT的表现都更好,并极大地减少了模型的大小。看看下面的模型大小的比较——BERT x-large有12.7亿个参数,而ALBERT x-large有5900万个参数!

同样大小的网络(隐藏/层),BERT的参数是12.7亿,而ALBERT的参数是59M…缩小了~21.5x。

在这篇文章中有很多内容需要解释,我将尝试深入研究下面的所有重点。

对于NLP来说,更大的模型总是更好吗?不…

让我们从NLP的一个要点开始——过去的一年,NLP已经取得了进展,通过扩展transformer类型的模型,每一个较大的模型,通过简单地构建一个越来越大的预训练模型,逐步提高最终任务的准确性。在原始的BERT论文中,他们发现更大的隐藏尺寸、更多的隐藏层和更多的注意力头导致了渐进的改进,并测试了多达1024大小的隐藏层。

迄今为止最大的NLP模型是NVIDIA最近发布的Megatron,这是一个巨大的80亿参数模型,超过BERT的24倍,接近OpenAI的GPT-2的6倍。Megatron 在512个GPU的环境下接受了9天的训练。

然而,存在一个临界点或饱和点,即越大并不总是越好,ALBERT的作者表明,他们最大的模型BERT X-Large,隐藏层大小为2048以及4倍于原BERT large的参数,实际上性能下降了近20%。

越大并不总是越好——将隐藏层大小加倍,参数大小增加4倍,但是BERT在RACE数据集上的准确性降低了。

这类似于计算机视觉层深度的峰值效应。对计算机视觉来说,按比例增加层的深度可以提高到一定程度,然后下降。例如,ResNet -1000并不比ResNet152好,即使它有6.5倍数量的层。换句话说,存在一个饱和点,在这个点上,训练的复杂性压倒并降低了来自额外网络能力的收益。

因此,考虑到这一点,ALBERT的创造者开始改进架构和训练方法,以得到更好的结果,而不是仅仅构建一个“更大的BERT”。

什么是ALBERT?

ALBERT的核心架构类似于bert,因为它使用了transformer编码器架构,同时还有GELU激活。在论文中,他们也使用了与原BERT相同的30K的词汇量。(V = 30000)。然而,ALBERT做了三个重要的改变:

架构改进,更有效地使用参数:

1 — 嵌入分解参数化

ALBERT的作者注意到,对于BERT、XLNet和RoBERTa,WordPiece Embedding的大小(E)直接与隐含层大小(H)联系在一起。

然而,ALBERT的作者指出,WordPiece Embedding是用来学习上下文独立表示的。隐含层嵌入是为了学习上下文依赖表示的。

BERT的能力很大程度上依赖于通过隐藏层学习上下文相关的表示。如果你将H和E结合起来,并且NLP需要大V (vocab),那么你的嵌入矩阵E,实际上是V*E,必须与H(隐藏层)一起扩展,因此你最终得到的模型可以有数十亿个参数,但其中大多数在训练中很少更新。

因此,绑定在不同目的下工作的两个项目意味着低效的参数。

因此,将两者分开,可以更有效地使用参数,因此H(上下文相关)应该总是大于E(上下文无关)。

为此,ALBERT将嵌入参数分成两个更小的矩阵。因此,不是将独热向量直接投射到H中,而是将独热向量投射到一个更小、更低维的矩阵E中……然后投影到H隐藏空间。

因此,参数由大的O (V*H)简化为小的O (V*E + E*H)。

2 — 跨层参数共享

ALBERT通过跨层共享所有参数进一步提高了参数效率。这意味着前馈网络参数和注意力参数都是共享的。

因此,与BERT相比,ALBERT从一层到另一层的转换更平滑,作者注意到这种权值共享有助于稳定网络参数。

训练的变换 — SOP,句子顺序预测:

ALBERT确实使用了MLM(掩码语言模型),就像BERT一样,使用最多3个单词掩码(n-gram max 3)。

然而,BERT除了MLM,还使用了NSP,即下一句话预测。ALBERT开发了自己的训练方法,称为SOP。

为什么不用NSP?值得注意的是,RoBERTa的作者指出,原BERT中使用的下一个句子预测(NSP)损失不是非常有效,所以就不用了。ALBERT作者从理论上解释了为什么NSP不是那么有效,但是他们利用NSP开发了SOP -句子顺序预测。

ALBERT认为,NSP(下一个句子预测)将话题预测和连贯预测混为一谈。作为参考,NSP使用了两个句子——正样本匹配是第二个句子来自同一个文档,负样本匹配是第二个句子来自另一个文档。

相比之下,ALBERT的作者认为句子间的连贯是真正需要关注的任务/损失,而不是主题预测,因此SOP是这样做的:

使用了两个句子,都来自同一个文档。正样本测试用例是这两句话的顺序是正确的。负样本是两个句子的顺序颠倒。

这避免了主题预测的问题,并帮助ALBERT学习更细粒度的语篇或句子间衔接。

当然,结果不言自明。

我们如何把ALBERT放大呢?

根据前面提到的关于扩展大小导致收益减小的注意事项,ALBERT的作者们进行了他们自己的ALBERT扩展测试,发现了层深度和宽度(隐藏大小)的峰值点。因此,作者推荐12层模型用于ALBERT风格的交叉参数共享。

ALBERT发现删除dropout,增加数据可以提高性能:

这个非常符合计算机视觉已经发现的结论,ALBERT的作者报告说,不使用dropout得到了性能提升,当然,使用了更多的数据进行了训练。

总结

ALBERT在几个benchmarks上刷新了SOTA。这是一个惊人的突破,它建立在一年前BERT所做的伟大工作上,并在多个方面推进了NLP。尤其令人振奋的是,人工智能的未来不仅基于添加更多的GPU和简单地构建更大的训练模型,而且还将从改进的架构和参数效率方面取得进展。

作者指出,ALBERT未来的工作是提高其计算效率,可能是通过分散注意力或分块注意力。因此,希望在未来更多的来自ALBERT的进展 !

Github和ALBERT的官方来源?我找不到ALBERT的官方版本发布到github,或者通过开源方式发布,这篇文章也没有提到。希望在不久的将来能够实现。

非官方的TensorFlow版本:https://github.com/brightmart/albert_zh?source=post_page-----df8f7b58fa28----------------------

论文链接:https://arxiv.org/abs/1909.11942v1

英文原文:

https://medium.com/@lessw/meet-albert-a-new-lite-bert-from-google-toyota-with-state-of-the-art-nlp-performance-and-18x-df8f7b58fa28

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-10-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 AI科技大本营 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
NLP 服务
NLP 服务(Natural Language Process,NLP)深度整合了腾讯内部的 NLP 技术,提供多项智能文本处理和文本生成能力,包括词法分析、相似词召回、词相似度、句子相似度、文本润色、句子纠错、文本补全、句子生成等。满足各行业的文本智能需求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档