前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Dynamic ReLU:微软推出涨点神器!可能是最好的ReLU改进 | ECCV 2020

Dynamic ReLU:微软推出涨点神器!可能是最好的ReLU改进 | ECCV 2020

作者头像
Amusi
发布2020-09-23 16:49:07
7780
发布2020-09-23 16:49:07
举报
文章被收录于专栏:CVerCVer

本文转载自:晓飞的算法工程笔记

论文提出了动态ReLU,能够根据输入动态地调整对应的分段激活函数,与ReLU及其变种对比,仅需额外的少量计算即可带来大幅的性能提升,能无缝嵌入到当前的主流模型中

论文: Dynamic ReLU

  • 论文地址:https://arxiv.org/abs/2003.10027
  • 论文代码:https://github.com/Islanna/DynamicReLU

Introduction


  ReLU是深度学习中很重要的里程碑,简单但强大,能够极大地提升神经网络的性能。目前也有很多ReLU的改进版,比如Leaky ReLU和 PReLU,而这些改进版和原版的最终参数都是固定的。所以论文自然而然地想到,如果能够根据输入特征来调整ReLU的参数可能会更好。

  基于上面的想法,论文提出了动态ReLU(DY-ReLU)。如图2所示,DY-ReLU是一个分段函数

f_{\theta{(x)}}(x)

,参数由超函数

\theta{(x)}

根据输入

x

得到。超函数

\theta(x)

综合输入的各维度上下文来自适应激活函数

f_{\theta{(x)}}(x)

,能够在带来少量额外计算的情况下,显著地提高网络的表达能力。另外,论文提供了三种形态的DY-ReLU,在空间位置和维度上有不同的共享机制。不同形态的DY-ReLU适用于不同的任务,论文也通过实验验证,DY-ReLU在关键点识别和图像分类上均有不错的提升。

Definition and Implementation of Dynamic ReLU


Definition

  定义原版的ReLU为

y=max\{x, 0\}

x

为输入向量,对于输入的

c

维特征

x_c

,激活值计算为

y_c=max\{x_c, 0\}

。ReLU可统一表示为分段线性函数

y_c=max_k\{a^k_c x_c+b^k_c\}

,论文基于这个分段函数扩展出动态ReLU,基于所有的输入

x=\{x_c\}

自适应

a^k_c

,

b^k_c

  因子

(a^k_c, b^k_c)

为超函数

\theta(x)

的输出:

K

为函数数量,

C

为维度数,激活参数

(a^k_c, b^k_c)

不仅与

x_c

相关,也与

x_{j\ne c}

相关。

Implementation of hyper function

\theta(x)

  论文采用类似与SE模块的轻量级网络进行超函数的实现,对于大小为

C\times H\times W

的输入

x

,首先使用全局平均池化进行压缩,然后使用两个全连接层(中间包含ReLU)进行处理,最后接一个归一化层将结果约束在-1和1之间,归一化层使用

2\sigma(x) - 1

\sigma

为Sigmoid函数。子网共输出

2KC

个元素,分别对应

a^{1:K}_{1:C}

b^{1:K}_{1:C}

的残差,最终的输出为初始值和残差之和:

\alpha^k

\beta^k

a^k_c

b^k_c

的初始值,

\lambda_a

\lambda_b

是用来控制残差大小的标量。对于

K=2

的情况,默认参数为

\alpha^1=1

\alpha^2=\beta^1=\beta^2=0

,即为原版ReLU,标量默认为

\lambda_a=1.0

\lambda_b=0.5

Relation to Prior Work

  DY-ReLU的可能性很大,表1展示了DY-ReLU与原版ReLU以及其变种的关系。在学习到特定的参数后,DY-ReLU可等价于ReLU、LeakyReLU以及PReLU。而当

K=1

,偏置

b^1_c=0

时,则等价于SE模块。另外DY-ReLU也可以是一个动态且高效的Maxout算子,相当于将Maxout的

K

个卷积转换为

K

个动态的线性变化,然后同样地输出最大值。

Variations of Dynamic ReLU


  论文提供了三种形态的DY-ReLU,在空间位置和维度上有不同的共享机制:

DY-ReLU-A

  空间位置和维度均共享(spatial and channel-shared),计算如图2a所示,仅需输出

2K

个参数,计算最简单,表达能力也最弱。

DY-ReLU-B

  仅空间位置共享(spatial-shared and channel-wise),计算如图2b所示,输出

2KC

个参数。

DY-ReLU-C

空间位置和维度均不共享(spatial and channel-wise),每个维度的每个元素都有对应的激活函数

max_k\{a^k_{c,h,w} x_{c, h, w} + b^k_{c,h,w} \}

。虽然表达能力很强,但需要输出的参数(

2KCHW

)太多了,像前面那要直接用全连接层输出会带来过多的额外计算。为此论文进行了改进,计算如图2c所示,将空间位置分解到另一个attention分支,最后将维度参数

[a^{1:K}_{1:C}, b^{1:K}_{1:C}]

乘以空间位置attention

[\pi_{1:HW}]

。attention的计算简单地使用

1\times 1

卷积和归一化方法,归一化使用了带约束的softmax函数:

\gamma

用于将attention平均,论文设为

\frac{HW}{3}

\tau

为温度,训练前期设较大的值(10)用于防止attention过于稀疏。

Experimental Results

  图像分类对比实验。

  关键点识别对比实验。

  与ReLU在ImageNet上进行多方面对比。

  与其它激活函数进行实验对比。

  可视化DY-ReLU在不同block的输入输出以及斜率变化,可看出其动态性。

Conclustion


  论文提出了动态ReLU,能够根据输入动态地调整对应的分段激活函数,与ReLU及其变种对比,仅需额外的少量计算即可带来大幅的性能提升,能无缝嵌入到当前的主流模型中。前面有提到一篇APReLU,也是做动态ReLU,子网结构十分相似,但DY-ReLU由于

max_{1\le k \le K}

的存在,可能性和效果比APReLU更大。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-09-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 CVer 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Introduction
  • Definition and Implementation of Dynamic ReLU
    • Definition
      • Implementation of hyper function
        • Relation to Prior Work
        • Variations of Dynamic ReLU
          • DY-ReLU-A
            • DY-ReLU-B
              • DY-ReLU-C
                • Experimental Results
                • Conclustion
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档