[解读] Dynamic Convolution: Attention over Convolution Kernels

本文介绍了一种名为动态卷积的模块,该模块通过引入权重参数动态调整卷积核,提高了卷积神经网络(CNN)的性能。这种方法借鉴了SENet的注意力机制,但应用于卷积核而非特征图。动态卷积具有更强的表达能力,且在增加少量计算成本的情况下,显著提升了网络性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

链接: https://arxiv.org/abs/1912.03458v2

本文针对卷积神经网络, 提出一种动态卷积模块, 仅增加很少的计算量, 来获得性能上的较大提升.

相近的工作

动态卷积中的 Attention 模块来源于 SENet[13] 网络, 它可以自动学习到不同通道特征的重要程度, 生成对应的权重, 这相当于一种注意力机制.

与 SENet 不同的是, 动态卷积处理的对象是卷积核, 按权重相加, 而后者是处理特征图, 对每个特征图乘上一个权重.

方法

相对动态卷积来说, 传统的感知器可以看成静态的:
y=g(WTx+b) \mathbf{y}=g(\mathbf{W^Tx}+\mathbf{b}) y=g(WTx+b)
本文提出的动态感知器的概念可以表达为:
y=g(W~T(x)x+b~(x))W~(x)=∑k=1Kπk(x)W~k,b~(x)=∑k=1Kπk(x)b~k s.t. 0≤πk(x)≤1,∑k=1Kπk(x)=1 \begin{aligned} \mathbf{y} &=g\left(\widetilde{\mathbf{W}}^{T}(\mathbf{x}) \mathbf{x}+\tilde{\mathbf{b}}(\mathbf{x})\right) \\ \widetilde{\mathbf{W}}(\mathbf{x}) &=\sum_{k=1}^{K} \pi_{k}(\mathbf{x}) \widetilde{\mathbf{W}}_{k}, \tilde{\mathbf{b}}(\mathbf{x})=\sum_{k=1}^{K} \pi_{k}(\mathbf{x}) \tilde{\mathbf{b}}_{k} \\ \text { s.t. } & 0 \leq \pi_{k}(\mathbf{x}) \leq 1, \sum_{k=1}^{K} \pi_{k}(\mathbf{x})=1 \end{aligned} yW(x) s.t. =g(WT(x)x+b~(x))=k=1Kπk(x)Wk,b~(x)=k=1Kπk(x)b~k0πk(x)1,k=1Kπk(x)=1
其中 W~k,b~k\tilde{\mathbf{W}}_{k}, \tilde{\mathbf{b}}_{k}W~k,b~k 分别是 KKK 个网络的权重参数.

聚合的意思是将 KKK 个卷积核根据权重 πk(x)\pi_k{(\mathbf{x})}πk(x) 按元素求和, 得到处理后的卷积核 W~,b~\mathbf{\tilde{W}}, \mathbf{\tilde{b}}W~,b~. 由于 πk(x)\pi_k{(\mathbf{x})}πk(x) 的生成是非线性的, 所以动态卷积具有更强的表达能力. 流程图如下:

在这里插入图片描述

上图中可能会产生误解, x\mathbf{x}x 是卷积网络中前一层的特征图, “attention” 模块输入的是本层的卷积核, 经过 SENet[13] 中的操作, 得到权重 π(k)\pi(k)π(k), 与 convkconv_kconvk 分别作积并求和得到聚合的卷积核, 这个卷积核再对输入 x\mathbf{x}x 处理得到本层的特征图 y\mathbf{y}y.

由于需要同步优化所有的卷积核, 因为这会带来训练上的困难. 针对训练问题, 本文提出两个改进.

注意到 ∑k=1Kπk(x)=1\sum_{k=1}^{K} \pi_{k}(\mathbf{x})=1k=1Kπk(x)=1 这个设定也是本文的一个亮点, 文中分析了这有利于更好的训练. 如下图所示:

在这里插入图片描述

假设 W~1,W~2,W~3\widetilde{\mathbf{W}}_1, \widetilde{\mathbf{W}}_2, \widetilde{\mathbf{W}}_3W1,W2,W3 是三个卷积核, 当 ∑k=1Kπk(x)=1\sum_{k=1}^{K} \pi_{k}(\mathbf{x})=1k=1Kπk(x)=1 时, 聚合的卷积核将映射到阴影三角形中, 这缩小了范围, 从而有利于训练.

另外关于 Softmax 归一化函数引入热度(temperature)的参数:
πk=exp⁡(zk/τ)∑jexp⁡(zj/τ) \pi_{k}=\frac{\exp \left(z_{k} / \tau\right)}{\sum_{j} \exp \left(z_{j} / \tau\right)} πk=jexp(zj/τ)exp(zk/τ)
τ\tauτ 值变大时, πk\pi_kπk 的分布将更加集中. 通常情况下 τ=1\tau = 1τ=1, 这使得 πk\pi_kπk 的分布较为分散, 对于较大的 πk\pi_kπk 值, 其对应的卷积核 W~k\widetilde{\mathbf{W}}_kWk 能够得到优化, 而较小的值对应的 W~k\widetilde{\mathbf{W}}_kWk 则得不到优化. 因此在训练初期设置较大的 τ\tauτ 值, 随着训练进行, 再将数值减小.

进一步改进

虽然动态卷积仅在增加很少的计算量的前提下, 能够提高网络的表达能力, 但这大大增加了网络参数的数量, 对硬件条件有更高的要求. 具体来说, 一个卷积层通常要输出很多个特征图, 而每一个特征图, 都要有一个动态卷积层来输出, 这使得卷积核的数量增加了 KKK 倍, 而文中 K=8K=8K=8 时效果比较好. 为了减少参数数量, 可考虑构造多个注意力模块, 然后复用 KKK 个动态卷积和.

参考

[13] Jie Hu, Li Shen, and Gang Sun. Squeeze-and-excitation networks. In The IEEE Conference on Computer Vision and Pattern Recognition (CVPR), June 2018.

本人才疏学浅, 如有遗漏或错误之处, 请多多指教!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值