Dynamic ReLU:根据输入动态确定的ReLU

这是我最近才看到的一篇论文,它提出了动态ReLU (Dynamic ReLU, DY-ReLU),可以将全局上下文编码为超函数,并相应地调整分段线性激活函数。与传统的ReLU相比,DY-ReLU的额外计算成本可以忽略不计,但表示能力明显增强,并且实现简单,所以可以非常简单的对我们现有的模型进行修改。

Dynamic ReLU (DY-ReLU)

Dynamic ReLU:根据输入动态确定的ReLU_第1张图片

对于给定的输入向量(或张量)x,DY-ReLU被定义为具有可学习参数θ(x)的函数fθ(x)(x),该参数适应于输入x,它包括两个功能:

超函数θ(x):用于计算激活函数的参数。

激活函数fθ(x)(x):使用参数θ(x)生成所有通道的激活。

1、函数定义

设传统的或静态的ReLU为y = max(x, 0)。ReLU可以推广为每个通道c的参数分段线性函数。

其中coeffcients (akc, bkc)是超函数(x)的输出,如下:

其中K是函数的个数,C是通道的个数。论文中K=2。

2、超函数θ(x)的实现

使用轻量级网络对超函数进行建模,这个超函数类似于SENet中的SE模块(稍后会介绍)。

输出有2KC个元素,对应于a和b的残差。2σ(x)-1用于对-1到1之间的残差进行归一化,其中σ(x)表示s型函数。最终输出计算为初始化和残差之和,如下所示:

其中λ是标量,这个公式也就是我们上面的图

3、与先前研究的关系

Dynamic ReLU:根据输入动态确定的ReLU_第2张图片

可以看到DY-ReLU的三种特殊情况相当于ReLU、Leaky ReLU和PReLU。

4、DY-ReLU的变体

Dynamic ReLU:根据输入动态确定的ReLU_第3张图片

DY-ReLU-A:激活函数是空间和通道共享的。

DY-ReLU-B:激活函数是空间共享和通道相关的。

DY-ReLU-C:激活的是空间和通道分开的。

结果展示

1、消融研究

Dynamic ReLU:根据输入动态确定的ReLU_第4张图片

所有三种变化都比基线有所改善,但通道分开的DY-ReLU(变化B和C)明显优于通道共享的DY-ReLU(变化A)。

所以根据上面结果,使用DY-ReLU-B进行ImageNet分类,使用DY-ReLU-C进行COCO关键点检测。

2、ImageNet分类

Dynamic ReLU:根据输入动态确定的ReLU_第5张图片

使用MobileNetV2 (×0.35和×1.0), 用不同的激活函数代替ReLU。所提出的方法明显优于所有先前的工作,包括具有更多计算成本的Maxout。这表明DY-ReLU不仅具有更强的表示能力,而且计算效率高。

Dynamic ReLU:根据输入动态确定的ReLU_第6张图片

上图绘制了5万张验证图像在不同区块(从低到高)的DY-ReLU输入输出值。可以看到学习到的DY-ReLU在特征上是动态的,因为对于给定的输入x,激活值(y)在一个范围内(蓝点覆盖的范围)变化。

下图分析DY-ReLU中两段之间的夹角(即斜率差|a1c-a2c|)。激活函数在较高水平上具有较低的弯曲。

3、COCO关键点估计

Dynamic ReLU:根据输入动态确定的ReLU_第7张图片

当使用MobileNetV3作为骨干时,删除SENet模块,使用DY-ReLU替代ReLU和h-Swish后,结果也有提高。

总结

可以看到,只是使用DY-ReLU替换现有的激活函数,模型的表现明显优于基线模型。

这是ECCV2020的一篇论文,我们这里直接贴出paperswithcode的地址,这样可以直接拿来进行使用

https://avoid.overfit.cn/post/8db206f03cd54167b9eb2d06ebaffc6b

作者:sh-tsang

你可能感兴趣的:(Dynamic ReLU:根据输入动态确定的ReLU)