常用激活函数解析

sigmoid 和 ReLU

s i g m o i d ( x ) = 1 1 + e − x sigmoid(x) = \frac{1}{1+e^{-x}} sigmoid(x)=1+ex1

s i g m o i d sigmoid sigmoid激活函数的问题是随着输入趋近 ± ∞ \pm\infty ±时,梯度会迅速变为0,梯度回传时,浅层的参数无法得到有效更新。

R e L U ( x ) = m a x ( 0 , x ) ReLU(x) = max(0, x) ReLU(x)=max(0,x)
R e L U ReLU ReLU在x>0时,梯度恒为1,不会存在梯度消失问题。在x<0时,梯度为0,不再反传,可类似 d r o p o u t dropout dropout引入更多非线性。加入模型后,训练稳定性和效果均优于 s i g m o i d sigmoid sigmoid

ReLU 和 ReLU6

R e L U 6 ( x ) = m i n ( 6 , m a x ( 0 , x ) ) ReLU6(x) = min(6, max(0, x)) ReLU6(x)=min(6,max(0,x))
限制了 R e L U ReLU ReLU的最大输出不超过6,可以增强端上小模型,低精度推理时的鲁棒性。

sigmoid 和 hard sigmoid

h a r d _ s i g m o i d ( x ) = ( R e L U ( x ) + 3 ) / 6 hard\_sigmoid(x) = (ReLU(x) + 3)/6 hard_sigmoid(x)=(ReLU(x)+3)/6
可近似 s i g m o i d sigmoid sigmoid函数,计算量更低。

swish 和 hard swish

s w i s h ( x ) = x ⋅ s i g m o i d ( β x ) swish(x) = x\cdot sigmoid(\beta x) swish(x)=xsigmoid(βx)
h a r d _ s w i s h ( x ) = x ⋅ ( R e L U 6 ( x ) + 3 ) / 6 hard\_swish(x) = x \cdot (ReLU6(x) + 3)/6 hard_swish(x)=x(ReLU6(x)+3)/6

s w i s h swish swish中的 s i g m o i d sigmoid sigmoid操作,在端上计算量过重,于是用 h a r d _ s i g m o i d hard\_sigmoid hard_sigmoid来近似。 h _ s w i s h h\_swish h_swish激活操作在 m o b i l e n e t v 3 mobilenetv3 mobilenetv3中被使用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值