| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> [论文笔记]ALBERT: A LITE BERT FOR SELF-SUPERVISED LEARNING OF LANGUAGE REPRESENTATIONS -> 正文阅读 |
|
[人工智能][论文笔记]ALBERT: A LITE BERT FOR SELF-SUPERVISED LEARNING OF LANGUAGE REPRESENTATIONS |
引言本文是ALBERT1的论文笔记。 ALBERT(A Lite BERT)可以看成是BERT的精简版,现在像GPT-3这种模型大到无法忍受。 ALBERT提供了另一种思路,通过parameter-reduction(参数精简)技术降低内存消耗同时增加BERT的训练速度。 核心思想作者设计了精简版(Lite)的BERT架构——ALBERT,和传统的BERT架构相比参数量有显著的减少。 ALBERT合并了两种精简参数的技术消除扩展预训练模型的主要障碍。 第一种是嵌入参数因式分解(factorized embedding parameterization)。通过分解大的词表嵌入矩阵为两个小的矩阵,作者将隐藏层的大小与词表嵌入(vocabluary embedding)的大小分离。这样可以很容易地增加隐藏层大小而不会显著地增加词表嵌入的参数大小。 第二种是跨层参数共享(cross-layer parameter sharing)。这种技术防止参数量随着网络深度的增加而增大。 这两种技术都显著地减少了BERT的参数量而不影响性能,从而提升了参数效率。ALBERT的配置类似BERT-large,但是参数量少了18倍,同时训练速度快了1.7倍。 参数精简技术也可以看出某种形式的正则化,可以使训练更加稳定而且使模型泛化能力更强。 为了进一步提升ALBERT的表现,作者也引入了一种自监督损失,用于句子顺序预测(SOP)任务。SOP主要侧重句子间的连贯性,用于解决原始BERT提出的下一句预测损失无效的问题。 基于这些技术,作者可以扩展到更大的ALBERT配置,但仍然比BERT-large的参数量要少,同时可以达到更好的表现。 ALBERT剖析模型架构选择ALBERT的主体架构类似于BERT,都选择了transformer编码器和GELU非线性函数。作者沿用BERT的标记约定,词表嵌入大小记为 E E E,编码器层数记为 L L L,隐藏大小为 H H H。同时作者也将前馈神经网络的隐藏层大小设为 4 H 4H 4H,注意力头数为 H / 64 H/64 H/64。 ALBERT对BERT的设计选择做出了三个主要贡献。 嵌入参数因式分解(factorized embedding parameterization) 在BERT中,以及后续的建模优化方法像XLNet2和RoBERTa3,WordPiece嵌入大小 E E E都是与隐藏层大小 H H H紧密联系的,比如, E ≡ H E\equiv H E≡H。这种选择对建模和实用角度来说都是次优的,原因如下。 从建模角度,WordPiece嵌入用于学习上下文独立的表示,而隐藏层嵌入用于学习上线文相关的表示。正如上下文长度的实验所表明的(Liu等人,2019),类BERT表示的能力来自于使用上下文为学习此类上下文相关表示提供信息。因此,把WordPiece嵌入大小 E E E从隐藏层大小 H H H分离可以让作者可以根据模型的需要( H ? E H \gg E H?E)更有效地使用整体模型的参数。 从实用角度,自然语言处理的词表大小 V V V通过都较大。如果 E ≡ H E \equiv H E≡H,那么增加 H H H也会增加嵌入矩阵大小,该矩阵大小为 V × E V \times E V×E。这很容易导致模型的参数量变成十亿级别,而大多数参数在训练期间很少(稀疏性)更新。 因此,对于ALBERT作者使用嵌入(矩阵)参数的因式分解,把它们变成两个小矩阵。作者首先把one-hot向量投影到一个低维大小为 E E E的嵌入空间,然后投影到隐藏空间,而不是直接把它们投影到大小为 H H H的隐藏空间。通过使用这种分解技术,作者把嵌入参数从 O ( V × H ) O(V \times H) O(V×H)减少到 O ( V × E + E × H ) O(V \times E + E \times H) O(V×E+E×H)。这在 H ? E H \gg E H?E是非常重要。作者选择对所有word piece使用相同的 E E E,因为与全词嵌入相比,它们在文档中的分布要均匀得多。 跨层参数共享(Cross-layer parameter sharing) 对于ALBERT,作者提出的跨层参数共享作为另一种提高参数效率的方法。有很多种方法可以共享参数。如可以只共享不同层之间前馈神经网络(FNN)的参数,或只共享注意力层的参数。ALBERT的默认选择是共享不同层之间的全部参数。 如下图所示,实验表示加入参数共享后,每一层的输入嵌入和输出嵌入的L2距离和余弦相似度都比BERT平滑得多,这证明参数共享能使模型参数更加稳定。 图1:BERT-large和ALBERT-large每层的输入和输出嵌入的L2距离和余弦相似度 实验中使用了BERT-large和ALBERT-large配置。 表1:主要的BERT和ALBERT模型配置 句间连贯性损失(Inter-sentence coherence loss) 除了屏蔽语言建模(MLM)损失之外,BERT使用了另一种叫作下一句预测(NSP)损失。NSP目标被设计来提升像自然语言推理等下游任务的表现,需要对句子之间的关系进行推理。然而,后续的研究发现NSP的影响不可靠并决定移除它。 作者推测 NSP 效率低下的主要原因是它与MLM相比来说太简单了。按照公式,NSP 将主题(topic)预测和连贯性预测合并到一个任务中。 然而,与连贯性预测相比,主题预测更容易学习,并且与使用 MLM 损失学习的内容重叠更多。 作者认为句间关系建模是语言理解的一个重要方面,但作者提出了一种主要基于连贯性的损失。即句子顺序预测损失(SOP loss),它避免了主题预测同时关注于为句间连贯性建模。SOP loss使用与 BERT 相同的方法(来自同一文档的两个连续段)采样正例,对于反例,使用相同的两个连续段但它们的顺序交换。这迫使模型学习关于话语级别连贯属性的更细粒度的区别。 参考 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/27 14:42:55- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |