025|ALBERT:共享参数可以减少存储,但不会取消重复计算
论文:Zhenzhong Lan 等,ALBERT: A Lite BERT for Self-supervised Learning of Language Representations,2019 年预印本、ICLR 2020。原文 · PDF。本篇把参数压缩、计算和 SOP 目标分别讨论,避免把“更少参数”直接翻译为“同倍数更快”。
先接住前作的问题
BERT把词嵌入宽度与隐藏宽度绑定,并为每层保留独立参数,扩大模型时存储随之增加。本篇直接改造这一参数组织,并另外改变句段监督。Adapters减少的是每任务增量,与本篇基座参数压缩是平行资源问题。
五个前置概念
五个前置概念是矩阵分解、权重共享、重复计算、SOP 与资源口径。理解这些,才能判断“轻量”到底轻在何处,并避免被一个参数数字误导。
一、问题设定:词表、隐藏宽度与层数是否必须一起增加权重存储
词表大小为 、隐藏宽度为 时,直接嵌入占 参数;静态词项输入与上下文化计算却没有必然同维要求。将它分成 与 ,在 时可节约存储;另一条问题是多层是否一定要各存一份权重。
另一方面,堆叠 层独立 Transformer 使参数随层数增长。
二、推导嵌入分解、跨层复用与句序监督
嵌入可以写为:
它把原本 参数变为约 。跨层共享则写成 ,相同 多次使用。共享注意力、共享前馈或全部共享是不同配置,论文分别分析,而非只有一种开关。
SOP 的正例来自同文档连续句段,负例将同样两段交换顺序。与随机取另一文档作为负例相比,主题更接近,模型较难只靠主题是否相同完成判断。它试图强调连贯顺序,但仍可能利用局部格式捷径,不能直接等同于篇章推理测验。
训练继续使用 MLM,并加入 SOP 二分类。这里同时有参数化和目标改变,因此最终成绩不能全归因于共享。必须阅读分解消融、共享消融与 SOP 消融各自的结果。
参数复用不等于只执行一次
嵌入分解把 改为 再乘 ,其中V是词表大小、H为隐藏宽度、E为较小的嵌入宽度。跨层共享则把 改为反复用同一个 ;这里 是层号, 是一层变换, 与 分别表示独立和共享参数;输入状态每次不同,所以深度仍存在。梯度在各次使用处汇入同一份参数,激活和顺序计算次数不会随参数副本一起消失。
教学算例。 时,嵌入参数从23,040,000降到 。但若共享变换是 ,两次执行得到 ,显然不是执行一次的 。这个标量例也提醒,权重共享不保证迭代收敛到固定点。
构造 。连续应用三次得到 ,一般不等于一次应用。参数只存一份,但计算进行了三次,状态在每次迭代改变。
重复使用的矩阵怎样收到多处梯度
设两个深度位置共享同一个矩阵W,总损失对W的梯度是两个使用节点回传贡献的和。若各自贡献为2和−0.5,更新依据1.5,而不是挑最后一次的−0.5。共享省的是独立参数及其状态,前向仍执行两个位置;把循环只跑一次会改变函数,不能称作参数共享优化。
教法联系:Lilian Weng的How to Train Really Large Models on Many GPUs?。算例为本文自构。
三、分别记录共享范围、执行次数和MLM/SOP训练
构建低维词嵌入与到隐藏维的投影
按选定策略让多个Transformer层复用参数
构造连续句段对:保留顺序为正例、交换顺序为负例
按MLM协议破坏选中token
多次应用共享层,计算MLM与SOP损失
预训练后按下游任务微调
分别统计独立参数、实际FLOPs与任务成绩
四、把存储缩减、共享损失与句序收益分开读
层共享没有减少层应用次数,因此不能将参数缩减比例直接当作计算缩减比例。
参数表说明存储,共享消融说明代价,SOP表才检验句序任务;这些证据不能互相替代。
| 项目 | 原文范围 |
|---|---|
| 规模 | BASE、LARGE、XLARGE、XXLARGE 等,不同隐藏宽度 |
| 参数比较 | 对应 BERT 与 ALBERT 配置,明确嵌入维与共享策略 |
| 任务 | SQuAD、MNLI、SST、RACE、GLUE 等 |
| 消融 | 嵌入尺寸、共享范围、句段目标与训练时长 |
| 指标 | 任务分数与速度,参数数量单独报告 |
| 预算 | 更宽配置实际计算更大;1M与1.5M步等需区别 |
证据一,表1 与方法章节。ALBERT-LARGE 约 18M 参数,对应表列 BERT-LARGE 约 334M。它支持显著权重存储缩减,但不意味着其每层矩阵计算按同样比例减少。
证据二,第 4.5 节表4。全部共享在受控条件下可能损失任务分数,显示压缩有代价。最终大模型通过其他配置获得强结果,不应抹去这个消融中的真实下降。
证据三,第 4.6 节表5 的 SOP/NSP 分析。交换句序目标检验连贯性监督,相应任务收益支持设计动机,但主结果还包含宽度、训练和其他配方。单模型、集成与不同步数必须分开读;章节和表号对应原文修订版。
读表5先分清训练行与评测列。 None、NSP、SOP是使用哪一种句间预训练任务;左侧MLM/NSP/SOP列是内在任务表现,右侧才是下游任务。NSP行能把NSP本身做好,却没有同样提高SOP;SOP行的下游平均更高,也并非在每个任务列都最高。训练代理任务做得好,不自动等于迁移更好。

参数少与更快有时同向,有时相反:较小嵌入节省部分运算,而更宽隐藏层可能增加主要计算。系统是否受内存或算力限制,也会改变实际速度。评价时应使用明确硬件与吞吐,不能仅从模型文件大小推断。
SOP 教学例子是“先烧水,再泡茶”与交换顺序。两段词汇和主题相同,单靠判断是否都谈茶不够。但如果标点或首句惯用词泄露顺序,模型仍可能走捷径,所以更强验证需要控制这些线索。
五、参数少仍可能更宽、更慢或表达受限
如果共享变换在某些输入上逐渐收缩到相似状态,过深重复可能损失区分;若形成有用迭代,可能逐步精炼表示。是否发生这类行为需要隐藏状态和任务实验,不能因共享就断言模型等价于循环网络的所有性质。
限制是共享表达约束、重复计算、目标捷径以及超参数和训练预算。它没有证明压缩后所有能力无损,也没有给任意任务提供最佳宽深比。
修订版表6还给出墙钟条件的例子:BERT-large训练400k步约34小时、汇总分87.2,ALBERT-xxlarge训练125k步约32小时、88.7。它显示同时间比较与同参数比较会得出不同观察;这些数值只适用于该配置和硬件,不能转成普遍速度倍率。
六、把本篇机制再推进一步
1. 把共享层执行十二次改成执行一次再复制输出,是否保留ALBERT?
参考答案:没有。每次执行都以前一次状态为输入,非线性复合一般不同于一次输出的复制;共享只减少权重副本。还会改变梯度汇入同一参数的次数与路径,因此计算深度和参数存储必须分别记录。
七、区分基座压缩、任务增量与条件计算
参数共享减少副本但未消除训练状态与计算。ZeRO从状态所有权处理显存,LoRA从任务增量处理适配;它们可组合,却没有把重复层执行免费省掉。
自测与参考答案
1. 共享12层权重,是否意味着只执行一次Transformer层?
不是。相同参数被应用12次,各次输入状态不同,计算仍重复。存储减少与运算次数减少不是同一件事。
2. SOP 为什么比随机文档配对更难只靠主题完成?
正负例使用相同连续句段,仅交换顺序,主题基本相同。因此需要利用顺序或连贯线索。但局部格式仍可能提供捷径,不能自动保证深层篇章理解。
3. 最终模型更强,是否证明全部共享没有损失?
不能。最终结果还可能扩大宽度和训练预算;受控共享消融可以显示下降。应分别报告压缩代价与重新分配资源后的系统收益。