Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >通过函数图像,了解26种神经网络激活函数都长啥样。

通过函数图像,了解26种神经网络激活函数都长啥样。

作者头像
小白学视觉
发布于 2019-10-15 11:35:44
发布于 2019-10-15 11:35:44
2.3K0
举报

在本文中,作者对包括 Relu、Sigmoid 在内的 26 种激活函数做了可视化,并附上了神经网络的相关属性,为大家了解激活函数提供了很好的资源。

在神经网络中,激活函数决定来自给定输入集的节点的输出,其中非线性激活函数允许网络复制复杂的非线性行为。正如绝大多数神经网络借助某种形式的梯度下降进行优化,激活函数需要是可微分(或者至少是几乎完全可微分的)。此外,复杂的激活函数也许产生一些梯度消失或爆炸的问题。因此,神经网络倾向于部署若干个特定的激活函数(identity、sigmoid、ReLU 及其变体)。

下面是 26 个激活函数的图示及其一阶导数,图的右侧是一些与神经网络相关的属性。

1. Step

激活函数 Step 更倾向于理论而不是实际,它模仿了生物神经元要么全有要么全无的属性。它无法应用于神经网络,因为其导数是 0(除了零点导数无定义以外),这意味着基于梯度的优化方法并不可行。

2. Identity

通过激活函数 Identity,节点的输入等于输出。它完美适合于潜在行为是线性(与线性回归相似)的任务。当存在非线性,单独使用该激活函数是不够的,但它依然可以在最终输出节点上作为激活函数用于回归任务。

3. ReLU

修正线性单元(Rectified linear unit,ReLU)是神经网络中最常用的激活函数。它保留了 step 函数的生物学启发(只有输入超出阈值时神经元才激活),不过当输入为正的时候,导数不为零,从而允许基于梯度的学习(尽管在 x=0 的时候,导数是未定义的)。使用这个函数能使计算变得很快,因为无论是函数还是其导数都不包含复杂的数学运算。然而,当输入为负值的时候,ReLU 的学习速度可能会变得很慢,甚至使神经元直接无效,因为此时输入小于零而梯度为零,从而其权重无法得到更新,在剩下的训练过程中会一直保持静默。

4. Sigmoid

Sigmoid 因其在 logistic 回归中的重要地位而被人熟知,值域在 0 到 1 之间。Logistic Sigmoid(或者按通常的叫法,Sigmoid)激活函数给神经网络引进了概率的概念。它的导数是非零的,并且很容易计算(是其初始输出的函数)。然而,在分类任务中,sigmoid 正逐渐被 Tanh 函数取代作为标准的激活函数,因为后者为奇函数(关于原点对称)。

5. Tanh

在分类任务中,双曲正切函数(Tanh)逐渐取代 Sigmoid 函数作为标准的激活函数,其具有很多神经网络所钟爱的特征。它是完全可微分的,反对称,对称中心在原点。为了解决学习缓慢和/或梯度消失问题,可以使用这个函数的更加平缓的变体(log-log、softsign、symmetrical sigmoid 等等)

6. Leaky ReLU

经典(以及广泛使用的)ReLU 激活函数的变体,带泄露修正线性单元(Leaky ReLU)的输出对负值输入有很小的坡度。由于导数总是不为零,这能减少静默神经元的出现,允许基于梯度的学习(虽然会很慢)。

7. PReLU

参数化修正线性单元(Parameteric Rectified Linear Unit,PReLU)属于 ReLU 修正类激活函数的一员。它和 RReLU 以及 Leaky ReLU 有一些共同点,即为负值输入添加了一个线性项。而最关键的区别是,这个线性项的斜率实际上是在模型训练中学习到的。

8. RReLU

随机带泄露的修正线性单元(Randomized Leaky Rectified Linear Unit,RReLU)也属于 ReLU 修正类激活函数的一员。和 Leaky ReLU 以及 PReLU 很相似,为负值输入添加了一个线性项。而最关键的区别是,这个线性项的斜率在每一个节点上都是随机分配的(通常服从均匀分布)。

9. ELU

指数线性单元(Exponential Linear Unit,ELU)也属于 ReLU 修正类激活函数的一员。和 PReLU 以及 RReLU 类似,为负值输入添加了一个非零输出。和其它修正类激活函数不同的是,它包括一个负指数项,从而防止静默神经元出现,导数收敛为零,从而提高学习效率。

10. SELU

扩展指数线性单元(Scaled Exponential Linear Unit,SELU)是激活函数指数线性单元(ELU)的一个变种。其中λ和α是固定数值(分别为 1.0507 和 1.6726)。这些值背后的推论(零均值/单位方差)构成了自归一化神经网络的基础(SNN)。

11. SReLU

S 型整流线性激活单元(S-shaped Rectified Linear Activation Unit,SReLU)属于以 ReLU 为代表的整流激活函数族。它由三个分段线性函数组成。其中两种函数的斜度,以及函数相交的位置会在模型训练中被学习。

12. Hard Sigmoid

Hard Sigmoid 是 Logistic Sigmoid 激活函数的分段线性近似。它更易计算,这使得学习计算的速度更快,尽管首次派生值为零可能导致静默神经元/过慢的学习速率(详见 ReLU)。

13. Hard Tanh

Hard Tanh 是 Tanh 激活函数的线性分段近似。相较而言,它更易计算,这使得学习计算的速度更快,尽管首次派生值为零可能导致静默神经元/过慢的学习速率(详见 ReLU)。

14. LeCun Tanh

LeCun Tanh(也被称作 Scaled Tanh)是 Tanh 激活函数的扩展版本。它具有以下几个可以改善学习的属性:f(± 1) = ±1;二阶导数在 x=1 最大化;且有效增益接近 1。

15. ArcTan

视觉上类似于双曲正切(Tanh)函数,ArcTan 激活函数更加平坦,这让它比其他双曲线更加清晰。在默认情况下,其输出范围在-π/2 和π/2 之间。其导数趋向于零的速度也更慢,这意味着学习的效率更高。但这也意味着,导数的计算比 Tanh 更加昂贵。

16. Softsign

Softsign 是 Tanh 激活函数的另一个替代选择。就像 Tanh 一样,Softsign 是反对称、去中心、可微分,并返回-1 和 1 之间的值。其更平坦的曲线与更慢的下降导数表明它可以更高效地学习。另一方面,导数的计算比 Tanh 更麻烦。

17. SoftPlus

作为 ReLU 的一个不错的替代选择,SoftPlus 能够返回任何大于 0 的值。与 ReLU 不同,SoftPlus 的导数是连续的、非零的,无处不在,从而防止出现静默神经元。然而,SoftPlus 另一个不同于 ReLU 的地方在于其不对称性,不以零为中心,这兴许会妨碍学习。此外,由于导数常常小于 1,也可能出现梯度消失的问题。

18. Signum

激活函数 Signum(或者简写为 Sign)是二值阶跃激活函数的扩展版本。它的值域为 [-1,1],原点值是 0。尽管缺少阶跃函数的生物动机,Signum 依然是反对称的,这对激活函数来说是一个有利的特征。

19. Bent Identity

激活函数 Bent Identity 是介于 Identity 与 ReLU 之间的一种折衷选择。它允许非线性行为,尽管其非零导数有效提升了学习并克服了与 ReLU 相关的静默神经元的问题。由于其导数可在 1 的任意一侧返回值,因此它可能容易受到梯度爆炸和消失的影响。

20. Symmetrical Sigmoid

Symmetrical Sigmoid 是另一个 Tanh 激活函数的变种(实际上,它相当于输入减半的 Tanh)。和 Tanh 一样,它是反对称的、零中心、可微分的,值域在 -1 到 1 之间。它更平坦的形状和更慢的下降派生表明它可以更有效地进行学习。

21. Log Log

Log Log 激活函数(由上图 f(x) 可知该函数为以 e 为底的嵌套指数函数)的值域为 [0,1],Complementary Log Log 激活函数有潜力替代经典的 Sigmoid 激活函数。该函数饱和地更快,且零点值要高于 0.5。

22. Gaussian

高斯激活函数(Gaussian)并不是径向基函数网络(RBFN)中常用的高斯核函数,高斯激活函数在多层感知机类的模型中并不是很流行。该函数处处可微且为偶函数,但一阶导会很快收敛到零。

23. Absolute

顾名思义,绝对值(Absolute)激活函数返回输入的绝对值。该函数的导数除了零点外处处有定义,且导数的量值处处为 1。这种激活函数一定不会出现梯度爆炸或消失的情况。

24. Sinusoid

如同余弦函数,Sinusoid(或简单正弦函数)激活函数为神经网络引入了周期性。该函数的值域为 [-1,1],且导数处处连续。此外,Sinusoid 激活函数为零点对称的奇函数。

25. Cos

如同正弦函数,余弦激活函数(Cos/Cosine)为神经网络引入了周期性。它的值域为 [-1,1],且导数处处连续。和 Sinusoid 函数不同,余弦函数为不以零点对称的偶函数。

26. Sinc

Sinc 函数(全称是 Cardinal Sine)在信号处理中尤为重要,因为它表征了矩形函数的傅立叶变换(Fourier transform)。作为一种激活函数,它的优势在于处处可微和对称的特性,不过它比较容易产生梯度消失的问题。

原文链接:https://dashee87.github.io/data%20science/deep%20learning/visualising-activation-functions-in-neural-networks/

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-10-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 小白学视觉 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【激活函数合集】盘点当前最流行的激活函数及选择经验
在阅读DarkNet源码的时候发现作者定义了大量从古至今流行的损失函数,本着科普的态度我打算做一个全面的总结,所以就有了这篇文章。
BBuf
2020/02/26
2.9K0
常见激活函数总结 | 深度学习笔记2
01激活函数概览 基本上,入门深度学习的第一件事情就是了解”神经元”的构造,激活函数算是最基本的一个”部件”了吧.那激活函数到底有什么用呢?为什么需要激活函数?激活函数的定义是什么呢? 下面这篇论
用户1332428
2018/03/08
1K0
常见激活函数总结 | 深度学习笔记2
深度神经网络之损失函数和激活函数
通过前面深度神经网络之前向传播算法和深度神经网络之反向传播算法的学习,我们能够了解到损失函数是用来评估模型的预测值与真实值之间的差异程度。另外损失函数也是神经网络中优化的目标函数,神经网络训练或者优化的过程就是最小化损失函数的过程,损失函数越小,说明模型的预测值就越接近真实值,模型的准确性也就越好。前面我们已经学习过平方损失函数,对数损失函数、交叉熵损失函数等不同形式的损失函数,这里也就不做太多介绍。
小一
2019/08/14
1.5K0
深度神经网络之损失函数和激活函数
深度学习基础入门篇[四]:激活函数介绍:tanh、sigmoid、ReLU、PReLU、ELU、softplus、softmax、swish等
深度学习基础入门篇四:激活函数介绍:tanh、sigmoid、ReLU、PReLU、ELU、softplus、softmax、swish等
汀丶人工智能
2023/04/12
13.8K1
入门必看!一文读懂神经网络中的激活函数(二)
看看深度学习之激活函数 本篇接着上一篇推文入门《必看!从零开始了解到训练神经网络(一)》,在介绍完神经网络的基本原理和结构之后,继续介绍神经网络中的关键之一 —— 激活函数。 树根这一部分会给大家通俗讲一下激活函数的概念,原理以及作用,还有实际应用中各种激活函数的优缺点。因为激活函数本身就是一种数学函数,推文中出现数学公式在所难免,但是树根力求讲得通俗清晰,让初学者都能读懂,轻松入门深度学习。 1 感知机 Percrptron Activation Function 感知机由Rosenblatt于1957年
企鹅号小编
2018/01/31
3K0
入门必看!一文读懂神经网络中的激活函数(二)
A.深度学习基础入门篇[四]:激活函数介绍:tanh、sigmoid、ReLU、PReLU、ELU、softplus、softmax、swish等
如果不用激活函数,每一层输出都是上层输入的线性函数,无论神经网络有多少层,最终的输出都是输入的线性组合。 激活函数给神经元引入了非线性因素,使得神经网络可以任意逼近任何非线性函数。
汀丶人工智能
2023/04/17
1.3K0
A.深度学习基础入门篇[四]:激活函数介绍:tanh、sigmoid、ReLU、PReLU、ELU、softplus、softmax、swish等
【深度学习】神经网络为何非激活函数不可?
激活函数是神经网络中一个至关重要的概念,决定了某个神经元是否被激活,判断该神经元获得的信息是否有用,并决定该保留还是该去掉此神经元。
zenRRan
2020/02/18
1.2K0
一文讲透神经网络的激活函数
原理上来说,神经网络模型的训练过程其实就是拟合一个数据分布(x)可以映射到输出(y)的数学函数,即 y= f(x)。
算法进阶
2022/06/02
7540
一文讲透神经网络的激活函数
深度学习中常见激活函数的原理和特点
前面一些分享文章提到了激活函数,这篇文章将介绍各种激活函数,下一篇将分享我和同事在业务中对激活函数的一些思考与应用。
自学气象人
2023/06/20
1.3K0
深度学习中常见激活函数的原理和特点
前馈神经网络(Feed-Forward Neural Network)
前馈神经网络(Feed-Forward Neural Network,简称FNN)是一种基本且广泛应用的人工神经网络结构。以下是关于前馈神经网络的详细解释:
jack.yang
2025/04/05
1830
前馈神经网络(Feed-Forward Neural Network)
激活函数其实并不简单:最新的激活函数如何选择?
如今,机器学习领域的科学进步速度是前所未有的。除非局限在一个狭窄的细分市场,否则要跟上时代的步伐是相当困难的。每天都有新论文出现并声称自己取得了一些最先进的成果。但是这些新发现中的大多数从来没有成为默认的首选方法,有时是因为它们没有最初希望的那么好,有时只是因为它们最终在新进展的洪流中崩溃了。
deephub
2021/09/15
1.3K0
激活函数其实并不简单:最新的激活函数如何选择?
理解神经网络的激活函数
激活函数在神经网络中具有重要的地位,对于常用的函数如sigmoid,tanh,ReLU,不少读者都已经非常熟悉。但是你是否曾想过这几个问题:
SIGAI学习与实践平台
2018/08/07
1.2K0
理解神经网络的激活函数
入门 | 一文概览深度学习中的激活函数
选自Learn OpenCV 机器之心编译 参与:路雪、蒋思源 本文从激活函数的背景知识开始介绍,重点讲解了不同类型的非线性激活函数:Sigmoid、Tanh、ReLU、LReLU、PReLU、Swish,并详细介绍了这些函数的优缺点。 本文介绍了多种激活函数,并且对比了激活函数的优劣。本文假设你对人工神经网络(AAN)有基本了解,如果没有,推荐先阅读机器之心介绍过的相关文章: 神经网络快速入门:什么是多层感知器和反向传播? DNN 概述论文:详解前馈、卷积和循环神经网络技术 1. 什么是激活函数? 生物神
机器之心
2018/05/10
9170
42个激活函数的全面总结
来源:DeepHub IMBA本文多图,建议阅读5分钟在本文中,我通过自己写的一个程序来挖掘截至 2022 年 4 月 22 日时维基百科页面历史中的每个唯一激活函数。 2015 年 11 月,wikipedia的用户  Laughinthestocks 首次引入了“激活函数表”。从那时开始到现在,维基百科页面已经发生了 391 次更改。在本文中,我通过自己写的一个程序来挖掘截至 2022 年 4 月 22 日时维基百科页面历史中的每个唯一激活函数。本文还提供了针对激活函数的适当研究论文的附加链接,如果没有
数据派THU
2022/05/06
4150
42个激活函数的全面总结
机器学习 深度学习中激活函数sigmoid relu tanh gelu等汇总整理
这篇博客主要总结一下常用的激活函数公式及优劣势,包括sigmoid relu tanh gelu
大鹅
2021/09/12
3.2K0
非零均值?激活函数也太硬核了!
若网络中不用激活函数,那么每一层的输出都是输入的线性组合。无论神经网络有多少层,网络的输出都是输入的线性组合,这种网络就是原始的感知机(
灿视学长
2021/05/28
2.6K0
神经网络中常见的激活函数
深度学习中已经成为了人工智能领域的必备工具,源于人工神经网络的研究,含多个隐藏层的多层感知器就是一种深度学习结构。寻找隐藏层的权重参数和偏置的过程,就是常说的“学习”过程,其遵循的基本原则就是使得网络最终的输出误差最小化。在神经⽹络中,激活函数是必须选择的众多参数之⼀,从而使神经⽹络获得最优的结果和性能。
半吊子全栈工匠
2022/12/03
1.9K0
神经网络中常见的激活函数
梯度消失问题与如何选择激活函数
当我们在做反向传播,计算损失函数对权重的梯度时,随着越向后传播,梯度变得越来越小,这就意味着在网络的前面一些层的神经元,会比后面的训练的要慢很多,甚至不会变化。
杨熹
2018/08/03
9730
梯度消失问题与如何选择激活函数
Pytorch_第九篇_神经网络中常用的激活函数
理论上神经网络能够拟合任意线性函数,其中主要的一个因素是使用了非线性激活函数(因为如果每一层都是线性变换,那有啥用啊,始终能够拟合的都是线性函数啊)。本文主要介绍神经网络中各种常用的激活函数。
用户1483438
2022/04/07
1K0
激活函数 | 深度学习领域最常用的10个激活函数,详解数学原理及优缺点
激活函数是神经网络模型重要的组成部分,今天分享从激活函数的数学原理出发,详解了十种激活函数的优缺点。
计算机视觉研究院
2021/03/13
34K0
推荐阅读
相关推荐
【激活函数合集】盘点当前最流行的激活函数及选择经验
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档