智源导读:本文主要介绍港科大和旷视科技合作,被CVPR2021接收的一篇文章:Activate or Not: Learning Customized Activation。

论文链接:https://arxiv.org/pdf/2009.04759.pdf

代码链接:https://github.com/nmaac/acon

作者:马宁宁,港科大,智源社区动态神经网络研究组成员

本文提出一种新的激活函数ACON (activate or not),可以自适应地学习激活与否。

ReLU是最常见的激活函数,最近NAS搜到的Swish在各种SOTA网络结构中逐渐取代ReLU。有趣的是,我们发现虽然两者形式看起来很不一样,但Swish可以解释为ReLU的一种平滑近似。基于这个发现,本文进一步分析ReLU的一般形式Maxout系列激活函数,从而得到Swish的一般形式、简单且有效的ACON激活函数。

本文在多个任务上验证了此方法的涨点性能和泛化性能(例如在MobileNet-0.25和ResNet-152上,分别将ImageNet准确率提高了6.7%和1.8%),这表明ACON对已有的激活函数中是一种有效的替代方法。

01

ReLU和Swish的关系

前面提到,NAS在现代激活函数方面取得了成功,NAS搜索到的Swish已经在EfficientNet等许多SOTA模型中已经成为默认配置,但如何解释Swish背后的原理呢?(SENet也是近年的SOTA标配,我们在另一个工作 WeightNet中也做过一些有意思的探讨)。

本文的一个目标是提出一个新的视角,去解释这个搜索结果背后的机制,并研究更有效的激活功能。

下面会详细讲解如何把Swish理解为ReLU的一种平滑近似。

对于一个最大函数  , 我们可以通过一个简单而通用的近似公式来获取他的平滑近似:

这里引入了一个  ,它控制着  的平滑程度:

当 时, (非线性)
当 时, 算术平均 (线性)

从下面的示例图可以更形象的看出  的作用:

图注:ACON-C应用于具有不同β值的‘1.2x’和‘−0.8x’函数,在非线性和线性(算术平均值)之间切换。非常大的β可以近似最大函数(非线性)和β接近零可以近似平均函数(线性)(红色虚线)。

对于公式(1),我们仅考虑n=2的情况,可以推导成下面用sigmoid来表示的形式,其中用 分别代表这两项:

我们发现上面的形式看起来仍然很复杂,但当我们把  代入合适的值,有意思的事情就发生了:

我们发现,当  时, 恰好是 ReLU 的表达式,而又恰好是 Swish 的表达式。于是,我们可以把 Swish 解释为 ReLU 的这样一种平滑近似。

02

ReLU的一般式和Swish的一般式的关系

前面给出了一种新的视角解释了 ReLU 和 Swish 的关系,下面本文对 ReLU 的一般式 Maxout 做出同样的平滑近似,便得到了一簇新的激活函数,即 ACON 系列激活函数。其中 ReLU 是 Maxout 的一种特殊形式,Swish 是 ACON 的一种特殊形式。

我们把  代入不同的值,得到上表中的不同形式,我们着重分析ACON-C,计算它的导数:

看起来会新增加额外的参数 , 我们画出下图来更直观的理解它。可以发现在一阶导中,控制着其渐进上下界的速度,而 则控制着上下界的值,这一点是Swish所欠缺的,后面的实验也会证明 的重要性。

验证ACON-C中p1,p2的涨点性能,即使在大模型Res152上也有1.1的涨点

03

ACON 的更多特例 ACON-FReLU

前面对Maxout中  的不同取值做了分析。最近专门针对视觉任务的新激活函数 FReLU (Funnel Activation for Visual Recognition) 也是Maxout的一种特例,本文设  后,得到了 ACON-FReLU,并且基于此模块,设计了一个仅由 Conv1x1 和 ACON-FReLU 组成的轻量级block:

以此 block 为基础搭建了 Toy Funnel Network (TFNet),来验证 ACON-FReLU 的有效性:

和同样不含SE模块的轻量级网络相比可以看到明显优势

04

Meta-ACON

前面对  的不同变体着重做了分析,但前面提到  也同样重要因为其控制了激活程度。然而,从实验结果来看,在 Swish 的原始文章中也提到, 作用不大,即使  固定为1(Swish-1),也能取得差别不大的性能。

这与我们前面对  的分析相违背,于是,本文对  用非常简单直接的小网络结构去生成,即显式地学习激活程度而不仅仅是把  作为一个参数,这样就解决了  效果不大的问题:

下面在不同任务上展示此方法的有效性,可以看到,Meta-ACON 取得了相比于 SENet 几乎两倍的涨点:

————————————

在大模型和小模型都能有非常显著的涨点,且随着模型变大,涨点效果没有明显减弱

————————————

————————————

从学习曲线可以看到ACON-C相比于Swish的优势在于后期仍能有提升,Meta-ACON则效果跟为显著

————————————

在其他任务上的泛化性能

更多细节请参考原文和代码。

自适应激活函数 ACON:统一ReLU和Swish的新范式相关推荐

  1. CVPR 2021 | 自适应激活函数ACON: 统一ReLU和Swish的新范式

    作者丨Ningning MA@知乎(已授权) 来源丨https://zhuanlan.zhihu.com/p/363274457 编辑丨极市平台 [导读]本文提出了一种新的激活函数ACON,可以自适应 ...

  2. CVPR 2021 | 自适应激活函数ACON:统一ReLU和Swish的新范式

    ©作者|马宁宁 学校|香港科技大学博士生 研究方向|计算机视觉 本文提出一种新的激活函数 ACON (activate or not),可以自适应地学习激活与否. ReLU 是最常见的激活函数,最近 ...

  3. 深度!用“极速统一”,开启金融行业数据分析新范式

    作者:51CTO 赵立京 数据库作为金融信息系统的核心基础设施,历经数十年发展,为金融行业转型升级提供了有力的技术支撑.同时, 以银行为代表的金融行业是数据库销售额占比最高的市场,也是对数据库技术依赖 ...

  4. 激活函数--Sigmoid,tanh,RELU,RELU6,Mish,Leaky ReLU等

    激活函数 目前自己使用比较多的激活函数RELU, RELU6; LeakyReLU; SELU; Mish :激活函数看:计算量:准确率: 大多数激活函数pytorch里有已经包装好了: Non-li ...

  5. 机器学习中的数学——激活函数(八):Swish函数

    分类目录:<机器学习中的数学>总目录 相关文章: · 激活函数:基础知识 · 激活函数(一):Sigmoid函数 · 激活函数(二):双曲正切函数(Tanh函数) · 激活函数(三): 线 ...

  6. DL之DNN优化技术:采用三种激活函数(sigmoid、relu、tanh)构建5层神经网络,权重初始值(He参数初始化和Xavier参数初始化)影响隐藏层的激活值分布的直方图可视化

    DL之DNN优化技术:采用三种激活函数(sigmoid.relu.tanh)构建5层神经网络,权重初始值(He参数初始化和Xavier参数初始化)影响隐藏层的激活值分布的直方图可视化 目录

  7. 三种激活函数——Sigmoid,Tanh, ReLU以及卷积感受野的计算

    1. 三种激活函数--Sigmoid, Tanh, ReLU 1.1 Sigmoid 1.1.1 公式 S ( x ) = 1 1 + e − x S(x) = \frac{1}{1 + e^{-x} ...

  8. 激活函数、Sigmoid激活函数、tanh激活函数、ReLU激活函数、Leaky ReLU激活函数、Parametric ReLU激活函数详细介绍及其原理详解

    相关文章 梯度下降算法.随机梯度下降算法.动量随机梯度下降算法.AdaGrad算法.RMSProp算法.Adam算法详细介绍及其原理详解 反向传播算法和计算图详细介绍及其原理详解 激活函数.Sigmo ...

  9. StarRocks 3.0 极速统一的湖仓新范式

    2023 年 4 月,StarRocks 3.0 版本正式发布,正式开启了 StarRocks 极速统一的新篇章.从 OLAP 到 Lakehouse,从存算一体到存算分离,从 ETL 到 ELT,经 ...

最新文章

  1. 用Django内置form组件实现注册
  2. 新同事说工厂模式有啥用,别学了
  3. HBase数据压缩编码探索
  4. Heritrix 3.1.0 源码解析(八)
  5. 用MATLAB编程正弦稳态相量图,matlab课程设计--利用MATLAB对线性电路正弦稳态特性分析...
  6. 机器学习Tensorflow基础知识、张量与变量
  7. 2017.3.31 棋盘制作 失败总结
  8. pytorch中lr_scheduler的使用
  9. Oracle CRS/ASM/RAC版本兼容对应表
  10. 云桌面服务器资源计算机,桌面云服务器资源计算机
  11. hexo+github
  12. Linux_Ubuntu快捷键截屏
  13. 一周“金”榜:CSDN创作者收益周排行榜(1月3日到1月9日)
  14. 微信小游戏实战--cocos creator实现wordle游戏(二)
  15. 各进制转换成十进制的方法
  16. Access数据库文件HeroDB.MDB用什么工具可以打开呢?
  17. 微服务中自定义gateway网关过滤器
  18. 12306系统架构,凭什么支撑每天如洪水般的各种抢票插件?
  19. LittleVGL踩坑指南03:Arduino下显示和触摸驱动配置(TFT_eSPI)
  20. ADI Blackfin DSP处理器-BF533的开发详解20:4.3寸LCD液晶屏的设计与应用(含源码)

热门文章

  1. mysql get_mysql GET DIAGNOSTICS 语法
  2. python之路_Python之路【第二篇】:Python基础(一)
  3. java 验证码图片识别_JavaSE图像验证码简单识别程序详解
  4. git钩子放服务器_服务器git钩子
  5. oracle监听显示未成功_理解 oracle 的 lsnrctl status
  6. java 关闭oracle连接_Java应用中Oracle连接不关闭
  7. php 代码规范 工具,PHP工具篇:PHPStorm IDE使用CodeSniffer代码规范化管理
  8. 【c语言】蓝桥杯算法训练 完数
  9. 从互联网到物联网,网红“天使之橙”的技术哲学
  10. 行业新价值 看物联网的那些“后续力量”