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

前言

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

激活函数有什么用?

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

1. Sigmoid激活函数

  • 函数表达式:f(x)=\frac{1}{1+e^{-x}}
  • 函数图像:
Sigmoid激活函数
  • 导数:f'(x)=f(x)(1-f(x))
  • 优点:Sigmoid激活函数是应用范围最广的一类激活函数,具有指数形状,它在物理意义上最为接近生物神经元。另外,Sigmoid的输出是(0,1),具有很好的性质,可以被表示为概率或者用于输入的归一化等。可以看出,Sigmoid函数连续,光滑,严格单调,以(0,0.5)中心对称,是一个非常良好的阈值函数。当x趋近负无穷时,y趋近于0x趋近于正无穷时,y趋近于1x=0时,y=0.5。当然,在x超出[-6,6]的范围后,函数值基本上没有变化,值非常接近,在应用中一般不考虑。Sigmoid函数的导数是其本身的函数,即f′(x)=f(x)(1−f(x)),计算非常方便,也非常节省计算时间。
  • 缺点:Sigmoid最明显的缺点就是饱和性。从曲线图中看到,其两侧的导数逐渐趋近于0,即:\lim_{x->\infty}f'(x)0 。我们将具有这种性质的激活函数叫作软饱和激活函数。具体的,饱和又可分为左饱和与右饱和。与软饱和对应的是硬饱和, 即f′(x)=0,当|x|>c,其中c为常数。sigmoid 的软饱和性,使得深度神经网络在二三十年里一直难以有效的训练,是阻碍神经网络发展的重要原因。另外,Sigmoid函数的输出均大于0,使得输出不是0均值,这称为偏移现象,这会导致后一层的神经元将得到上一层输出的非0均值的信号作为输入。

2. TanH

  • 函数表达式:f(x)=\frac{1-e^{-2x}}{1+e^{-2x}}
  • 函数图像:
Tanh激活函数和它的导数
  • 导数:f'(x)=1-f(x)^2
  • 优点:与Sigmoid相比,它的输出均值是0,使得其收敛速度要比Sigmoid快,减少迭代次数。
  • 缺点:该导数在正负饱和区的梯度都会接近于0值(仍然具有软饱和性),会造成梯度消失。还有其更复杂的幂运算。

3. ReLU

  • 函数表达式:f(x)=max(0,x)
  • 函数图像:
ReLU激活函数
  • 导数:当x>0f'(x)=1,当x<0f'(x)=0
  • 优点:ReLU的全称是Rectified Linear Units,是一种AlexNet时期才出现的激活函数。 可以看到,当x<0时,ReLU硬饱和,而当x>0时,则不存在饱和问题。所以,ReLU 能够在x>0时保持梯度不衰减,从而缓解梯度消失问题。这让我们能够直接以监督的方式训练深度神经网络,而无需依赖无监督的逐层预训练。
  • 缺点:随着训练的推进,部分输入会落入硬饱和区,导致对应权重无法更新。这种现象被称为“神经元死亡”。与Sigmoid类似,ReLU的输出均值也大于0,偏移现象和神经元死亡会共同影响网络的收敛性。

4. Leaky ReLU & PReLU

  • 函数表达式和导数:
Leaky ReLU
  • 函数图像:
Leaky ReLU激活函数
  • 特点:为了改善ReLU在x<0时梯度为0造成Dead ReLU,提出了Leaky ReLU使得这一问题得到了缓解。例如在我们耳熟能详的YOLOV3网络中就使用了Leaky ReLU这一激活函数,一般a0.25。另外PReLU就是将Leaky ReLU公式里面的a当成可学习参数参与到网络训练中。

5. ReLU6

  • 函数表达式:f(x)=min(max(0,x),6)
  • 特点:ReLU6就是普通的ReLU但是限制最大输出值为6(对输出值做clip),这是为了在移动端设备float16的低精度的时候,也能有很好的数值分辨率,如果对ReLU的激活范围不加限制,输出范围为0到正无穷,如果激活值非常大,分布在一个很大的范围内,则低精度的float16无法很好地精确描述如此大范围的数值,带来精度损失。

6. ELU

  • 函数表达式:
ELU表达式
  • 函数图像:
ELU激活函数
  • 导数:当x>=0时,f'(x)=1,当x<0时,f'(x)=\alpha e^x
  • 特点:融合了sigmoid和ReLU,左侧具有软饱和性,右侧无饱和性。右侧线性部分使得ELU能够缓解梯度消失,而左侧软饱能够让ELU对输入变化或噪声更鲁棒。ELU的输出均值接近于零,所以收敛速度更快。在 ImageNet上,不加Batch Normalization 30层以上的ReLU网络会无法收敛,PReLU网络在MSRA的Fan-in (caffe )初始化下会发散,而 ELU 网络在Fan-in/Fan-out下都能收敛。关于Fan-in/Fan-out初始化请看附录的参考2链接。

7. SoftSign

  • 函数表达式:f(x)=\frac{x}{1+|x|}
  • 函数图像:
Softsign激活函数和它的导数
  • 导数:图中已经求出。
  • 特点:Softsign是tanh激活函数的另一个替代选择,从图中可以看到它和tanh的曲线极其相似,不过相比于tanh,Softsign的曲线更平坦,导数下降的更慢一点,这个特性使得它可以缓解梯度消失问题,可以更高效的学习。

8. SoftPlus

  • 函数表达式:f(x)=ln(1+e^x)
  • 函数图像:
SoftPlus激活函数及导数
  • 函数导数:SoftPlus激活函数的导数恰好就是sigmoid激活函数,即f'(x)=sigmoid(x)
  • 优点:SoftPlus可以作为ReLu的一个不错的替代选择,可以看到与ReLU不同的是,SoftPlus的导数是连续的、非零的、无处不在的,这一特性可以防止出现ReLU中的“神经元死亡”现象。
  • 缺点:SoftPlus是不对称的,不以0为中心,存在偏移现象;而且,由于其导数常常小于1,也可能会出现梯度消失的问题。

9. SELU

  • 函数表达式:SELU(x)=\lambda * ELU(x),也即是:

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

  • 特点:这个激活函数来自论文:https://arxiv.org/abs/1706.02515 。而这篇论文就是提出了这一激活函数,然后论文写了93页公式来证明只需要把激活函数换成SELU就能使得输入在经过一定层数之后变成固定的分布。。而这个函数实际上就是在ELU激活函数的基础上乘以了一个\lambda,但需要注意的是这个\lambda是大于1的。
  • 更详细的讨论可以见这里:https://www.zhihu.com/question/60910412

10. Swish

  • 函数表达式:f(x)=x*sigmoid(x),其中\beta是个常数或可训练的参数.Swish 具备无上界有下界、平滑、非单调的特性。
  • 函数图像:
Swish激活函数
Swish激活函数导数
  • 特点:Swish 在深层模型上的效果优于 ReLU。例如,仅仅使用 Swish 单元替换 ReLU 就能把 Mobile NASNetA 在 ImageNet 上的 top-1 分类准确率提高 0.9%,Inception-ResNet-v的分类准确率提高 0.6%。当\beta=0时,Swish激活函数变成线性函数f(x)=\frac{x}{2}.而当\beta->\infty时,\delta(x)=(1+exp(-x))^{-1}为0或1,这个时候Swish激活函数变成ReLU激活函数f(x)=2max(0,x)。因此Swish激活函数可以看做是介于线性函数与ReLU函数之间的平滑函数。

11. Maxout

  • 函数表达式:f(x)=max(w_1^Tx+b_1,w_2^Tx+b_2,...,w_n^Tx+b_n)
  • 特点:Maxout模型实际上也是一种新型的激活函数,在前馈式神经网络中,Maxout的输出即取该层的最大值,在卷积神经网络中,一个Maxout特征图可以是由多个特征图取最值得到。 Maxout的拟合能力是非常强的,它可以拟合任意的的凸函数。但是它和Dropout一样需要人为设定一个k值。 为了便于理解,假设有一个在第i层有2个节点i+1层有1个节点构成的神经网络。即:
神经网络

激活值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(x)=x*tanh(ln(1+e^x))
  • 函数图像:
MisH激活函数
  • 特点:这个激活函数是最新的SOTA激活函数,我还没具体使用和了解过这个激活函数,就暂时不总结这一个了。不过论文中提到,以上无边界(即正值可以达到任何高度)避免了由于封顶而导致的饱和,理论上对负值的轻微允许更好的梯度流,而不是像ReLU中那样的硬零边界,并且整个损失函数仍然保持了平滑性。
  • 论文名为:Mish: A Self Regularized Non-Monotonic Neural Activation Function

激活函数尝试经验

  • 首先使用ReLU,速度最快,然后观察模型的表现。
  • 如果ReLU效果不是很好,可以尝试Leaky ReLU或Maxout等变种。
  • 尝试tanh正切函数(以零点为中心,零点处梯度为1)。
  • 在深度不是特别深的CNN中,激活函数的影响一般不会太大。
  • Kaggle比赛,试试Mish?

附录

推荐阅读


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

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

在这里插入图片描述
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 151,688评论 1 330
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 64,559评论 1 273
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 101,749评论 0 226
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 42,581评论 0 191
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 50,741评论 3 271
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 39,684评论 1 192
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,122评论 2 292
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 29,847评论 0 182
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 33,441评论 0 228
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 29,939评论 2 232
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,333评论 1 242
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 27,783评论 2 236
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,275评论 3 220
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 25,830评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,444评论 0 180
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 34,553评论 2 249
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 34,618评论 2 249

推荐阅读更多精彩内容