深入理解深度学习——BERT派生模型:参数共享ALBERT

news2024/12/27 10:36:50

分类目录:《深入理解深度学习》总目录


预训练语言模型的一个趋势是使用更大的模型配合更多的数据,以达到“大力出奇迹”的效果。随着模型规模的持续增大,单块GPU已经无法容纳整个预训练语言模型。为了解决这个问题,谷歌提出了ALBERT,该模型与BERT几乎没有区别,但其所占用的显存空间可以减少至BERT的十分之一乃至更少,方便了预训练语言模型的训练与部署。为了不大幅降低模型的性能,相比BERT,ALBERT有如下几点改进:

  • Embedding层低秩分解。
  • 跨层参数共享。
  • 使用SOP(Sentence Order Prediction)训练方法代替NSP训练方法

Embedding层低秩分解是为了固定Embedding层的参数规模,使其不随模型的增大而增大。跨层参数共享则让模型只记住一个Transformer Block的参数,就可以还原整个模型,大大减少了参数存储的空间,是ALBERT效果如此突出的最重要原因。NSP训练方法已经被诸多模型证明没有效果,故ALBERT采用了SOP训练方法,并用实验证明其有效。

算法细节

Embedding层低秩分解

设Embedding层的输出向量维度为 E E E,隐层向量(Transformer Block的输入/输出向量)维度为 H H H,模型词表大小为 V V V。在BERT中,一般默认 E E E H H H一致,即Embedding层的输出直接作为Transformer Block层的输入。Embedding层只是一个静态映射,词的向量化过程不涉及上下文信息,因此Embedding层的输出维度 E E E没有必要随着 H H H的增大而增大,保持在一定规模即可,以免造成参数冗余。具体而言,ALBERT在固定 E E E之后,引入了一个变换矩阵,该矩阵的作用就是将维度为E的Embedding层输出向量变换为维度为 H H H的向量,以便输入至Transformer Block模块。在数学上,这个变换可以视为如下因式分解操作:
V × H = V × E × H V\times H=V\times E\times H V×H=V×E×H

从参数量的角度看,参数规模从BERT的 O ( V × H ) O(V\times H) O(V×H)下降到ALBERT的 O ( V × E + E × H ) O(V\times E+E\times H) O(V×E+E×H)。以BERT为例,词表的大小 V V V为30000,隐层向量维数 H H H为768,光是Embedding层就需要2304万个参数,而ALBERT固定Embedding层输出维数 E E E为128,可以计算得到ALBERT的Embedding层只需要约394万个参数,只有BERT的六分之一。若BERT继续横向扩大, H H H变为2048乃至4096,则ALBERT节省参数空间的特性将更明显,可以达到更大的压缩比。

跨层参数共享

ALBERT采用了Transformer Block层参数共享的方法来减少模型的存储参数量。为了寻找最佳的参数共享方案,ALBERT做了大量实验,分别探究了以下几种情况下的模型性能:

  • 所有层的所有参数均共享。
  • 只共享Multi-Head Attention层参数。
  • 只共享Feed Forward层参数。
  • 每M层为一组,组内共享所有参数。

实验结果如下图所示,ALBERT-base在只共享Multi-Head Attention层参数时可以取得最好的效果,几乎没有任何负面影响,甚至在某些任务上还能有增益。可惜的是,Multi-Head Attention层参数并不是ALBERT-base的主要参数部分,即参数存储空间压缩力度不够。所有层的参数都共享和只共享Feed Forward层参数,均有性能上可控范围内的损失,但是压缩力度很强。对于每 M M M层一组的共享方法,实验结果表明, M M M越小,性能越好(当 M M M为1时为不共享),但是参数压缩力度也越小。
ALBERT参数共享策略及实验结果
最终,ALBERT选择了“性价比”最高的共享所有层参数的方案,牺牲了一定的性能,换来了极大的参数存储空间压缩比。

SOP训练方法

SOP与NSP一样,也是一种以句对分类标签为训练目标的训练方法,其与NSP的差别在于负样本的选取。SOP挑选正样本的方式与NSP一样,均为连续的两个句子,但与NSP随机挑选毫无语义关系的句子作为负样本不同,SOP将正样本的两个句子交换位置,作为负样本。为了证明SOP训练方法的有效性,ALBERT也做了一组对比实验,分别探究了只使用MLM训练方法、使用“MLM+NSP”训练方法和使用“MLM+SOP”训练方法的性能对比,如下图所示。实验结果表明,在二分类任务中,额外使用SOP训练方法得到的模型在NSP任务上表现较好(78.9%的准确率),而额外使用NSP训练方法得到的模型在SOP任务上表现得一般(52.0%的准确率)。在各项任务的平均准确率上,使用NSP与不使用NSP训练方法的模型基本一致,而使用SOP训练的模型会略胜一筹。
SOP与NSP实验对比
综上所述,ALBERT对Embedding层和Transformer Block层分别使用了低秩分解和参数共享的方法,大大减少了参数存储空间,使得一个超大模型可以顺利地在单块GPU上训练与部署。值得一提的是,ALBERT减少的是参数的存储空间,并没有减少模型在训练及推理过程中的计算量。在训练过程中,由于需要梯度更新的参数大大减少,训练速度有所加快,但是在下游任务达到同样表现时,ALBERT的计算量远超参数更大的BERT,导致其推理速度更慢。虽然ALBERT没有减少整体的运算量,但是在模型与训练数据规模与日俱增的“军备”竞赛中,参数共享是一个非常值得重视的工作。未来,配合蒸馏等方法,其模型参数压缩比和性能会更好。

参考文献:
[1] Lecun Y, Bengio Y, Hinton G. Deep learning[J]. Nature, 2015
[2] Aston Zhang, Zack C. Lipton, Mu Li, Alex J. Smola. Dive Into Deep Learning[J]. arXiv preprint arXiv:2106.11342, 2021.
[3] 车万翔, 崔一鸣, 郭江. 自然语言处理:基于预训练模型的方法[M]. 电子工业出版社, 2021.
[4] 邵浩, 刘一烽. 预训练语言模型[M]. 电子工业出版社, 2021.
[5] 何晗. 自然语言处理入门[M]. 人民邮电出版社, 2019
[6] Sudharsan Ravichandiran. BERT基础教程:Transformer大模型实战[M]. 人民邮电出版社, 2023
[7] 吴茂贵, 王红星. 深入浅出Embedding:原理解析与应用实战[M]. 机械工业出版社, 2021.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/677573.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

深度学习训练营之文本分类识别

深度学习训练营之文本分类识别 原文链接环境介绍前置工作设置环境设置GPU加载数据 构建词典生成数据批次和迭代器模型定义定义实例 定义训练函数和评估函数模型训练模型评估 原文链接 🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍦 参考…

面具下的flag

打开文件是你的名字动漫的一张图片 用010打开文件,比较可疑的有三处 首先文件头是正确的,只是这边显示的Exif,之前没有特别注意jpg文件有这个头 其次是文件中包含两处flag信息,一个是类似隐藏的文件,一个疑似是第二段f…

Mysql高级查询语句

数据库是用来存储数据,更新,查询数据的工具,而查询数据是一个数据库最为核心的功能,数据库是用来承载信息,而信息是用来分析和查看的。所以掌握更为精细化的查询方式是很有必要的。本文将围绕数据的高级查询语句展开。…

题集-栈和队列的相互转化

这里,队列的性质是先入先出,但是栈的性质是后入先出。两个队列就可以通过相互捯实现数据的后入先出。 typedef int QDataType; //这是一个队列结点的结构 typedef struct QueueNode { struct QueueNode* next; QDataType data; }QNode; //这是…

C++之工厂模式

目录 一、为什么要使用工厂模式 优点 缺点 二、简单工厂(Simple Factory) 好处: 不足: 三、工厂方法: 好处: 不足: 四、抽象工厂(Abstract Factory) 一、为什…

RWA 成下一轮加密大叙事,PoseiSwap 的价值正在凸显

PoseiSwap是Nautilus Chain上的首个DEX,在Nautilus Chain模块化开发的支持下,PoseiSwap能够以更具延展性的方式来构建应用,并能够为交易者提供极佳的交易体验。基于Nautilus Chain支持下的Zk-Rollup方案,PoseiSwap构建了基于零知识…

文心一言 VS 讯飞星火 VS chatgpt (45)-- 算法导论6.1 3题

三、证明:在最大堆的任一子树中,该子树所包含的最大元素在该子树的根结点上。 文心一言: 在最大堆中,根结点是整个堆中最大元素的孩子,因此它包含的最大元素是在该子树的根结点上。 我们可以通过递归的方式证明任意子树中的最大…

C++11 线程库—互斥锁

前言 多线程因其调度的随机性和时间片分配,如果没有限制的访问临界资源,会导致出现无法预测的结果,也无法达到预期。 所以,访问临界区,需要是原子性的,在一个线程完成之前,不能有其他线程访问&…

找bug号召

我的博客是为了完成这个找 bug 号召: https://bbs.csdn.net/topics/614134877。 文章目录 测试场景之三: 选择你的身份 测试场景之三: 选择你的身份 同样在个人中心的最下面,你可以看到身份选择的界面。 注意,你要把鼠…

Python元组、集合、字典(超详细举例、讲解和区分)

总有一天你要一个人在暗夜中,向那座桥走过去 文章目录 一、元组 字符串、元组、列表的总结 二、集合 1.定义空集合 2.创建集合 (1)直接创建 (2)set函数 3.列表、元组、字符串、字典的去重 4.向集合中添加元素…

python---js逆向------再接再励------案例

作者前言 这是我的gitee仓库:https://gitee.com/qin-laoda/python-exercises 有兴趣的小可爱们可以点进去看看, 目录 常见的js加密算法 微信公众号的简单案例 ________________________________ 鉴于有一些小可爱对于js逆向的理解还有一些不解,下面我会再进一步的介绍js…

【计算机视觉 | 目标检测】arxiv 计算机视觉关于目标检测的学术速递(6月 23 日论文合集)

文章目录 一、检测相关(4篇)1.1 Targeted collapse regularized autoencoder for anomaly detection: black hole at the center1.2 RXFOOD: Plug-in RGB-X Fusion for Object of Interest Detection1.3 Toward Automated Detection of Microbleeds with Anatomical Scale Loca…

axios简单使用

axios简单使用 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"widthdevice-wid…

【杂谈】过往时期2-嵌入式求学故事线简忆

前一篇文章 过往时期 - 欢迎来到 Staok - 瞰百易 (gitee.io)。 在我兴趣广泛的过去&#xff0c;关于嵌入式方面的经历啊&#xff0c;讲一条这个的故事线。 小学&#xff0c;电子积木&#xff0c;灯泡&#xff0c;电机&#xff0c;上电发光、风扇旋转&#xff0c;风扇转的快了还…

AnyLogic仿真软件 8.8.2 Crack

AnyLogic仿真软件用于以下行业&#xff1a; 供应链 制造业 运输 仓库运营 铁路物流 矿业 石油和天然气 港口及码头 更多行业 为什么要进行仿真建模&#xff1f; 无风险环境 仿真建模提供了一种安全的方法来测试和探索不同的“假设”场景。在做出现实世界的改变之前做出正确的决…

第10章 隐式转换

第10章 隐式转换 package chapter10object Test01_TestImplicit {def main(args: Array[String]): Unit {val richInt new MyRichInt(12)println(richInt.myMax(15))// 1. 隐式函数implicit def convert(num: Int): MyRichInt new MyRichInt(num)println(12.myMax(15))// 2.…

登录校验原理过程和统一拦截技术(Cookie、Sesstion 和JWT令牌)

一、登录校验 问题&#xff1a;在未登录情况下&#xff0c;我们也可以直接访问部门管理、员工管理等功能。由于浏览器与web服务器中的数据交互是通过HTTP协议的&#xff0c;而HTTP协议是无状态的–即每个页面中的请求和响应都是独立的&#xff0c;没有状态存在。所以我们需要进…

【数据库】关系型数据库与非关系型数据库解析

【数据库】关系型数据库与非关系型数据库解析 文章目录 【数据库】关系型数据库与非关系型数据库解析1. 介绍2. 关系型数据库3. 非关系型数据库4. 区别4.1 数据存储方式不同4.2 扩展方式不同4.3 对事务性的支持不同4.4 总结 参考 1. 介绍 一个通俗易懂的比喻&#xff1a;关系型…

Xpath介绍以及语法

Xpath介绍 XML路径语言&#xff08;XML Path Language&#xff09;&#xff0c;它是一种用来确定XML文档中某部分位置的语言。 XPath基于XML的树状结构&#xff0c;提供在数据结构树中找寻节点的能力。 起初XPath的提出的初衷是将其作为一个通用的、介于XPointer与XSL间的语法模…

第8章 模式匹配

第8章 模式匹配 基本概念和用法 模式守卫 package chapter08object Test01_PatternMatchBase {def main(args: Array[String]): Unit {// 1. 基本定义语法val x 5val y x match {case 1 > "one"case 2 > "two"case 3 > "three"ca…