news 2026/8/29 18:27:31

【ExpandNets】《ExpandNets: Linear Over-parameterization to Train Compact Convolutional Networks》

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【ExpandNets】《ExpandNets: Linear Over-parameterization to Train Compact Convolutional Networks》

NIPS-2020

github:https://github.com/GUOShuxuan/expandnets


文章目录

  • 1、Background and Motivation
    • Background
    • Motivation
    • 论文的核心问题
  • 2、Related Work
  • 3、Advantages / Contributions
  • 4、Method
    • 4.1、Expanding Convolutional Layers
    • 4.2、Expanding Convolutions in Practice
    • 4.3、Expanding Fully-connected Layers
  • 5、Experiments
    • 5.1、Datasets and Metrics
    • 5.2、Image Classification
    • 5.3、Object Detection
    • 5.4、Semantic Segmentation
  • 6、Analysis of our Approach
    • 6.1、Training Behavior
    • 6.2、Generalization Ability
    • 6.3、Is Over-parameterization the Key to the Success?
  • 6、Conclusion(own) / Future work

1、Background and Motivation

ExpandNets 不是先训练大模型再压缩,而是先确定最终要部署的小模型,训练时临时把它线性展开以获得过参数化的训练优势,推理前再无损合并回原模型。

Background

  1. 深、大网络效果好,但部署成本高
  2. 紧凑网络容易部署,却难以直接训练
  3. 过参数化有助于训练
    大模型虽然存在参数冗余,但这种过参数化通常能改善:
    • 优化过程;
    • 收敛速度;
    • 泛化能力。

Motivation

作者希望同时满足两个看似冲突的目标:

  • 训练时享受大模型过参数化带来的优化优势;
  • 推理时仍然只保留原始紧凑网络的计算成本。

因此提出:

紧凑层 ⟶ 训练前展开 多个连续线性层 ⟶ 训练后合并 原始紧凑层 \text{紧凑层} \overset{\text{训练前展开}}{\longrightarrow} \text{多个连续线性层} \overset{\text{训练后合并}}{\longrightarrow} \text{原始紧凑层}紧凑层训练前展开多个连续线性层训练后合并原始紧凑层

展开结构内部不加入 ReLU 等非线性,因此可以精确合并,例如:

W = W 3 W 2 W 1 W=W_3W_2W_1W=W3W2W1

这使得模型:

  • 训练时更深、更宽、参数更多;
  • 推理时恢复为原来的紧凑架构;
  • 合并过程没有信息损失;
  • 不增加最终参数量和推理计算量;
  • 不依赖教师网络;
  • 可以用于用户已经指定好的任意紧凑 CNN。

论文的核心问题

能否把“过参数化”只作为一种训练手段,而不是最终部署模型的永久负担?

ExpandNets 给出的答案是:使用可代数合并的线性过参数化。这也是后续结构重参数化方法的重要思想之一。


2、Related Work

  1. 网络压缩:通过剪枝、参数共享和低秩分解缩小大模型,但难以精确得到指定架构,也没有利用过参数化改善小模型训练。
  2. 轻量网络设计:MobileNet、ShuffleNet 等效率高,但对网络结构有特定限制。(解决的是“如何设计一个小模型”;不能直接回答“如何把已经指定好的任意小模型训练得更好”。)
  3. 知识蒸馏:利用大教师模型训练小模型,但依赖额外的预训练教师。
  4. 线性过参数化:已有研究主要针对无非线性的全连接网络,偏重理想条件下的理论分析。
  5. ACNet:同期研究通过非对称卷积分支(1xk,kx1)扩展网络;ExpandNets 则采用连续卷积层展开。

此前工作分别解决了:

  • 如何压缩大模型;
  • 如何设计高效模型;
  • 如何由教师指导小模型;
  • 如何理论分析深度线性网络。

而本文试图解决的是:

在不改变指定推理架构、无需教师模型的情况下,如何利用训练期过参数化,把一个紧凑的非线性卷积网络训练得更好


3、Advantages / Contributions

Contribution

  • 提出线性过参数化方法:训练时扩展紧凑 CNN,推理前再合并。
  • 设计三种展开策略:Expand-CL、Expand-CK、Expand-FC。
  • 在分类、检测和分割任务上验证其有效性,并分析了梯度冲突和泛化表现。

Advantage

  • 无需教师模型,流程比知识蒸馏简单。
  • 不改变最终网络结构,不增加推理参数量和计算量。
  • 适用于已有的紧凑网络,并能提升其训练效果和最终精度。

4、Method

output x input x kernel size x kernel size

这里r rr是扩展倍率,1 个 5x5 等于 2 个 3x3,(5-1/)2 = 2,1 个 7x7 等于 3 个 3x3,(7-1)/2 = 3

4.1、Expanding Convolutional Layers

convolution can be expressed as

后面的W F W^FWFX v X^vXv是 Matrix representation

理论上改W F W^FWF就可以扩展网络了,但是也不能乱改,会破坏原始网络的感受野

one cannot simply expand a convolutional layer with kernel size k × k as a series of convolutions with arbitrary kernel sizes because, in general, the resulting receptive field size would differ from the original one.

作者提出如下两种扩展卷积的策略

(1)Expanding general convolutions—— expanding convolutional layers.

1x1 不增加感受野,普通 3x3 可以扩展为 1x1 -> 3x3 -> 1x1,channel 也是可以 expand 的

输入 channel 为 m,输出 channel 为 n

m 可以扩展为 p = rm,n 可以扩展为 q = rn

r 表示 expand rate

(2)Expanding k × k convolutions with k > 3——expanding convolutional kernels

k × k kernels with k > 3 can be equivalently represented with a series of l 3 × 3 convolutions, where l = (k − 1)/2

同样的 channel 也可以扩展


4.2、Expanding Convolutions in Practice

(1)Padding and strides

处理 padding:use padding p in the first layer of the expanded unit while not padding the remaining layers

处理 stride:

  • expand-CL:set the stride of the middle layer to s and that of the others to 1

  • expand-CK: last one whose stride is set to s


也即

expand-CL

expand-CK


(2)Depthwise convolutions

源码中没有展开 point-wise convolution

# 展开的是原来的 Depthwise 3×3Conv(inp,inp*r,1×1,groups=inp)Conv(inp*r,inp*r,3×3,groups=inp)Conv(inp*r,inp,1×1,groups=inp)# 原有 Point-wise Conv 保持单层Conv(inp,oup,1×1,groups=1)

4.3、Expanding Fully-connected Layers

advocate expanding each layer into only two or three layers with a small expansion rate

expand-fc 在文章中的效果都很一般


5、Experiments

5.1、Datasets and Metrics

image classification on ImageNet, CIFAR-10 and CIFAR-100(top1)

object detection on PASCAL VOC(mAP)

image segmentation on Cityscapes on Cityscapes(mIoU,mean recall (mRec) and mean precision (mPrec))


5.2、Image Classification

(1)CIFAR-10 and CIFAR-100

仅仅 expand fc 效果有限

7x7 conv,需要 padding 3

nn.Conv2d(...,kernel_size=7,padding=3)

拆分为 3 个 3x3 conv 后

nn.Conv2d(...,kernel_size=3,padding=3)nn.Conv2d(...,kernel_size=3)# 默认 padding=0nn.Conv2d(...,kernel_size=3)# 默认 padding=0

padding 也要是 3


ExpandNet 可以强化 MobileNet 和 MobileNetV2

expandnet 需要 train longer 因为容量大了,baseline train longer 标记为 †,可以看到效果比不上 expandnet


(2)ImageNet

蒸馏可以进一步提升网络表达能力

5.3、Object Detection

轻量级检测框架上的提升也是很明显

5.4、Semantic Segmentation


ExpandNet outperforms the original compact U-Net

recall 提升最明显

6、Analysis of our Approach

ExpandNet-CL/CK 不只是最终精度更高,而且训练过程中不同 mini-batch 的梯度冲突更少,因此更容易用 SGD 优化。

6.1、Training Behavior

measuregradient confusion (or rather consistency)as the minimum cosine similarity of gradients over 100 randomly-sampled pairs of mini-batches at the end of each training epoch

cos_values=[]foriinrange(100):batch_a=random_minibatch(size=128)batch_b=random_minibatch(size=128)grad_a=gradient(model,batch_a)grad_b=gradient(model,batch_b)cos_values.append(cosine(grad_a,grad_b))

抽取时间处理方式
中图每个 epoch 结束时随机抽取100对训练集 mini-batch → 得到100个 cosine → 取最小值
右图整个训练结束时每次独立训练抽取100对 → 保留全部 cosine → 5次实验合并成500个值做 KDE

左图

speed up convergence and yield a smaller generalization error

中图,yield lower gradient confusion (higher minimum cosine similarity)

右图,kernel density estimation

“集中在 0”并不表示梯度高度一致,而表示它们大多接近正交、相互干扰较小。文献 49 将这种现象解释为不同训练样本的 SGD 更新更趋于解耦。


方法特点
直方图把数据划分到不同区间,结果呈柱状且受分箱影响
KDE每个数据点放一个小高斯曲线,叠加后形成平滑分布


Computational overheads and complexity analysis

6.2、Generalization Ability

produce flatter minima,indicates better generalization

CL、CK卷积展开不仅提高了精度,还使训练得到的解位于更宽、更平坦的低损失区域;其中 CK 最明显。单独展开 FC 层几乎没有改善。


什么是 Loss Landscape?

把网络的全部参数记为θ \thetaθ,训练集损失为:

L ( θ ) = 1 m ∑ i = 1 m ℓ ( f θ ( x i ) , y i ) L(\theta)=\frac{1}{m}\sum_{i=1}^{m} \ell\big(f_\theta(x_i),y_i\big)L(θ)=m1i=1m(fθ(xi),yi)

网络的每一种参数组合θ \thetaθ都对应一个损失值L ( θ ) L(\theta)L(θ)。因此可以把:

  • 参数θ \thetaθ:看成横坐标;
  • 损失L ( θ ) L(\theta)L(θ):看成高度。

由此形成的高维“地形”就是loss landscape(损失景观/损失曲面)

但网络通常有几百万个参数,无法直接画出来,所以文献 33 选择最终参数θ ∗ \theta^*θ附近的两个方向,截取一个二维平面:

F ( α , β ) = L ( θ ∗ + α d + β e ) F(\alpha,\beta) = L\left(\theta^*+\alpha d+\beta e\right)F(α,β)=L(θ+αd+βe)

其中:

  • θ ∗ \theta^*θ:训练完成后的参数,位于图中心( 0 , 0 ) (0,0)(0,0)
  • d , e d,ed,e:参数空间中的两个随机方向;
  • α , β \alpha,\betaα,β:沿两个方向扰动参数的程度。

因此图4并不是完整的高维损失曲面,而是其二维切片


具体如何计算?

第一步:训练网络

分别训练 SmallNet、ExpandNet-FC、ExpandNet-CL、ExpandNet-CK,得到各自的最终参数θ ∗ \theta^*θ

第二步:生成两个随机方向

生成与网络参数形状相同的高斯随机向量d , e d,ed,e

文献33指出,直接使用随机向量会受到不同网络权重尺度的影响,因此采用filter-wise normalization

d i , j ← d i , j ∥ d i , j ∥ F ∥ θ i , j ∗ ∥ F d_{i,j} \leftarrow \frac{d_{i,j}}{\|d_{i,j}\|_F} \|\theta^*_{i,j}\|_Fdi,jdi,jFdi,jθi,jF

其中 F 表示 Frobenius norm(弗罗贝尼乌斯范数)

||A||_F = sqrt(A中所有元素平方后求和)

第二个方向e ee同样处理。

含义是:每个随机滤波器的扰动幅度,按照对应已训练滤波器的权重范数进行缩放。这样可以减小单纯权重缩放造成的“假平坦、假尖锐”现象;BN参数通常保持固定。该方法也可以用于FC层,其中一个神经元的权重可视为一个filter。
第三步:网格扫描

图4的两个坐标轴均为[ − 1 , 1 ] [-1,1][1,1]。选择一系列( α , β ) (\alpha,\beta)(α,β),逐点计算:

L ( θ ∗ + α d + β e ) L\left(\theta^*+\alpha d+\beta e\right)L(θ+αd+βe)

每个点只需要:

  1. 扰动网络参数;
  2. 对固定数据集前向推理;
  3. 计算损失。

不需要在每个点重新训练网络。如果使用51 × 51 51\times5151×51网格,就是进行2601次损失评估。

第四步:绘制等高线

图中每条线表示相同的损失值:

  • 等高线越密:损失上升越快,解越尖锐;
  • 等高线越疏、包围面积越大:低损失区域越宽,解越平坦;
  • 椭圆越狭长:不同方向的曲率差异越大,说明某些方向特别敏感。

本文图4怎么理解?

图中的等高线表示损失值;每幅图下方的百分比是训练所得模型的CIFAR-10 Top-1测试错误率,不是等高线数值。

模型Loss landscape测试错误率解读
SmallNet低损失区域较窄,椭圆明显倾斜19.42%对部分权重扰动比较敏感
ExpandNet-FC( r = 2 ) (r=2)(r=2)与SmallNet基本接近19.32%只展开FC层帮助很小
ExpandNet-CL( r = 8 ) (r=8)(r=8)等高线明显变宽18.97%卷积层线性展开得到更平坦的解
ExpandNet-CK( r = 8 ) (r=8)(r=8)低损失区域最宽、形状更圆17.12%解最平坦,同时测试误差最低

可以把它们想象成:

  • SmallNet:落在一个窄碗底;
  • FC:碗底只稍微变宽;
  • CL:进入更宽的盆地;
  • CK:进入最宽、最平缓的盆地。

这意味着CK模型的参数即使发生一定扰动,损失也不会快速上升。


图4支持如下经验关系:

卷积展开 → 改变训练参数化和优化过程 → 找到更平坦的极小值 → 更低的测试误差 \text{卷积展开} \rightarrow \text{改变训练参数化和优化过程} \rightarrow \text{找到更平坦的极小值} \rightarrow \text{更低的测试误差}卷积展开改变训练参数化和优化过程找到更平坦的极小值更低的测试误差

其中:

  • 只扩展FC层,景观和精度几乎不变;
  • CL有所改善;
  • CK改善最大。

这也说明ExpandNet的收益并不只是“参数临时变多”,而与卷积层展开后形成的优化空间有关。

需要注意:

  1. 图中展示的是训练态ExpandNet参数空间附近的景观,不代表收缩后的SmallNet具有完全相同的曲面。
  2. 平坦表示对权重扰动不敏感,不等于对输入噪声或对抗攻击鲁棒。
  3. 二维切片不能完全代表数百万维的真实景观。
  4. FC使用r = 2 r=2r=2,CL/CK使用r = 8 r=8r=8,因此图4不是严格控制相同展开率的因果实验。
  5. 图4展示的是“平坦度与泛化性能相关”,不能单独证明平坦就是精度提升的唯一原因。

generate three CIFAR-10 and CIFAR-100 training sets, containing 20%, 50% and 80% of random labels, respectively, while the test set remains clean(随机扰乱标签)

CL 和 CK 展开通常具有更低的测试错误率,但同时具有更高的训练错误率。

说明其他实验中的性能提升并不是依靠记住训练数据,而是真正提高了泛化能力

6.3、Is Over-parameterization the Key to the Success?

Hypothesis1:The improvement comes from the different initialization resulting from expansion

standard initialized 是 kaiming initialization

Table 8中“SmallNet initialized with ExpandNet-CL/CK”是什么意思?

创建ExpandNet ↓ 每个展开层做标准Kaiming初始化 ↓ 不训练ExpandNet ↓ 立即把多个线性层代数合并 ↓ 用合并后的权重初始化SmallNet ↓ 只训练SmallNet

特殊初始化只能带来很小且不稳定的变化,明显不如直接训练过参数化ExpandNet。

真正的优势来自:
多个线性因子在训练过程中独立更新 → 改变优化路径和梯度行为 → 找到泛化更好的解 \boxed{ \text{多个线性因子在训练过程中独立更新} \rightarrow \text{改变优化路径和梯度行为} \rightarrow \text{找到泛化更好的解} }多个线性因子在训练过程中独立更新改变优化路径和梯度行为找到泛化更好的解

也就是说,“先展开再立即合并”没有明显作用;必须在展开结构中训练,过参数化的优势才会发挥出来。


Hypothesis2:The improvement is due to an intrinsic property of the CK expansion.

r ↑ ⇒ 训练参数量 ↑ ⇒ 准确率总体提高 r\uparrow \Rightarrow \text{训练参数量}\uparrow \Rightarrow \text{准确率总体提高}r↑⇒训练参数量↑⇒准确率总体提高

benefits from both ExpandNet-CK and over-parameterization

ExpandNet-CK的收益来自两部分

CK线性因子化带来的优化优势 + 增大 r 带来的过参数化优势 \boxed{ \text{CK线性因子化带来的优化优势} + \text{增大}r\text{带来的过参数化优势} }CK线性因子化带来的优化优势+增大r带来的过参数化优势


6、Conclusion(own) / Future work

  • conclusion:本文通过线性过参数化扩展紧凑网络,尤其是卷积层(CL),使其更易训练、泛化更好;训练后可无损合并回原始结构,因此不增加推理参数量和计算量,并可与知识蒸馏结合
  • future work:探索更有效的初始化方法,例如利用训练好的非线性大网络初始化ExpandNet,从而进一步提升紧凑网络性能。
训练非线性ExpandNet ↓ 逐层复制权重 ↓ 移除内部ReLU ↓ 继续训练线性ExpandNet ↓ 代数合并为SmallNet
  • expand an arbitrary compact network into an equivalent deeper and wider one
  • 虽然“连续堆叠多个线性层”并不是本文首次提出,但以往研究主要停留在理想化的全连接深度线性网络中,缺少对真实卷积网络训练的工程验证。
  • 训练时把一个卷积层展开成多个连续的线性层,使模型更容易优化;推理前再把这些层合并回一个卷积层。 因此训练过程获得了过参数化的好处,但部署时模型大小和推理成本不会增加
  • 作者有三种 over-parameteriization 方法——基于原网络结构在训练阶段扩展,FC 几乎没有提升,expand convolution layer(扩展 1x1 层保持感受野一致),expand convolution kernel(k>3,拆分为多个堆叠的小卷积核),配合 expand rate(核心)
  • compact network work,大一些的网络没有那么 work
  • 会加重训练代价
  • loss landscape
  • gradient confusion
  • 和蒸馏兼容
  • expand-CL 和 expand-CK 没有一起使用

更多论文解读,请参考 【Paper Reading】

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/29 18:26:49

技术博客内容导航:从信息孤岛到知识地图的构建实践

1. 项目缘起:为什么需要一个“博客文章导航”?做技术博客或者个人知识库的朋友,可能都有过类似的经历:随着时间推移,文章越写越多,内容也越来越杂。从最初几篇零散的笔记,到后来成体系的系列教程…

作者头像 李华
网站建设 2026/8/29 18:26:26

NodeCoda:把 Dify 工作流当代码来工程化

上个月帮一个团队看他们的 Dify 工作流。东西是好的,跑在生产上,用户在用。但改一版要两个小时,因为谁都不敢动。他们自己也说不清在怕什么——那种焦虑,跟代码库是两回事。画布上四十多个节点,连成一片。改一个变量&a…

作者头像 李华
网站建设 2026/8/29 18:21:44

基于YOLOv5与MoveIt的垃圾分类机器人系统设计与实现

简介:机器人视觉抓取是智能制造与自动化分拣的核心技术,其本质是感知、规划与执行的协同。目标检测模型负责识别物体类别与位置,运动规划算法则控制机械臂完成抓取与投放。YOLOv5作为成熟的目标检测框架,在实时性与部署灵活性上表…

作者头像 李华
网站建设 2026/8/29 18:21:08

AI大模型应用开发助力企业人才招聘

广州AI大模型应用开发公司,助力智能人才筛选与简历解析在广州这座人才济济的一线城市,人力资源从业者每天要面对海量简历,从上千份文档中手动筛选匹配度高的候选人,往往要耗费数天时间。而简历格式五花八门,关键信息分…

作者头像 李华
网站建设 2026/8/29 18:17:36

课前准备--EGFR突变结构与药物设计

作者,Evil Genius今天我们梳理一个案例,来看看分子对接分子动力学的实际运用。EGFR 是非常适合用来串联“基因突变 → 蛋白结构 → 构象变化 → 分子对接 → 分子动力学 → 药物设计 → 实验验证”的经典案例。一个完整的结构生物学/计算药物设计工作流&…

作者头像 李华