![ef49b0442d9f83ace48f53dc1e1635f2.png](https://i-blog.csdnimg.cn/blog_migrate/68f755002bb3a09a3d9a6ce5a7f4fe34.jpeg)
AReLU: Attention-based-Rectified-Linear-Unit
AReLU: Attention-based-Rectified-Linear-Unitarxiv.org densechen/AReLUgithub.com![1eedcc526e0145a5b52ef9228ec020ec.png](https://i-blog.csdnimg.cn/blog_migrate/ba539c6874117cc220a09c5ec40c0b52.png)
摘要
近年来,相比于早期不可学习的激活函数(Sigmoid,Tanh,ReLU...),大家发现能够动态学习的新一代的激活函数(PReLU,SLAF,PAU...)往往在训练过程中可以使网络学习到更加丰富的特征,从而提高网络性能。同时,注意力机制的使用,也使得网络性能得到了进一步的提升。在本文中,作者提出了一种新的注意力模型ELSA(ELement-wise Sign-based Attention)。相比于传统较为复杂的注意力模型,ELSA的最大特点是其仅仅只包含两个可学习参数,并且计算过程十分简便。另外,作者巧妙的将ELSA与ReLU函数紧密的结合在一起,提出了AReLU函数:一种基于注意力机制的可动态学习的线性整流单元。相比于其他激活函数,该函数的最大特点是:其能够保证网络在很小学习率下的快速收敛。这个良好的性质,对于很多特殊的任务(例如迁移学习)有着非常关键的应用。
方法
- 注意力机制
![66b0ba4eac57c334217ee5ddfc8bad88.png](https://i-blog.csdnimg.cn/blog_migrate/f57b0f71f76107be4f1455fbb0bb6720.jpeg)
根据注意力机制中不同的作用粒度,作者将目前常见的注意力机制划分成三种类型。其中 Element-wise attention 拥有着最精细的作用粒度。
2. ELement-wise Sign-based Attention (ELSA)
作者提出了一种新的细粒度的注意力机制模型,并称之为基于符号的注意力机制。
![89a28f6263e3925a874eda199df8fd2e.png](https://i-blog.csdnimg.cn/blog_migrate/7dc22e6fa5b5e3710927610f918c9f72.png)
其中,C是剪裁操作,作用是将alpha的值限制在[0.01, 0.99]之间,sigmoid函数则是为了将beta的值限制在[0,1]之间。该注意力机制,会根据当前输入的符号值,来给出合理的注意力值。相比于现有的注意力模块,该模块增加的计算开销可以忽略不计,同时其引入的额外参数也仅仅只有alpha和beta两个参数。即便如此简单的一个注意力模块,作者将它和ReLU函数合并后,却发挥了意想不到的作用。
3. AReLU: Attention-based Rectified Linear Units
首先,为了更好的将ELSA和传统的函数层表达形式统一起来,作者将ELSA改写成如下形式:
![246f0c80facb742fc927d7b308d540d4.png](https://i-blog.csdnimg.cn/blog_migrate/ec2bf3193b9174ab4b9f84a2f7693e66.png)
同时,作者给出了ReLU函数的表达形式:
![eb4944a382ff9ac14a9bcab39d154f84.png](https://i-blog.csdnimg.cn/blog_migrate/58d24d33d5d2e58600b12b43225ae4fa.png)
然后,将二者相加:
![18df734fcc845e5dc6634d105cbb0520.png](https://i-blog.csdnimg.cn/blog_migrate/c78e0e941d43794ff2fc7dc289539cb4.png)
就得到了AReLU的表达形式。在这里,相加的操作,类似于将ELSA作为残差结构加入到原有的ReLU中。
从AReLU的梯度推导中:
![d0d2a801b7e9074cdb89e05e8995f91b.png](https://i-blog.csdnimg.cn/blog_migrate/64cdf45a834f0b5e53103c2e999299eb.png)
我们可以直观的看出,AReLU函数会对不同数据的梯度产生放大和缩小两种效果。而放大部分恰好是输入中大于零的部分,也就是传统激活函数中被激活的部分,而缩小的部分,恰好是输入数据中小于零的部分,也就是传统激活函数中被认为是没有激活的部分。正是这个非常好的特性,使得AReLU函数可以使网络在训练过程中更快的达到一个更好的状态,从而整体上大幅度加快了网络的收敛速度。
实验
1.alpha、beta的初始化参数选择
![646263688860a2ddec947803c3322ea5.png](https://i-blog.csdnimg.cn/blog_migrate/8726c573722f7bf854192d79808f3454.jpeg)
通过简单的实验,作者认为,AReLU函数自身对alpha、beta的初始化参数并不敏感。但是选择一个较为合理的值,可能会有助于在训练过程中得到更好一些的效果。
2. 对比实验
原文中作者做了许多的对比实验,几乎比较了现有的所有激活函数。
![de7836c01dbc845b6b7a415d9bf4a4cf.png](https://i-blog.csdnimg.cn/blog_migrate/ae682af4f11855201fecd9bfade5e665.jpeg)
从上图中我们可以很明显的感受到AReLU在学习率较小的时候,训练网络所带来的巨大优势。
同时,作者也展示了AReLU在迁移学习中的应用。
![26cc0541c938f18c374bab14435c0421.png](https://i-blog.csdnimg.cn/blog_migrate/1adf213fea5eafa1342d8d6e739d31eb.jpeg)
另外为了更好的突出ELSA的效果,作者使用gradcam方法,可视化了AReLU在CIFAR100上的实验效果。
![c6462b4ad0cae31906088ac15e580376.png](https://i-blog.csdnimg.cn/blog_migrate/c8174608460ac5803bdea6d4e5f222df.jpeg)
可以明显的感受到,整合了ELSA的AReLU函数,相比于ReLU函数,网络更加关注输入数据中和目标相关的区域。
另外作者也简单展示了AReLU函数在处理分割任务时的表现。
![ab85b043cd8860f8eaa246ed9ae5be8f.png](https://i-blog.csdnimg.cn/blog_migrate/7ec85af1a98e7dfcf5c204e25d6f5a5a.jpeg)
还有许多实验结果,可以参考原文,这里不一一列出。(该项目已开源。)