CNN 的两个技术: UGC与BatchNorm

Unstructured Group Convolution

1. 普通 Group Convolution

Group Convolution(分组卷积)最早是 AlexNet(2012)用来解决 GPU 显存不足问题的。

  • 做法:把输入通道分成几个组,每个组只跟自己的卷积核组连接计算。
  • 好处:减少计算量和参数量(比如输入 64 个通道,分成 4 组,每组只卷 16 个通道,计算量大幅下降)。
  • 结构特征:分组是规则且固定的,比如通道 1–16 是第 1 组,17–32 是第 2 组……

2. “Unstructured”

unstructured group convolution 里:

  • 分组不是规则划分(非连续、非均匀),通道之间的连接模式可能是任意的。
  • 不同通道可能来自不同物理/语义特征,分组关系可以由算法、稀疏化、剪枝等方法生成。
  • 分组结构不一定均衡:有的组可能通道多、有的少,甚至可能是高度稀疏的连接图。

可以想象成:

  • 普通 group conv 像一排整齐的座位,前排是第 1 组,后排是第 2 组;
  • unstructured group conv 则是“随便坐”,谁和谁一组没有固定模式,还可能有人落单。

3. 为什么会有这种结构

unstructured group convolution 往往是自动化网络压缩 / 稀疏化的结果:

  • 剪枝后,一些卷积核和输入通道的连接被删除,剩下的连接形成了“非规则”分组。
  • 或者通过 NAS(神经网络架构搜索)得到的连接模式,本身就不均匀。

4. Load Balance 问题

因为分组不规则,可能出现:

  • 某些组计算量大,某些组计算量小 → 在并行计算(GPU、TPU)时导致计算资源利用率低。
  • GPU kernel launch 需要针对不同组做不同处理 → 增加调度开销。

文章在研究 unstructured group convolution 的 load balance,是在探索:

  • 如何重新分配通道 / 核参数,让各组负载更均衡;
  • 或者如何设计计算调度策略,让 GPU 跑得更高效。

Batch Normalization

Batch Normalization(BN)在 AI(尤其是深度学习)里重要,主要是因为它同时解决了训练稳定性训练速度两个痛点,并且带来了副作用式的正则化效果。

我可以从 原理、好处、为什么重要 三个维度帮你捋一遍:

1. 原理

BN 的核心操作就是:
对每个 mini-batch 内的激活值(通常是某一层的输出)做标准化,让它们的均值为 0、方差为 1,然后再引入可学习的缩放参数 γ 和平移参数 β:

$$x^=x−μbatchσbatch2+ϵ\hat{x} = \frac{x - \mu_{\text{batch}}}{\sqrt{\sigma^2_{\text{batch}} + \epsilon}} y=γx^+βy = \gamma \hat{x} + \beta$$

其中:

  • $$μbatch\mu{\text{batch}}、σbatch2\sigma^2{\text{batch}} $$来自当前 batch
  • γ、β 学出来,让网络有能力恢复原本的分布(防止过强约束)

2. 好处

BN 的价值不是一个单点,而是多个叠加效果:

(1) 缓解内部协变量偏移(Internal Covariate Shift)

  • 在深层网络里,上层参数更新会不断改变下层的输入分布

  • BN 让每层的输入分布稳定一些 → 训练更容易收敛

    (2) 加速训练(更大学习率、更快收敛)

  • 输入分布稳定 → 梯度方向更可控

  • 在实践中,BN 允许使用更大学习率,而不会轻易发散

(3) 降低梯度消失/爆炸风险

  • 标准化后的激活值在较适中范围 → 反向传播时梯度更稳定
  • 对深网络尤其重要(ResNet 前就有这个痛点)

(4) 带来正则化效果

  • mini-batch 统计值有随机性,相当于给网络加了噪声
  • 类似 Dropout,减少过拟合(虽然 BN 的正则化作用不如专门的正则方法)

(5) 对权重初始化不敏感

  • 以前深网络训练要精细调初始化参数
  • BN 之后,随便用常见初始化方法也能稳定训练

3. 为什么重要(历史意义)

在 BN 2015 年提出之前:

  • 深层 CNN / RNN 很容易梯度消失/爆炸
  • 要训练一个很深的网络,需要极小学习率 + 很多调参
  • ImageNet 级别网络的训练时间动辄要几周

BN 出来之后:

  • ResNet-152 等超深网络能顺利训练
  • 收敛速度大幅提升,很多任务的训练时间直接砍半甚至更多
  • 成为卷积网络、Transformer 中的标配模块(虽然 Transformer 里更多用 LayerNorm,但思想相同)

Batch Norm 重要是因为它稳定了深层网络的训练过程允许更快收敛减少对初始化和学习率的敏感性,并且在早期深度学习浪潮中解决了“深度无法训练”的关键瓶颈