激活函数鼻祖sigmoid虽然现在感觉相当LJ,但它的非线性表达能力其实很好,求导性质也不错( e x e^x ex求导仍是自己),最大的问题是饱和导致的梯度弥散。而之后流行的Relu激活函数,避免了饱和问题,但非线性表达能力其实很弱,因此需要堆叠多层网络,而且求导性质也不好( y = x y=x y=x二次求导后变为0了)。
Swish是谷歌在17年提出的一个激活函数,形式非常简单,几乎就是sigmoid和Relu的拼凑,具备无上界有下界、平滑、非单调的特性,性能在总体上优于Relu。
y
=
x
∗
s
i
g
m
o
i
d
(
β
x
)
y=x*sigmoid(\beta x)
y=x∗sigmoid(βx)
既然Relu和sigmoid能发生故事,那咱这小脑袋瓜一机灵,自然会想到sigmoid的闺蜜tanh,想法子把Relu和tanh也凑合凑合?呸!Relu这个渣男……
然后就有了他俩的结晶:Mish
M
i
s
h
=
x
∗
t
a
n
h
(
l
n
(
1
+
e
x
)
)
Mish = x*tanh(ln(1+e^x))
Mish=x∗tanh(ln(1+ex))
emmm,这相似程度,不亏是闺蜜。
测试效果Mish更好,Mish也成为YOLOv4骨干网络的激活函数,不过被很快出现的YOLOv5弃用了。
哼,渣男和闺蜜不会有好下场的。