mish激活函数

 

直接看Mish的代码会更简单一点,简单总结一下,Mish=x * tanh(ln(1+e^x))。

其他的激活函数,ReLU是x = max(0,x),Swish是x * sigmoid(x)。

Mish激活函数无边界(即正值可以达到任何高度)避免了由于封顶而导致的饱和。理论上对负值的轻微允许允许更好的梯度流,而不是像ReLU中那样的硬零边界。

最后,可能也是最重要的,目前的想法是,平滑的激活函数允许更好的信息深入神经网络,从而得到更好的准确性和泛化。

尽管如此,我测试了许多激活函数,它们也满足了其中的许多想法,但大多数都无法执行。这里的主要区别可能是Mish函数在曲线上几乎所有点上的平滑度。

这种通过Mish激活曲线平滑性来推送信息的能力如下图所示,在本文的一个简单测试中,越来越多的层被添加到一个测试神经网络中,而没有一个统一的函数。随着层深的增加,ReLU精度迅速下降,其次是Swish。相比之下,Mish能更好地保持准确性,这可能是因为它能更好地传播信息:

 

 

mish函数具有以下几个特点:1、无上限,但是有下限;2、光滑;3、非单调,接下来文章介绍了下mish函数有什么优点

1、没有上限,这样可以保证没有饱和区域,因此在训练过程中不会有梯度消失的问题,这个和relu后面的激活函数一样

2、有下限的话能够保证具有一定的regularization effect,这对于神经网络训练来说是一个很好的特性

3、非单调性,这个在swish里面也强调过,文章说这种特性能够使得很小的负input在保持负output的同时也能够 improves expressivity and gradient flow(有些我觉得不太会翻译的,就保留原单词了),这里给了一张图,左边是激活函数输入的分布,右边是激活函数输出的分布,图不是很清楚,但是主要想说明能够在输入较小负input的时候可以放大幅度,但是较大负input的时候就会把他变小,这里我理解主要好处是输入较小负数的时候往往梯度回传也会很小,这样会导致收敛较慢,但是如果输入较大负数的时候不缩小的话,又容易梯度爆炸吧

4、光滑性,这个主要是相比relu的,relu在0点处不光滑,会在实际优化中遇到一些求解的问题,当然这个应该还是和具体算法有关,大部分我们就把relu=0的时候梯度也变成0了,然后文章继续提到mish的光滑的特性使得在求解和模型泛化性方面相比其他激活函数表现要优良,我理解这也是他最大的创新改进点,他给了一个通过五层初始化的网络输出的landscape,可以看到relu这个在坐标轴方向看非常不平滑,这样会影响收敛的速度,从这个图看swish和mish表现还蛮相似的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值