0%

动态神经网络相关的几篇论文

《CondConv: Conditionally Parameterized Convolutions for Efficient Inference》

条件卷积,目的是希望根据输入样本,动态选择卷积核,从而提高模型的容量。

方法是:引入路由函数和额外的参数,用额外的参数来选择要使用的卷积核

路由函数如下: \[ r(x)=\rm{Sigmoid}(\rm{GlobalAveragePool(x)}R) \]

《Dynamic Convolution: Attention over Convolution Kernels》

动态卷积:引入注意力机制,和上面的《CondConv》类似,使用注意力作为权重选择和累积,softmax的温度调的较高达到更好性能

作者提出两个点:

  1. 让同一层所有卷积核权重的和为1
  2. 在训练早期能尽可能优化每个卷积核,使得所有卷积核都能被训练

《Learning Dynamic Routing for Semantic Segmentation》

动态路由解决语义分割问题,使用一个STEM模块选择图片降低分辨率程度,然后输入网络,并在后续网络中继续动态调整分辨率。

图中展示的是用一个STEM层降低分辨率,然后在后面的网络都设置了4个候选分辨率,图片能根据当前输入特征来动态选择是保持当前分辨率还是增大或缩小分辨率。

网络根据图片的内容在网络中自适应的根据图片的内容进行图片分辨率调整,从而达到较高的计算效率和计算性能

《Dynamic Region-Aware Convolution》

提出动态区域感知卷积模块,可以用来代替标准卷积。具体包括两个子模块:一个小的可学习模块来预测指导掩码来在划分区域;一个滤波器生成器模块来在每个区域中生成特定滤波器

具体过程:

  1. 使用一个可学习的guided mask将空间特征划分成一些区域,相同颜色的像素在guided mask被划分到相同区域
  2. 在每个区域,使用滤波器生成器产生特定滤波器来执行常规二维卷积,根据guided mask可以为不同像素选择要使用的滤波器

其中guided mask被生成的时候用到了argmax,而argmax不可微,所以作者采用了softmax来模拟argmax的导数,从而使得反向传播可以进行

《Dynamic Feature Pyramid Networks for Object Detection》

动态FPN,在FPN中添加Inception块,然后在块之前用一个gate函数根据输入决定是否使用对应的块

引入一个gate函数进行选择,这个gate在训练过程中:gate的预测值需要乘以来自动态块的特征;而在测试过程中:gate的预测值如果为0则表示对应的动态块不需要执行。

具体地gate是:

  1. 使用非线性函数生成门信号的logits:\(\alpha_l=g_l(F_l)\),其中\(a_l\)决定了第\(l\)层的inception块的采样概率

  2. 然后通过Gumbel Softmax函数生成one-hot向量\(\beta_l\)\[ \beta_l^i = \begin{align}\rm{GumbelSoftmax}\end{align}(\alpha_l^i|\alpha_l) = \frac{\exp[\alpha_l^i+n_l^i/\tau]}{\sum_i \exp[(\alpha_l^i+n_l^i/\tau)]} \] 其中:\(n^i_l ∼ \rm{Gumbel}(0, 1)\)是一个从Gumbel分布采样的随机噪音,\(\tau\)是温度参数

    引入Gumbel Softmax的原因是方便求导,否则生产的离散变量无法求导进行反向传播

  3. inception block的设计来源于squeeze-and-excitation(SE) module

此外,为了在现实中方便使用,作者引入了一个新的用于资源约束的损失函数: \[ \mathcal{L}_C = ((C_R-C_{target})/(C_{max}-C_{min}))^2 \] 其中\(C_{max},C_{min}\)表示动态块的最大资源开销和最小资源开销,可以在训练模型前计算得出,\(C_R\)表示动态块的实际计算开销,\(C_{target}\)表示目标资源开销,可以通过设置超参数\(\alpha \in (0,1)\)来控制目标开销: \[ C_{target} = C_{min} + \alpha * (C_{max}-C_{min}) \]

《Resolution Adaptive Networks for Efficient Inference》

分辨率自适应网络,和多尺度类似,简单的,预测置信度高的提前退出,复杂的,预测置信度低的继续执行,并且逐步使用更高分辨率的图片采样结果

具体过程:

  1. 用一个小网络对样本用小分辨率进行分类,如果置信度够高,则退出网络
  2. 否则将输出特征和更大分辨率图片输入到下一个网络中
  3. 重复上述,直到经历了所有网络或置信度达到要求

其中,当前网络生成的特征除了输入到下一个模块,还会输入到更高的分辨率中,从而重复利用特征,充分利用计算资源。

《Dynamic Resolution Network》

像是上面的《Resolution Adaptive Networks for Efficient Inference》和《Dynamic Feature Pyramid Networks for Object Detection》的综合体,使用两个部分来完成动态分辨率网络的过程。一个是分辨率预测器,用于确定要图片对应的分辨率,另一个是原来的分类器,用于对确定分辨率图片进行分类。

分辨率预测器具体方法:

  1. 和RCNN类似,提前确定一些候选分辨率
  2. 然后使用一个小型神经网络来选择要使用的分辨率,类似于门函数
  3. 然后将图片缩放成对应的分辨率大小,再输入到分类器中
  4. 此外,由于不同分辨率的图片通常具有不同的统计量,不便于在BN层时进行统计计算,所以作者在分类器中设置了多个不同的BN,每个BN对应一个候选分辨率,从而能够在不引入太多计算量和参数量的情况下,考虑不同分辨率的数据分布。

由于在分辨率预测器中存在从预测的连续输出到离散的分辨率选择过程,存在不可微问题,所以采用了Gumbel Softmax trick来使得离散选择在反向传播过程中可微;

离散的候选分辨率选择one_hot值\(h\)为: \[ h=\begin{align} \rm one\_hot \end{align}[(\arg\max_j(\log p_{r_j}+g_j))] \] 其中\(p_r=[p_{r_1},p_{r_2},...,p_{r_m}]\)表示候选分辨率的概率,\(g_j\)Gumbel noise \[ g_j=-\log(-\log u), \quad u\sim U(0,1) \] 在训练过程中,one-hot操作的可以通过Gumbel Softmax函数估计 \[ h_j=\frac{\exp (\log(\pi_j)+g_j)/\tau}{\sum_{j=1}^m\exp((\log(\pi_j)+g_j/\tau))} \]