深度学习领域最常用的10个激活函数,一文详解数学原理及优缺点
共 3860字,需浏览 8分钟
·
2021-03-05 20:26
日期 : 2021年03月04日
正文共 :2599字
激活函数是神经网络模型重要的组成部分,本文作者Sukanya Bag从激活函数的数学原理出发,详解了十种激活函数的优缺点。
![](https://filescdn.proginn.com/ccf7c4f8aa2230093550287cece3db17/5e3cbed1b773ce7c0d9193b9aea212c3.webp)
![](https://filescdn.proginn.com/ab9c208cfcc7c25d7b4cbc9256b0091e/c26dd79f307e980e46ccbeb23183fb53.webp)
![](https://filescdn.proginn.com/3353969e52bf609a937533ca94c6e8ac/19e41ce7fe835c2694c8bac67ffba3da.webp)
![](https://filescdn.proginn.com/4fd635a26c542ae514f698bd44086ce8/b4140ab74fec1a47583a7f9d8305840f.webp)
![](https://filescdn.proginn.com/bd7ae112cc3b8f06ba32979ed957129b/4f573416ca0c048abeb005676c0ff7c4.webp)
Sigmoid 函数的输出范围是 0 到 1。由于输出值限定在 0 到 1,因此它对每个神经元的输出进行了归一化;
用于将预测概率作为输出的模型。由于概率的取值范围是 0 到 1,因此 Sigmoid 函数非常合适;
梯度平滑,避免「跳跃」的输出值;
函数是可微的。这意味着可以找到任意两个点的 sigmoid 曲线的斜率;
明确的预测,即非常接近 1 或 0。
倾向于梯度消失;
函数输出不是以 0 为中心的,这会降低权重更新的效率;
Sigmoid 函数执行指数运算,计算机运行得较慢。
![](https://filescdn.proginn.com/c11ae5842864d75366662fd88a5b22e6/36da368382ee7090eaedbf7e43fd2f57.webp)
![](https://filescdn.proginn.com/3c8f6b2c1c9ffed500a02c30770bd7a7/6280979fbf331d393cf89d63119ad24a.webp)
![](https://filescdn.proginn.com/0fc3dee2cbe366d34ddae21fd025344f/91487c73c7d889f4d6d6fdad17ef3846.webp)
首先,当输入较大或较小时,输出几乎是平滑的并且梯度较小,这不利于权重更新。二者的区别在于输出间隔,tanh 的输出间隔为 1,并且整个函数以 0 为中心,比 sigmoid 函数更好;
在 tanh 图中,负输入将被强映射为负,而零输入被映射为接近零。
![](https://filescdn.proginn.com/2a7ffaf5d0f5c959a4fe96e1245cfd2c/edaa4fc35e9b5f161b44d235f4422ea4.webp)
![](https://filescdn.proginn.com/2dfa41c905cf315ee07ff39cecc09090/097717d93a4867f8c42e306276179a21.webp)
当输入为正时,不存在梯度饱和问题。
计算速度快得多。ReLU 函数中只存在线性关系,因此它的计算速度比 sigmoid 和 tanh 更快。
Dead ReLU 问题。当输入为负时,ReLU 完全失效,在正向传播过程中,这不是问题。有些区域很敏感,有些则不敏感。但是在反向传播过程中,如果输入负数,则梯度将完全为零,sigmoid 函数和 tanh 函数也具有相同的问题;
我们发现 ReLU 函数的输出为 0 或正数,这意味着 ReLU 函数不是以 0 为中心的函数。
![](https://filescdn.proginn.com/af79346edeb2c153eae14984354b1363/6e7f3d122bc8f183a5d4f59212f68d83.webp)
![](https://filescdn.proginn.com/317cbd91116ee3161c9e31242c1940c1/1ca59abc79de7e306edf38a2a0f8d884.webp)
Leaky ReLU 通过把 x 的非常小的线性分量给予负输入(0.01x)来调整负值的零梯度(zero gradients)问题;
leak 有助于扩大 ReLU 函数的范围,通常 a 的值为 0.01 左右;
Leaky ReLU 的函数范围是(负无穷到正无穷)。
![](https://filescdn.proginn.com/8df462a1dccfb5dd489e92dc0b4e894e/8ec8973c1d14277c4f79a6be5fad054f.webp)
![](https://filescdn.proginn.com/062fe1e1266f3b7c20fc2faddcb40be0/20a3e74a74c8e61f656b5d42d8e0fccc.webp)
没有 Dead ReLU 问题,输出的平均值接近 0,以 0 为中心;
ELU 通过减少偏置偏移的影响,使正常梯度更接近于单位自然梯度,从而使均值向零加速学习;
ELU 在较小的输入下会饱和至负值,从而减少前向传播的变异和信息。
![](https://filescdn.proginn.com/b787439b8be2feb5d1b78e207be6b948/2dd65fda2cb17e72847a89ba8f85460f.webp)
![](https://filescdn.proginn.com/9e8b5567b041e9541a4e5fc31a93e02f/6310fb9bddbce8b694516f0826bf2604.webp)
如果 a_i= 0,则 f 变为 ReLU
如果 a_i> 0,则 f 变为 leaky ReLU
如果 a_i 是可学习的参数,则 f 变为 PReLU
在负值域,PReLU 的斜率较小,这也可以避免 Dead ReLU 问题。
与 ELU 相比,PReLU 在负值域是线性运算。尽管斜率很小,但不会趋于 0。
![](https://filescdn.proginn.com/a6d3b5d6c64282da2f0611daf4f6a825/9c9929dd0d0a3c668f23d03231191ad5.webp)
![](https://filescdn.proginn.com/99bce23a35a1cfca2754be77990ddbb0/fa4c3789ca1eefaea93ab5126f9675f8.webp)
在零点不可微;
负输入的梯度为零,这意味着对于该区域的激活,权重不会在反向传播期间更新,因此会产生永不激活的死亡神经元。
![](https://filescdn.proginn.com/99191e762277503a4839ec2a4eeac7a5/6badd8b523556a1a6e610fe131b0700f.webp)
「无界性」有助于防止慢速训练期间,梯度逐渐接近 0 并导致饱和;(同时,有界性也是有优势的,因为有界激活函数可以具有很强的正则化,并且较大的负输入问题也能解决);
导数恒 > 0;
平滑度在优化和泛化中起了重要作用。
![](https://filescdn.proginn.com/16f29953173948794760774170f3f74a/14ed485702f6e8101fc8bc0c17aed9ed.webp)
![](https://filescdn.proginn.com/5aff55cbf89cba917f9669cea0868c2b/182d4b24f2c2066ed8191a9075e3e43b.webp)
![](https://filescdn.proginn.com/f69ce120b7e2c72fd058f85dc1372d53/c8384fc70d17f91b47cb1fd26e025103.webp)
![](https://filescdn.proginn.com/c63a0820ae86ed70472de4d885fcd1eb/8f20359faeb94243dd838c1148580f4e.webp)
![](https://filescdn.proginn.com/6c415c68b81734201f59507125e7afb5/a452a8e3e0e3e25097d2ce31efb42efd.webp)
![](https://filescdn.proginn.com/71165d4febeea322d08221b4c24ef40a/7253e113acfec880de5939f6bf8ef963.webp)
— THE END —
![](https://filescdn.proginn.com/86f18849094a85fc09a3ad443586cfa9/02c01a079f957ea727783fab1b53db59.webp)