引言

深度是神经网络最显著的特征之一。传统观点认为,更深的网络具有更强的表达能力,能够学习更复杂的函数层次结构。在组合泛化任务中,深度究竟扮演什么角色?更深是否总是更好?

NAACL 2024的研究通过控制实验设计,系统地回答了这些问题:更深的Transformer确实组合泛化更好,但收益递减迅速1

实验设计

控制参数预算

为隔离深度效应,研究者精心设计了三种模型族,在恒定参数预算下比较不同深度的Transformer:

模型族参数数量深度变化宽度相应调整
小型族41M4-12层适应调整
中型族134M4-24层适应调整
大型族374M4-36层适应调整

设计原则:总参数数恒定,层数增加时隐藏维度相应减小,以保持可比较的模型大小。

泛化任务

评估任务涵盖多种组合泛化场景:

  1. 数字操作组合:加法后反转、乘法和减法组合等
  2. 字符串变换组合:大小写转换与截断组合
  3. 语义组合:情感词与修饰语的组合理解

核心发现

发现一:更深模型泛化更好

实验一致表明,在微调后,更深的模型在组合泛化任务上表现更好

泛化准确率 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.421.8-6.8%
中型18.717.1-8.6%
大型15.213.8-9.2%

关键洞察:深度对语言建模的益处不能完全解释其对组合泛化的益处——即使在相同困惑度下,更深模型仍表现出更好的组合泛化。

深度-宽度权衡分析

参数分配的最优策略

在固定参数预算下,如何最优分配深度和宽度?研究者推导了理论近似:

对于组合泛化任务,最优深度 和宽度 满足:

其中 是总参数数。

权衡曲线

            最优深度-宽度曲线
            
Width ↑
      │
16K   │    *
      │   * *
 8K   │  *   *
      │ *     *
 4K   │*       *
      │           *
 2K   │             *
      │                *
  1K  │________________*
      4    8    12    16   24   36
                Depth (L)

实践建议

基于理论分析和实验结果,建议的参数配置:

任务复杂度参数量推荐深度推荐宽度
简单(单操作)50M4-6层512
中等(2-3操作)100M8-12层768
复杂(4+操作)200M+12-18层1024

机制解释

表征分解假说

更深的Transformer为何泛化更好?研究者提出表征分解假说

每一层网络逐步将输入分解为更抽象的表示:

其中 是第 层的隐藏状态。

组合操作的作用

  1. 浅层):提取局部特征,识别原语
  2. 中层):组合局部特征,形成中间表示
  3. 深层):整合组合结果,生成最终输出

电路形成假说

另一种解释是:更深的网络形成更复杂的内部电路

组合泛化需要特定电路的支持:

浅层模型电路:
┌─────────┐
│ 输入层 │
└────┬────┘
     │
┌────▼────┐
│ 直接映射 │  ← 简单连接
└────┬────┘
     │
┌────▼────┐
│ 输出层  │
└─────────┘

深层模型电路:
┌─────────┐
│ 输入层  │
└────┬────┘
     │
┌────▼────┐     ┌─────────┐
│ 原语提取 │────→│ 中间处理 │
└────┬────┘     └────┬────┘
     │                │
┌────▼────────────────▼────┐
│      组合集成           │
└────┬────────────────────┘
     │
┌────▼────┐
│ 输出层  │
└─────────┘

与链式思维的关联

计算等价性

有趣的是,深度的作用与链式思维(Chain-of-Thought)推理存在深层联系:

  • 深度:模型在单次前向传播中执行多步计算
  • 链式思维:模型通过生成多个token逐步计算

计算等价性定理(非形式化):

层深度与 步链式思维在计算能力上大致等价。

何时使用深度 vs 链式思维

场景推荐策略理由
推理时间受限增加深度单次前向传播完成
推理时间充裕链式思维更灵活,可检查中间步骤
中间结果需验证链式思维显式输出便于验证
延迟敏感应用增加深度减少生成长度

实践指南

模型架构选择

根据任务组合复杂度选择架构:

1. 简单组合任务

  • 深度:4-6层
  • 宽度:根据参数量调整
  • 注意:无需过多层,浅层模型可能足够

2. 中等复杂任务

  • 深度:8-12层
  • 宽度:中等
  • 建议:采用标准Transformer配置

3. 复杂组合任务

  • 深度:12-18层
  • 宽度:较大
  • 可选:考虑MoE架构增加有效深度

训练策略

  1. 课程学习:从简单组合逐渐引入复杂组合
  2. 深度感知正则化:鼓励不同层学习不同抽象级别
  3. 层间监督:对中间层添加辅助损失

超参数设置

深度模型的特殊考虑:

# 深度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组合泛化的关系可概括为:

  1. 确实有益:更深的Transformer组合泛化能力更强
  2. 收益递减:超过一定深度后,额外层带来的提升急剧减小
  3. 存在最优:在恒定参数预算下,存在最优深度-宽度配置
  4. 不可替代:深度提供的组合能力不能完全被宽度或链式思维替代

实践建议:对于大多数应用,12-18层是合理的深度选择;只有在组合复杂度极高时才考虑24+层。

参考

Footnotes

  1. The Impact of Depth on Compositional Generalization in Transformer Language Models. NAACL 2024