Hard Swish激活函数

本文介绍了两种HardSwish激活函数的版本,一个是移动设备优化的分段线性形式,另一个是带可训练参数的Hard-Swish,强调其在性能提升和计算效率方面的优势。通过比较与Swish的相似性和应用领域的优势,展示了这些激活函数在神经网络中的实用价值。
摘要由CSDN通过智能技术生成

第一个版本Hard Swish激活函数

文章链接:Searching for MobileNetV3
年份:2019

简介

Swish激活函数代替ReLU,显著提高了神经网络的准确性,具体定义为: S w i s h ( x ) = x ⋅ σ ( x ) Swish(x) = x \cdot \sigma(x) Swish(x)=xσ(x), 虽然这种非线性提高了精度,然而sigmoid函数是由指数构成的,在移动设备上的计算成本要高得多。Sigmoid激活函数可以用分段线性函数HardSigmoid拟合
H a r d s i g m o i d ( x ) = { 0 , x ≤ − 3 1 , x ≥ 3 x 6 + 1 2 , o t h e r w i s e \begin{aligned}Hardsigmoid(x) = \begin{cases} 0, &x\le -3 \\ 1 ,&x\ge 3\\\frac{x}{6}+\frac{1}{2}, & otherwise\\\end{cases}\end{aligned} Hardsigmoid(x)= 0,1,6x+21,x3x3otherwise由此,用Hardsigmoid替代sigmoid可以大大减少运算成本,由此诞生了HardSwish,具体的公式为:
H a r d S w i s h ( x ) = x ⋅ H a r d S i g m o i d ( x ) = x ⋅ R e L U 6 ( x + 3 ) 6 = x ⋅ { 1 , x ≥ 3 x 6 + 1 2 , − 3 < x < 3 0 , x ≤ − 3 Hard Swish(x) = x \cdot Hard Sigmoid(x)= x\cdot \frac{ReLU6(x+3)}{6}= x\cdot \begin{cases} 1, &x\ge3\\ \frac{x}{6}+\frac{1}{2}, &-3<x<3\\ 0, &x\le -3\end{cases} HardSwish(x)=xHardSigmoid(x)=x6ReLU6(x+3)=x 1,6x+21,0,x33<x<3x3
该函数的对x的导数为:
H a r d S w i s h ′ ( x ) = { 1 , x ≥ 3 x 3 + 1 2 , − 3 < x < 3 0 , x ≤ − 3 Hard Swish^\prime(x) = \begin{cases} 1, &x\ge3\\ \frac{x}{3}+\frac{1}{2}, &-3<x<3\\ 0, &x\le -3\end{cases} HardSwish(x)= 1,3x+21,0,x33<x<3x3
本文的参数均为常量,并与最初的平滑版本相匹配。经过试验发现该函数与Swish的性能几乎没有明显的差别,但从部署角度来看有多种优势,分段函数可以减少内存访问的数量,从而大幅减低延迟成本。具体的函数图像如下图:
在这里插入图片描述
不仅仅只有一种HardSwish版本另一个版本如下:

第二个版本的HardSwish激活函数

简介

文章链接:Semantic Segmentation of Satellite Images using a Modified CNN with
Hard-Swish Activation Function

年份:2019

简介:

激活函数的选择在神经网络的训练和测试动力学中起着重要的作用。介绍了一种与Swish激活函数密切相关的新型激活函数Hard-Swish。它被定义为
H a r d S w i s h = 2 x ⋅ H a r d S i g m o i d ( β x ) = 2 x ⋅ m a x ( 0 , m i n ( 1 , ( 0.2 β x + 0.5 ) ) ) HardSwish = 2x\cdot HardSigmoid(\beta x) = 2x\cdot max(0, min(1, (0.2\beta x+0.5))) HardSwish=2xHardSigmoid(βx)=2xmax(0,min(1,(0.2βx+0.5)))
可以写成分段函数的形式:
H a r d S w i s h = 2 x ⋅ { 1 , x ≥ 5 2 β 0.2 β x + 0.5 , − 5 2 β < x < 5 2 β 0 , x ≤ − 5 2 β HardSwish = 2x\cdot\begin{cases}1, &x\ge\frac{5}{2\beta}\\ 0.2\beta x+0.5, &-\frac{5}{2\beta}<x<\frac{5}{2\beta}\\ 0, &x\le-\frac{5}{2\beta}\end{cases} HardSwish=2x 1,0.2βx+0.5,0,x2β52β5<x<2β5x2β5
其中 β \beta β是可训练参数或自定义参数。当 β → ∞ \beta\to \infty β时,HardSwish变成分量为0或1的阶跃函数。具体的函数图像如下图在这里插入图片描述
HardSwish对x的导数的图像为:
在这里插入图片描述
HardSwish平滑地在ReLU和线性函数之间进行了非线性差值。 β \beta β越大,负区域的最小值越小,最小值为 − 5 8 β -\frac{5}{8\beta} 8β5。HardSwish的属性与Swish相似,因为它们都是上下无界的,它是非单调的。该函数与Swish相比,它的计算速度更快。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值