【激活函数合集】盘点当前最流行的激活函数及选择经验

2020-02-24  本文已影响0人  GiantPandaCV

前言

在阅读DarkNet源码的时候发现作者定义了大量从古至今流行的损失函数,本着科普的态度我打算做一个全面的总结,所以就有了这篇文章。

激活函数有什么用?

提到激活函数,最想问的一个问题肯定是它是干什么用的?激活函数的主要作用是提供网络的非线性表达建模能力,想象一下如果没有激活函数,那么神经网络只能表达线性映射,此刻即便是有再多的隐藏层,其整个网络和单层的神经网络都是等价的。因此正式由于激活函数的存在,深度神经网络才具有了强大的非线性学习能力。接下来我们就来盘点一下当前有哪些流行的激活函数吧,这是一件非常有意义的事,希望你能接着读下去。

1. Sigmoid激活函数

Sigmoid激活函数

2. TanH

Tanh激活函数和它的导数

3. ReLU

ReLU激活函数

4. Leaky ReLU & PReLU

Leaky ReLU Leaky ReLU激活函数

5. ReLU6

6. ELU

ELU表达式 ELU激活函数

7. SoftSign

Softsign激活函数和它的导数

8. SoftPlus

SoftPlus激活函数及导数

9. SELU

f(x)=\lambda \begin{cases} \alpha(e^x-1) & x \le 0 \\ x & x>0 \end{cases}

10. Swish

Swish激活函数 Swish激活函数导数

11. Maxout

神经网络

激活值out = f(W*X+b),其中f是激活函数,*在这里代表內积。然后X=(x1,x2)^T,W=(w_1,w_2)^T。那么当我们对i+1层使用Maxout(设定k=5)然后再输出的时候,情况就发生了改变。 网络就变成了:

使用了Maxout后的网络

此时网络形式上就变成上面的样子,用公式表现出来就是:
z1 = W1*X+b1
z2 = W2*X+b2
z3 = W3.X+b3
z4 = W4.X+b4
z5 = W4.X+b5
out = max(z1,z2,z3,z4,z5)
也就是说第i+1层的激活值计算了5次,可我们明明只需要1个激活值,那么我们该怎么办?其实上面的叙述中已经给出了答案,取这5个的最大值来作为最终的结果。

可以看到采用Maxout的话参数个数也增加了k倍,计算开销会增大。

12. Mish

MisH激活函数

激活函数尝试经验

附录

推荐阅读


欢迎关注GiantPandaCV, 在这里你将看到独家的深度学习分享,坚持原创,每天分享我们学习到的新鲜知识。( • ̀ω•́ )✧

有对文章相关的问题,或者想要加入交流群,欢迎添加BBuf微信:

在这里插入图片描述
上一篇 下一篇

猜你喜欢

热点阅读