Dynamic ReLU 解读

时间:2024-04-09 21:42:46

论文地址:https://arxiv.org/pdf/2003.10027.pdf

这是Microsoft团队2020年发表的文章,提出动态relu**函数称之为DY-RELU,比普通的relu函数效果好。

简介:以前的relu不论是有参数的还是没用参数的都是静态的,本文提出动态relu,其参数(一个机能增强函数)由所有输入元素决定,其关键原理是DY-RELU编码全局上下文信息到它的机能增强函数中,并让其分段线性函数分别的适应。相比于静态RELU,DY-RELU只增加了很少的计算量但是显著的增强了其表征能力,尤其对于轻量级网络,在MobileNetV2上使用DY-RELU,只是简单的替换**函数,在ImageNet上的top1分类精度从72%提高到了76.2%但是计算量只增加了5%flops。

提出问题:**函数RELU应用很广泛,最近的很成功的网络都用到了它,但是无论是RELU还是它的变体Leaky-RELU还是PRELU,都是静态的,也即是说,无论它们的输入是什么数据分布,它们都只按特定的规律进行变化。**函数到底需不需要适应它的输入数据呢?也即是说,**函数需不需要根据其输入数据的不同调整它的变换规律呢?本文将详细讨论。

解决方案:本文提出的DY-RELU其实就是一个分段函数,如图1。

Dynamic ReLU 解读
图1:DY-RELU结构

DY-RELU根据输入的数据生成一个函数,根据这个函数来决定这个分段线性函数的两个斜率。

本文提出了DY-RELU的三种形式:(a) spatial and channel-shared DY-ReLU-A (b) spatial-shared and channel-wise DY-ReLU-B (c) spatial and channel-wise DY-ReLU-C这三种形式分别使用不同的任务,b和c适用于分类任务,作为骨干网络,c适用作为头网络。下图是三种函数形式的用法和结构,图中的符号a、b代表分段函数的两段斜率。

Dynamic ReLU 解读
a、b、c、三种形式的结构

下面是DY-ReLU和之前的**函数相比的异同点。

 

Dynamic ReLU 解读
DY-ReLU与之前的**函数比较

实验结果:

Dynamic ReLU 解读
一些轻量级网络DY-ReLU应用前后对比
Dynamic ReLU 解读
DY-ReLU和之前的**函数参数量的对比

我的思考:结果可以看出,DY-ReLU应用之后网络的精确度提升了不少,参数却没增加多少,是一个实用的模块。本文作者在文中说到,现在的轻量级网络设计NAS是主流,作者的目的就是设计一个更好的**函数模块以便网络构架搜索的时候可以作为一个构成基本单元。

 

这一篇文章的证明部分没用看懂,结尾也没有细看,以上文章如有错误请大家指正。