2026/8/29 18:28:16

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

【ExpandNets】《ExpandNets: Linear Over-parameterization to Train Compact Convolutional Networks》 NIPS-2020githubhttps://github.com/GUOShuxuan/expandnets文章目录1、Background and MotivationBackgroundMotivation论文的核心问题2、Related Work3、Advantages / Contributions4、Method4.1、Expanding Convolutional Layers4.2、Expanding Convolutions in Practice4.3、Expanding Fully-connected Layers5、Experiments5.1、Datasets and Metrics5.2、Image Classification5.3、Object Detection5.4、Semantic Segmentation6、Analysis of our Approach6.1、Training Behavior6.2、Generalization Ability6.3、Is Over-parameterization the Key to the Success?6、Conclusionown / Future work1、Background and MotivationExpandNets 不是先训练大模型再压缩而是先确定最终要部署的小模型训练时临时把它线性展开以获得过参数化的训练优势推理前再无损合并回原模型。Background深、大网络效果好但部署成本高紧凑网络容易部署却难以直接训练过参数化有助于训练大模型虽然存在参数冗余但这种过参数化通常能改善优化过程收敛速度泛化能力。Motivation作者希望同时满足两个看似冲突的目标训练时享受大模型过参数化带来的优化优势推理时仍然只保留原始紧凑网络的计算成本。因此提出紧凑层 ⟶ 训练前展开 多个连续线性层 ⟶ 训练后合并 原始紧凑层 \text{紧凑层} \overset{\text{训练前展开}}{\longrightarrow} \text{多个连续线性层} \overset{\text{训练后合并}}{\longrightarrow} \text{原始紧凑层}紧凑层⟶训练前展开​多个连续线性层⟶训练后合并​原始紧凑层展开结构内部不加入 ReLU 等非线性因此可以精确合并例如W W 3 W 2 W 1 WW_3W_2W_1WW3​W2​W1​这使得模型训练时更深、更宽、参数更多推理时恢复为原来的紧凑架构合并过程没有信息损失不增加最终参数量和推理计算量不依赖教师网络可以用于用户已经指定好的任意紧凑 CNN。论文的核心问题能否把“过参数化”只作为一种训练手段而不是最终部署模型的永久负担ExpandNets 给出的答案是使用可代数合并的线性过参数化。这也是后续结构重参数化方法的重要思想之一。2、Related Work网络压缩通过剪枝、参数共享和低秩分解缩小大模型但难以精确得到指定架构也没有利用过参数化改善小模型训练。轻量网络设计MobileNet、ShuffleNet 等效率高但对网络结构有特定限制。(解决的是“如何设计一个小模型”不能直接回答“如何把已经指定好的任意小模型训练得更好”。)知识蒸馏利用大教师模型训练小模型但依赖额外的预训练教师。线性过参数化已有研究主要针对无非线性的全连接网络偏重理想条件下的理论分析。ACNet同期研究通过非对称卷积分支1xkkx1扩展网络ExpandNets 则采用连续卷积层展开。此前工作分别解决了如何压缩大模型如何设计高效模型如何由教师指导小模型如何理论分析深度线性网络。而本文试图解决的是在不改变指定推理架构、无需教师模型的情况下如何利用训练期过参数化把一个紧凑的非线性卷积网络训练得更好。3、Advantages / ContributionsContribution提出线性过参数化方法训练时扩展紧凑 CNN推理前再合并。设计三种展开策略Expand-CL、Expand-CK、Expand-FC。在分类、检测和分割任务上验证其有效性并分析了梯度冲突和泛化表现。Advantage无需教师模型流程比知识蒸馏简单。不改变最终网络结构不增加推理参数量和计算量。适用于已有的紧凑网络并能提升其训练效果和最终精度。4、Methodoutput x input x kernel size x kernel size这里r rr是扩展倍率1 个 5x5 等于 2 个 3x35-1/2 21 个 7x7 等于 3 个 3x37-1/2 34.1、Expanding Convolutional Layersconvolution can be expressed as后面的W F W^FWF和X 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.作者提出如下两种扩展卷积的策略1Expanding general convolutions—— expanding convolutional layers.1x1 不增加感受野普通 3x3 可以扩展为 1x1 - 3x3 - 1x1channel 也是可以 expand 的输入 channel 为 m输出 channel 为 nm 可以扩展为 p rmn 可以扩展为 q rnr 表示 expand rate2Expanding k × k convolutions with k 3——expanding convolutional kernelsk × 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 Practice1Padding and strides处理 paddinguse padding p in the first layer of the expanded unit while not padding the remaining layers处理 strideexpand-CLset the stride of the middle layer to s and that of the others to 1expand-CK last one whose stride is set to s也即expand-CLexpand-CK2Depthwise convolutions源码中没有展开 point-wise convolution# 展开的是原来的 Depthwise 3×3Conv(inp,inp*r,1×1,groupsinp)Conv(inp*r,inp*r,3×3,groupsinp)Conv(inp*r,inp,1×1,groupsinp)# 原有 Point-wise Conv 保持单层Conv(inp,oup,1×1,groups1)4.3、Expanding Fully-connected Layersadvocate expanding each layer into only two or three layers with a small expansion rateexpand-fc 在文章中的效果都很一般5、Experiments5.1、Datasets and Metricsimage classification on ImageNet, CIFAR-10 and CIFAR-100top1object detection on PASCAL VOCmAPimage segmentation on Cityscapes on CityscapesmIoUmean recall (mRec) and mean precision (mPrec)5.2、Image Classification1CIFAR-10 and CIFAR-100仅仅 expand fc 效果有限7x7 conv需要 padding 3nn.Conv2d(...,kernel_size7,padding3)拆分为 3 个 3x3 conv 后nn.Conv2d(...,kernel_size3,padding3)nn.Conv2d(...,kernel_size3)# 默认 padding0nn.Conv2d(...,kernel_size3)# 默认 padding0padding 也要是 3ExpandNet 可以强化 MobileNet 和 MobileNetV2expandnet 需要 train longer 因为容量大了baseline train longer 标记为 †可以看到效果比不上 expandnet2ImageNet蒸馏可以进一步提升网络表达能力5.3、Object Detection轻量级检测框架上的提升也是很明显5.4、Semantic SegmentationExpandNet outperforms the original compact U-Netrecall 提升最明显6、Analysis of our ApproachExpandNet-CL/CK 不只是最终精度更高而且训练过程中不同 mini-batch 的梯度冲突更少因此更容易用 SGD 优化。6.1、Training Behaviormeasuregradient 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 epochcos_values[]foriinrange(100):batch_arandom_minibatch(size128)batch_brandom_minibatch(size128)grad_agradient(model,batch_a)grad_bgradient(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 analysis6.2、Generalization Abilityproduce flatter minimaindicates better generalizationCL、CK卷积展开不仅提高了精度还使训练得到的解位于更宽、更平坦的低损失区域其中 CK 最明显。单独展开 FC 层几乎没有改善。什么是 Loss Landscape把网络的全部参数记为θ \thetaθ训练集损失为L ( θ ) 1 m ∑ i 1 m ℓ ( f θ ( x i ) , y i ) L(\theta)\frac{1}{m}\sum_{i1}^{m} \ell\big(f_\theta(x_i),y_i\big)L(θ)m1​i1∑m​ℓ(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 normalizationd 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,j​←∥di,j​∥F​di,j​​∥θi,j∗​∥F​其中 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)每个点只需要扰动网络参数对固定数据集前向推理计算损失。不需要在每个点重新训练网络。如果使用51 × 51 51\times5151×51网格就是进行2601次损失评估。第四步绘制等高线图中每条线表示相同的损失值等高线越密损失上升越快解越尖锐等高线越疏、包围面积越大低损失区域越宽解越平坦椭圆越狭长不同方向的曲率差异越大说明某些方向特别敏感。本文图4怎么理解图中的等高线表示损失值每幅图下方的百分比是训练所得模型的CIFAR-10 Top-1测试错误率不是等高线数值。模型Loss landscape测试错误率解读SmallNet低损失区域较窄椭圆明显倾斜19.42%对部分权重扰动比较敏感ExpandNet-FC( r 2 ) (r2)(r2)与SmallNet基本接近19.32%只展开FC层帮助很小ExpandNet-CL( r 8 ) (r8)(r8)等高线明显变宽18.97%卷积层线性展开得到更平坦的解ExpandNet-CK( r 8 ) (r8)(r8)低损失区域最宽、形状更圆17.12%解最平坦同时测试误差最低可以把它们想象成SmallNet落在一个窄碗底FC碗底只稍微变宽CL进入更宽的盆地CK进入最宽、最平缓的盆地。这意味着CK模型的参数即使发生一定扰动损失也不会快速上升。图4支持如下经验关系卷积展开 → 改变训练参数化和优化过程 → 找到更平坦的极小值 → 更低的测试误差 \text{卷积展开} \rightarrow \text{改变训练参数化和优化过程} \rightarrow \text{找到更平坦的极小值} \rightarrow \text{更低的测试误差}卷积展开→改变训练参数化和优化过程→找到更平坦的极小值→更低的测试误差其中只扩展FC层景观和精度几乎不变CL有所改善CK改善最大。这也说明ExpandNet的收益并不只是“参数临时变多”而与卷积层展开后形成的优化空间有关。需要注意图中展示的是训练态ExpandNet参数空间附近的景观不代表收缩后的SmallNet具有完全相同的曲面。平坦表示对权重扰动不敏感不等于对输入噪声或对抗攻击鲁棒。二维切片不能完全代表数百万维的真实景观。FC使用r 2 r2r2CL/CK使用r 8 r8r8因此图4不是严格控制相同展开率的因果实验。图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 expansionstandard initialized 是 kaiming initializationTable 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-parameterizationExpandNet-CK的收益来自两部分CK线性因子化带来的优化优势 增大 r 带来的过参数化优势 \boxed{ \text{CK线性因子化带来的优化优势} \text{增大}r\text{带来的过参数化优势} }CK线性因子化带来的优化优势增大r带来的过参数化优势​6、Conclusionown / Future workconclusion本文通过线性过参数化扩展紧凑网络尤其是卷积层CL使其更易训练、泛化更好训练后可无损合并回原始结构因此不增加推理参数量和计算量并可与知识蒸馏结合future work探索更有效的初始化方法例如利用训练好的非线性大网络初始化ExpandNet从而进一步提升紧凑网络性能。训练非线性ExpandNet ↓ 逐层复制权重 ↓ 移除内部ReLU ↓ 继续训练线性ExpandNet ↓ 代数合并为SmallNetexpand an arbitrary compact network into an equivalent deeper and wider one虽然“连续堆叠多个线性层”并不是本文首次提出但以往研究主要停留在理想化的全连接深度线性网络中缺少对真实卷积网络训练的工程验证。训练时把一个卷积层展开成多个连续的线性层使模型更容易优化推理前再把这些层合并回一个卷积层。 因此训练过程获得了过参数化的好处但部署时模型大小和推理成本不会增加作者有三种 over-parameteriization 方法——基于原网络结构在训练阶段扩展FC 几乎没有提升expand convolution layer扩展 1x1 层保持感受野一致expand convolution kernelk3拆分为多个堆叠的小卷积核配合 expand rate核心compact network work大一些的网络没有那么 work会加重训练代价loss landscapegradient confusion和蒸馏兼容expand-CL 和 expand-CK 没有一起使用更多论文解读请参考 【Paper Reading】