引言
深度是神经网络最显著的特征之一。传统观点认为,更深的网络具有更强的表达能力,能够学习更复杂的函数层次结构。在组合泛化任务中,深度究竟扮演什么角色?更深是否总是更好?
NAACL 2024的研究通过控制实验设计,系统地回答了这些问题:更深的Transformer确实组合泛化更好,但收益递减迅速。1
实验设计
控制参数预算
为隔离深度效应,研究者精心设计了三种模型族,在恒定参数预算下比较不同深度的Transformer:
| 模型族 | 参数数量 | 深度变化 | 宽度相应调整 |
|---|---|---|---|
| 小型族 | 41M | 4-12层 | 适应调整 |
| 中型族 | 134M | 4-24层 | 适应调整 |
| 大型族 | 374M | 4-36层 | 适应调整 |
设计原则:总参数数恒定,层数增加时隐藏维度相应减小,以保持可比较的模型大小。
泛化任务
评估任务涵盖多种组合泛化场景:
- 数字操作组合:加法后反转、乘法和减法组合等
- 字符串变换组合:大小写转换与截断组合
- 语义组合:情感词与修饰语的组合理解
核心发现
发现一:更深模型泛化更好
实验一致表明,在微调后,更深的模型在组合泛化任务上表现更好:
泛化准确率 vs 深度(中型族,134M参数)
深度=4: 45.2%
深度=8: 58.7%
深度=12: 64.1%
深度=18: 67.8%
深度=24: 68.3%
解释:更深的网络能够维护更长的计算图,支持多步组合推理。每增加一层,网络就能多”思考”一步组合操作。
发现二:收益递减
然而,增加深度的好处迅速递减:
- 4→8层:+13.5%提升
- 8→12层:+5.4%提升
- 12→18层:+3.7%提升
- 18→24层:+0.5%提升
理论解释:组合泛化所需的计算深度可能是有限的。一旦达到任务所需的”组合深度”,额外的层只是增加冗余。
发现三:语言建模性能也受益于深度
在保持恒定参数预算的前提下,更深模型的语言建模困惑度也更低:
| 模型族 | 4层困惑度 | 最深困惑度 | 改善幅度 |
|---|---|---|---|
| 小型 | 23.4 | 21.8 | -6.8% |
| 中型 | 18.7 | 17.1 | -8.6% |
| 大型 | 15.2 | 13.8 | -9.2% |
关键洞察:深度对语言建模的益处不能完全解释其对组合泛化的益处——即使在相同困惑度下,更深模型仍表现出更好的组合泛化。
深度-宽度权衡分析
参数分配的最优策略
在固定参数预算下,如何最优分配深度和宽度?研究者推导了理论近似:
对于组合泛化任务,最优深度 和宽度 满足:
其中 是总参数数。
权衡曲线
最优深度-宽度曲线
Width ↑
│
16K │ *
│ * *
8K │ * *
│ * *
4K │* *
│ *
2K │ *
│ *
1K │________________*
4 8 12 16 24 36
Depth (L)
实践建议
基于理论分析和实验结果,建议的参数配置:
| 任务复杂度 | 参数量 | 推荐深度 | 推荐宽度 |
|---|---|---|---|
| 简单(单操作) | 50M | 4-6层 | 512 |
| 中等(2-3操作) | 100M | 8-12层 | 768 |
| 复杂(4+操作) | 200M+ | 12-18层 | 1024 |
机制解释
表征分解假说
更深的Transformer为何泛化更好?研究者提出表征分解假说:
每一层网络逐步将输入分解为更抽象的表示:
其中 是第 层的隐藏状态。
组合操作的作用:
- 浅层():提取局部特征,识别原语
- 中层():组合局部特征,形成中间表示
- 深层():整合组合结果,生成最终输出
电路形成假说
另一种解释是:更深的网络形成更复杂的内部电路。
组合泛化需要特定电路的支持:
浅层模型电路:
┌─────────┐
│ 输入层 │
└────┬────┘
│
┌────▼────┐
│ 直接映射 │ ← 简单连接
└────┬────┘
│
┌────▼────┐
│ 输出层 │
└─────────┘
深层模型电路:
┌─────────┐
│ 输入层 │
└────┬────┘
│
┌────▼────┐ ┌─────────┐
│ 原语提取 │────→│ 中间处理 │
└────┬────┘ └────┬────┘
│ │
┌────▼────────────────▼────┐
│ 组合集成 │
└────┬────────────────────┘
│
┌────▼────┐
│ 输出层 │
└─────────┘
与链式思维的关联
计算等价性
有趣的是,深度的作用与链式思维(Chain-of-Thought)推理存在深层联系:
- 深度:模型在单次前向传播中执行多步计算
- 链式思维:模型通过生成多个token逐步计算
计算等价性定理(非形式化):
即 层深度与 步链式思维在计算能力上大致等价。
何时使用深度 vs 链式思维
| 场景 | 推荐策略 | 理由 |
|---|---|---|
| 推理时间受限 | 增加深度 | 单次前向传播完成 |
| 推理时间充裕 | 链式思维 | 更灵活,可检查中间步骤 |
| 中间结果需验证 | 链式思维 | 显式输出便于验证 |
| 延迟敏感应用 | 增加深度 | 减少生成长度 |
实践指南
模型架构选择
根据任务组合复杂度选择架构:
1. 简单组合任务
- 深度:4-6层
- 宽度:根据参数量调整
- 注意:无需过多层,浅层模型可能足够
2. 中等复杂任务
- 深度:8-12层
- 宽度:中等
- 建议:采用标准Transformer配置
3. 复杂组合任务
- 深度:12-18层
- 宽度:较大
- 可选:考虑MoE架构增加有效深度
训练策略
- 课程学习:从简单组合逐渐引入复杂组合
- 深度感知正则化:鼓励不同层学习不同抽象级别
- 层间监督:对中间层添加辅助损失
超参数设置
深度模型的特殊考虑:
# 深度Transformer训练配置示例
config = {
# 深度相关
"num_layers": 12, # 根据任务复杂度选择
"inner_dim": 4 * 768, # FFN内部维度
# 深度缩放
"learning_rate": 1e-4, # 可适当降低
"warmup_steps": 2000, # 更长预热
# 深度正则化
"dropout": 0.1, # 适度dropout
"attention_dropout": 0.1,
# 深度初始化
"initializer_range": 0.02, # 标准初始化
}局限性
延迟代价
深度增加带来的延迟代价必须考虑:
对于延迟敏感应用,18层可能比12层慢50%,但组合泛化提升可能不足5%。
内存消耗
更深模型需要更多显存存储中间激活:
总结
深度与Transformer组合泛化的关系可概括为:
- 确实有益:更深的Transformer组合泛化能力更强
- 收益递减:超过一定深度后,额外层带来的提升急剧减小
- 存在最优:在恒定参数预算下,存在最优深度-宽度配置
- 不可替代:深度提供的组合能力不能完全被宽度或链式思维替代
实践建议:对于大多数应用,12-18层是合理的深度选择;只有在组合复杂度极高时才考虑24+层。
参考
Footnotes
-
The Impact of Depth on Compositional Generalization in Transformer Language Models. NAACL 2024 ↩