激活函数知识点汇总

本文介绍了激活函数的作用及选择标准,详细对比了sigmoid、tanh、ReLU等常见激活函数的优缺点,并探讨了解决非线性饱和区的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 使用激活函数的原因

  • 没有激活函数,无论神经网络有多少层,输出都是输入的线性组合
  • 激活函数给神经元引入了非线性因素,使得神经网络可以任意逼近任何非线性函数,这样神经网络就可以应用到众多的非线性模型中。

2. 什么函数才能成为激活函数

  • 非线性函数: 不管无论神经网络有多少层,输出都是输入的线性组合。退化为线性模型
  • 函数几乎处处可微:保证梯度的可计算性
  • 计算简单:relu比指数型激活函数计算量少
  • 非饱和性:饱和时指某些区间的梯度为零,,relu
  • 单调性:使得梯度方向不会经常改变,从而使训练更容易收敛。
  • 输出范围有限:有限输出使得对一些比较大的输入也有较平稳的表现,这是早期sigmoid比较常用的原因

3.常用的激活函数

3.1 sigmoid函数

在这里插入图片描述 f ( z ) = 1 1 + e x p ( − z ) f (z) = \frac{1}{1+exp(-z)} f(z)=1+exp(z)1

sigmoid的优点

  • 输出值有限,在0-1之间,有限输出使得对一些比较大的输入也有较平稳的表现
  • 函数光滑可微,导数计算方便

sigmoid的缺点

  • 存在非线性饱和区,容易在方向传播时引起梯度弥散
  • 涉及指数的计算,运算量大,速度不如relu

3.2 tanh 函数

在这里插入图片描述 f ( z ) = e z − e − z e z + e − z f (z) = \frac{e^{z}-e^{-z}}{e^{z}+e^{-z}} f(z)=ez+ezezez

tanh函数的优点

  • 函数光滑可微,导数计算方便
  • 输出值正负对称,稳定在[-1, 1]
  • 具有在0附近梯度较大,有利于区别小的特征差异
    tanh函数的缺点
  • 存在非线性饱和区,容易在方向传播时引起梯度弥散
  • 涉及指数的计算,运算量大,速度不如relu

3.3 relu函数

在这里插入图片描述
r e l u ( x ) = m a x ( x , 0 ) relu(x) = max ( x, 0 ) relux=max(x,0)

relu的优点

  • 第一,relu速度更快。采用sigmoid等函数,算激活函数时候(指数运算),计算量大,反向传播求误差梯度时,求导涉及除法,计算量相当大,而采用Relu激活函数,整个过程的计算量节省很多。

  • 第二,对于深层网络,由于sigmoid、tanh函数只在0附近的梯度较大,当趋向两边无穷远时,梯度很小。因此在反向传播时,很容易就出现梯度消失的情况(在sigmoid函数接近非线性饱和区时,变换太缓慢,导数趋于0,这种情况会造成信息丢失),从而无法完成深层网络的训练

  • 第三,Relu会使一部分神经元的输出为0,这样就造成了网络的稀疏性,并且减少了参数的相互依存关系,缓解了过拟合问题的发生

relu的缺点

  • 由于relu函数在负半轴的输出恒为0,这导致relu函数在训练时可能使部分神经元永远不会对数据由激活现象这个神经元的梯度永远为零,变成一个dead cell。
  • 函数值只能取正值。w的更新方向受到限制,只能往一三象限更新,当最优解在第四象限时,只能更新不能一步到达,只能沿梯子步到达。
  • 也有非线性饱和区问题

注意:如果学习率很大,神经元都”dead”的占比就更多。


3.4 Elu函数

在这里插入图片描述

f ( z ) = { z z &gt; = 0 α ( e z − 1 ) z &lt; 0 f(z) = \left\{\begin{matrix} z&amp; z&gt;=0&amp; \\ \alpha(e^{z}-1) &amp; z&lt;0 &amp; \end{matrix}\right. f(z)={zα(ez1)z>=0z<0

优点
elu函数堆relu进行了改进,使得在输入为负数的情况下,有一定输出。这样可以消除ReLU部分神经元dead的问题。
缺点

  • 也会陷入非线性饱和区
  • 指数运算复杂度比较高

3.5 Prelu、Leaky ReLU函数

在这里插入图片描述

r e l u ( x ) = α m a x ( x , 0 ) relu(x) = \alpha max ( x, 0 ) relux=αmax(x,0)
优点:

  • PReLU也是针对ReLU的一个改进型,relu直接乘以一个很小的参数,可以避免ReLU死掉的问题。
  • 相比于ELU,PReLU在负数区域内是线性运算,斜率虽然小,但是不会趋于0,运算量小。
  • 参数α一般是取0~1之间的数,当α=0.01时,成为Leaky ReLU。
3.6 自归一化激活函数 SELU

S E L U ( z ) = λ { z z &gt; = 0 α ( e z − 1 ) z &lt; 0 SELU(z) =\lambda \left\{\begin{matrix} z&amp; z&gt;=0&amp; \\ \alpha(e^{z}-1) &amp; z&lt;0 &amp; \end{matrix}\right. SELU(z)=λ{zα(ez1)z>=0z<0

优点:

  • 针对ELU的一个改进型,当选取 λ = 1.0506 , α = 1.67326 \lambda = 1.0506, \alpha = 1.67326 λ=1.0506,α=1.67326时,那么SELU(z) 的期望为0,方差为1. 文章中证明,如果使用SELU激活函数,并且初始化权重也为均值为0,方差为1,那么模型具有自归一化属性。自归一化可以在不加入BN的情况下,将每层的数据分布都变成均值为0,方差为1。这样可以:
    • 防止过拟合,
    • 解决了其他激活函数进入非线性饱和区带来的梯度弥散问题
    • 加速模型收敛

4. 如何解决tanh、sigmoid进入非线性饱和区的问题

  • 换一种激活函数,比如selu
  • 采用批量归一化算法

参考:
深度学习:激活函数的比较和优缺点,sigmoid,tanh,relu

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值