干货 | 6 种激活函数核心知识点,请务必掌握!

简介:

我们知道,神经网络模型中,各隐藏层、包括输出层都需要激活函数(Activation Function)。我们比较熟悉的、常用的激活函数也有 ReLU、Sigmoid 等等。但是,对于各个激活函数的选取方法、区别特点还有几点需要特别注意的地方。今天我们就和大家一起来总结一下常用激活函数 Sigmoid、tanh、ReLU、Leaky ReLU、ELU、Maxout 的关键知识点。

为什么需要激活函数

神经网络单个神经元的基本结构由线性输出 Z 和非线性输出 A 两部分组成。如下图所示:

fc9bf37b4da3937f4128f04a92ed11bbc6e0d3d9

其中,f(x) 即为线性输出 Z,g(x) 即为非线性输出,g() 表示激活函数。通俗来说,激活函数一般是非线性函数,其作用是能够给神经网络加入一些非线性因素,使得神经网络可以更好地解决较为复杂的问题。

举个简单的例子,二分类问题,如果不使用激活函数,例如使用简单的逻辑回归,只能作简单的线性划分,如下图所示:

f9c3f22bca1276688d3c4aa5364f0286c3cc92a3

如果使用激活函数,则可以实现非线性划分,如下图所示:

6ea7317dcdf093b33de9c131d7f1ed6074494adf

可见,激活函数能够帮助我们引入非线性因素,使得神经网络能够更好地解决更加复杂的问题。

有个问题,为什么激活函数一般都是非线性的,而不能是线性的呢?从反面来说,如果所有的激活函数都是线性的,则激活函数 g(z)=z,即 a=z。那么,以两层神经网络为例,最终的输出为:

05c75de131f4e27d3fc8b7ed0ba530a14235e3c8

经过推导我们发现网络输出仍是 X 的线性组合。这表明,使用神经网络与直接使用线性模型的效果并没有什么两样。即便是包含多层隐藏层的神经网络,如果使用线性函数作为激活函数,最终的输出仍然是线性模型。这样的话神经网络就没有任何作用了。因此,隐藏层的激活函数必须要是非线性的。

值得一提的是,如果所有的隐藏层全部使用线性激活函数,只有输出层使用非线性激活函数,那么整个神经网络的结构就类似于一个简单的逻辑回归模型,效果与单个神经元无异。另外,如果是拟合问题而不是分类问题,输出层的激活函数可以使用线性函数。

Sigmoid

激活函数 Sigmoid 的图形表达式如下所示:

9e686019a27256c7f74bd90358526bf7ec74220a

Sigmoid 函数的取值范围在 (0,1) 之间,单调连续,求导容易,一般用于二分类神经网络的输出层。

下面重点谈一下 Sigmoid 函数的缺点。

首先,Sigmoid 函数饱和区范围广,容易造成梯度消失。饱和区如下图所示:

567d65f3c71bb53d4c1c19cdbd2cface94320488

上图中红色椭圆标注的饱和区曲线平缓,梯度的值很小,近似为零。而且 Sigmoid 函数的饱和区范围很广,例如除了 [-5,5],其余区域都近似饱和区。这种情况很容易造成梯度消失,梯度消失会增大神经网络训练难度,影响神经网络模型的性能。

其次,Sigmoid 函数输出是非零对称的,即输出恒大于零。这会产生什么影响呢?我们来看,假如 Sigmoid 函数的输出为 σ(Wx+b),且满足 0<σ(Wx+b)<1。在反向求导过程中,令损失函数 J 对 σ(Wx+b) 的求导为 dσ,现在计算 J 对 W 的偏导数:

deadeeaf5aa5a91b5e4a6a71afa466a9e2a83bf3

其中,σ(Wx+b)>0,1-σ(Wx+b)>0。

若神经元的输入 x>0,则无论 dσ 正负如何,总能得到 dW 恒为正或者恒为负。也就是说参数矩阵 W 的每个元素都会朝着同一个方向变化,同为正或同为负。这对于神经网络训练是不利的,所有的 W 都朝着同一符号方向变化会减小训练速度,增加模型训练时间。就好比我们下楼梯的所需的时间总比直接滑梯下来的时间要长得多,如下图所示:

ffa2165a530c72b23ca3d375815b58c0bc62b95a

图中,红色折线是上文讨论的情况,蓝色斜线是 W 不全朝同一方向变化的情况。

值得一提的是,针对 Sigmoid 函数的这一问题,神经元的输入 x 常会做预处理,即将均值归一化到零值。这样也能有效避免 dW 恒为正或者恒为负。

最后还有一点,Sigmoid 函数包含 exp 指数运算,运算成本也比较大。

tanh

激活函数 tanh 的图形表达式如下所示:

5c0146e35be9be95c9ee3fdbd7b0da6aab334fb7

tanh 函数的取值范围在 (-1,1) 之间,单调连续,求导容易。

相比于 Sigmoid 函数,tanh 函数的优点主要有两个:其一,收敛速度更快,如下图所示,tanh 函数线性区斜率较 Sigmoid 更大一些。在此区域内训练速度会更快。其二,tanh 函数输出均值为零,也就不存在 Sigmoid 函数中 dW 恒为正或者恒为负,从而影响训练速度的问题。

a9f7b2f425bca9512e74e1aa3f30cf422eb1f67e

但是,tanh 函数与 Sigmoid 函数一样,也存在饱和区梯度消失问题。其饱和区甚至比 Sigmoid 还要大一些,但不明显。

ReLU

激活函数 ReLU 的全称是 Rectified Linear Unit,其图形表达式如下所示:

6347f8e0c8824fcb23b2aadc1fabb33d4ad85989

ReLU 函数是最近几年比较火热的激活函数之一。相比 Sigmoid 和 tanh 函数,其主要优点包括以下几个方面:

没有饱和区,不存在梯度消失问题。
没有复杂的指数运算,计算简单、效率提高。
实际收敛速度较快,大约是 Sigmoid/tanh 的 6 倍。
比 Sigmoid 更符合生物学神经激活机制。

下面这张图对比了 ReLU 与 tanh 的收敛速度差异性。数据集是 CIFAR 10,模型是四层的卷积神经网络。图中,实线代表 ReLU,虚线代表 tanh,ReLU 比 tanh 更快地到达了错误率 0.25 处。(引自论文《ImageNet Classification with Deep Convolutional Neural Networks》)

836830411327cf12f09a5c702de68cc3f140ca6a

但是,ReLU 函数的缺点也比较明显。首先,ReLU 的输出仍然是非零对称的,可能出现 dW 恒为正或者恒为负,从而影响训练速度。

其次,也是最为重要的,当 x<0 时,ReLU 输出总为零。该神经元输出为零,则反向传播时,权重、参数的梯度横为零,造成权重、参数永远不会更新,即造成神经元失效,形成了“死神经元”。所以,针对这一问题,有时候会将 ReLU 神经元初始化为正偏值,例如 0.01。

Leaky ReLU

Leaky ReLU 对 ReLU 进行了改进,其图形表达式如下所示:

12846e03877572b65e8abbd8ad3e2bc84d5b1324

Leaky ReLU 的优点与 ReLU 类似:

没有饱和区,不存在梯度消失问题。
没有复杂的指数运算,计算简单、效率提高。
实际收敛速度较快,大约是 Sigmoid/tanh 的 6 倍。
不会造成神经元失效,形成了“死神经元”。

当然,0.01 的系数是可调的,一般不会太大。

ELU

ELU(Exponential Linear Units)也是 ReLU 的一个变种,其图形表达式如下所示:

201cf8fab2ae74849736376d1852d99fd974ae8a

ELU 继承了 Leaky ReLU 的所有优点:

没有饱和区,不存在梯度消失问题。
没有复杂的指数运算,计算简单、效率提高。
实际收敛速度较快,大约是 Sigmoid/tanh 的 6 倍。
不会造成神经元失效,形成了“死神经元”。
输出均值为零
负饱和区的存在使得 ELU 比 Leaky ReLU 更加健壮,抗噪声能力更强。

但是,ELU 包含了指数运算,存在运算量较大的问题。

Maxout

Maxout 最早出现在 ICML2013 上,由 Goodfellow 提出。其表达式如下所示:

7545b97835e9edc0aa06f43f0b55d226fa908049

Maxout 的拟合能力是非常强的,它可以拟合任意的的凸函数。最直观的解释就是任意的凸函数都可以由分段线性函数以任意精度拟合,而 Maxout 又是取 k 个隐藏层节点的最大值,这些”隐藏层"节点也是线性的,所以在不同的取值范围下,最大值也可以看做是分段线性的(上面的公式中 k = 2)。

eb6c23570bab92a16f95fbdb1f57d399918ef065

上图引自论文《Maxout Networks. Ian J. Goodfellow, David Warde-Farley, Mehdi Mirza, Aaron Courville, Yoshua Bengio》,可以说,Maxout 可以拟合任意凸函数,k 值越大,分段越多,拟合效果也就越好。

Maxout 保证了始终是线性区域,没有饱和区,训练速度快,而且不会出现坏死神经元。

如何选择合适的激活函数

首选 ReLU,速度快,但是要注意学习速率的调整,
如果 ReLU 效果欠佳,尝试使用 Leaky ReLU、ELU 或 Maxout 等变种。
可以尝试使用 tanh。
Sigmoid 和 tanh 在 RNN(LSTM、注意力机制等)结构中有所应用,作为门控或者概率值。其它情况下,减少 Sigmoid 的使用。

在浅层神经网络中,选择使用哪种激励函数影响不大。


原文发布时间为:2018-08-12

本文作者:红色石头

本文来自云栖社区合作伙伴“数据派THU”,了解相关信息可以关注“数据派THU”。

相关文章
|
Web App开发 缓存 数据安全/隐私保护
如何利用系统内存盘提升你的浏览器上网速度
内存盘这个东东大家应该都知道,内存的读写速度要远远高于硬盘,而我们日常上网浏览器都缓存在硬盘,为了进一步加速,内存盘这个东东就诞生了,虚拟内存大家应该都知道,就是把硬盘的一部分空间划分给内存使用,而内存盘恰恰相反,就是把内存划分出来创建一个新的盘符,这个分区的读写速度极高,大家可以吧日常上网的缓存文件丢进去,例如QQ和浏览器的缓存,今天和大家分享的是软媒魔方的一个小工具,叫做魔方内存盘,如果已经安装过魔方电脑大师的童鞋直接开启此功能就行了,没有的话也没关系,本站制作了单文件版,大小只有271kb,大家下载后即可使用。
|
5月前
|
JSON API 数据格式
详细说明--如何使用postman调试【阿里云身份证实名认证API接口】
本文介绍如何使用Postman开发实名认证服务。通过阿里云市场获取接口,购买免费套餐后在控制台获取AppCode,在Postman中设置请求地址、Authorization头(含APPCODE),并以x-www-form-urlencoded格式提交参数,发送请求即可获得JSON格式认证结果,调试错误可查看返回Header,成功后可导出源码。(239字)
503 10
|
存储 安全 编译器
第二问:C++中const用法详解
`const` 是 C++ 中用于定义常量的关键字,主要作用是防止值被修改。它可以修饰变量、指针、函数参数、返回值、类成员等,确保数据的不可变性。`const` 的常见用法包括:
|
机器学习/深度学习 数据挖掘 数据处理
深度学习之卫星图像中的环境监测
基于深度学习的卫星图像环境监测是指通过使用深度学习模型处理和分析来自卫星的遥感数据,以实现对地球环境的自动化监测和分析。这项技术极大提升了环境监测的效率、精度和规模,应用于气候变化研究、生态保护、自然灾害监测、城市扩张评估等多个领域。
620 1
|
NoSQL IDE MongoDB
Studio 3T 2025.5 (macOS, Linux, Windows) - MongoDB 的终极 GUI、IDE 和 客户端
Studio 3T 2025.5 (macOS, Linux, Windows) - MongoDB 的终极 GUI、IDE 和 客户端
485 2
Studio 3T 2025.5 (macOS, Linux, Windows) - MongoDB 的终极 GUI、IDE 和 客户端
|
数据可视化
GTD时间管理模型是什么
本文介绍GTD(Getting Things Done)时间管理方法,通过收集、整理、组织、回顾、执行五个步骤,帮助你清空大脑内存,减轻焦虑,提升专注力和生产力,轻松应对挑战,改善工作和生活质量。
429 7
GTD时间管理模型是什么
|
存储 安全 JavaScript
XSS跨站脚本攻击详解(包括攻击方式和防御方式)
这篇文章详细解释了XSS跨站脚本攻击的概念、原理、特点、类型,并提供了攻击方式和防御方法。
7535 2
|
存储 JavaScript 前端开发
使用vue实现一个添加和编辑的功能
使用vue实现一个添加和编辑的功能
480 1
|
人工智能 API 知识图谱
使用SiliconCloud尝试GraphRag——以《三国演义》为例(手把手教程,适合小白)
本文介绍了使用不同模型和平台体验GraphRAG的过程。首先通过OpenAI的GPT-4O Mini模型对沈从文的《边城》进行了分析,展示了如何安装GraphRAG并配置参数,最终实现了对文本的有效查询。随后,文章探讨了在国内环境下使用SiliconCloud作为替代方案的可能性,以《三国演义》为例,演示了使用SiliconCloud模型进行相同操作的步骤。此外,还讨论了使用本地模型如Ollama和LM Studio的可能性,尽管受限于硬件条件未能实际运行。最后,提出了混合使用在线对话模型API与本地或在线嵌入模型的方法,并列举了一些能够使GraphRAG流程跑通的大模型。
849 10
使用SiliconCloud尝试GraphRag——以《三国演义》为例(手把手教程,适合小白)
|
前端开发 安全 关系型数据库
秒合约系统/开发模式规则/技术架构实现
秒合约系统是一种高频交易平台,支持快速交易、双向持仓和高杠杆。系统涵盖用户注册登录、合约创建与编辑、自动执行、状态记录、提醒通知、搜索筛选、安全权限管理等功能。交易规则明确,设有价格限制和强平机制,确保风险可控。技术架构采用高并发后端语言、关系型数据库和前端框架,通过智能合约实现自动化交易,确保安全性和用户体验。