掘金 人工智能 05月16日 11:03
常见的激活函数汇总
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_guoji1.html

 

本文深入探讨了神经网络中激活函数的作用及其重要性,详细介绍了Sigmoid、Tanh、ReLU、Leaky ReLU、PReLU和ELU等多种常见激活函数的原理、优缺点和适用场景。文章旨在帮助读者理解不同激活函数的特性,从而在构建神经网络时做出更合适的选择。

sigmoid函数将输入压缩到(0, 1)区间,适用于二分类输出层。然而,它存在梯度消失问题,当输入值绝对值较大时,梯度趋近于0,导致网络难以训练。此外,sigmoid输出非零均值,计算复杂度也相对较高,涉及指数运算。

Tanh函数将输入压缩到(-1, 1)区间,具有零均值输出,有助于缓解神经元输入的偏移问题。虽然Tanh函数比Sigmoid收敛更快,但仍存在梯度消失问题,计算复杂度也较高。

ReLU函数在x≥0时,梯度恒为1,有效缓解了梯度消失问题,计算简单高效,且加速网络收敛。但是,当x<0时,神经元梯度为0,可能导致神经元“死亡”问题。此外,ReLU输出非零均值。

Leaky ReLU 函数通过引入一个小的非零斜率来解决ReLU的神经元“死亡”问题,保证所有神经元都能参与训练。它保留了ReLU的优点,但α值需要手动设定,不同的α值可能影响网络性能。

PReLU将Leaky ReLU中的α作为可学习参数,使网络能自适应调整负半轴斜率,提高表达能力,性能更优。然而,它增加了训练参数,可能导致过拟合风险增加。

ELU函数结合了Sigmoid和ReLU的优点,加快了收敛速度,缓解了梯度消失问题。在x<0时,ELU函数值取负数,使输出均值接近0。但ELU计算复杂度增加,α值需要手动设定。

  在神经网络中,激活函数(Activation Function)扮演着至关重要的角色,它为神经网络引入非线性因素,使得网络能够学习和模拟复杂的非线性函数关系,从而具备处理各种复杂问题的能力。如果没有激活函数,多层神经网络将仅仅是一个线性组合模型,其表达能力会受到极大限制。以下是几种常见的激活函数汇总。

1. Sigmoid 函数

  Sigmoid 函数也称为 Logistic 函数,是一种常用的激活函数,它将输入值压缩到 (0, 1) 区间内,表达式为

sigmoid(x)=11+exsigmoid(x)=\frac{1}{1+e^{-x}}

函数图像为

  Sigmoid 函数的图像是一条平滑的 S 形曲线,当 x 趋近于负无穷时,函数值趋近于 0;当 x 趋近于正无穷时,函数值趋近于 1。在 x=0 处,函数值是 0.5 。

优点

输出范围固定:输出值在 (0, 1) 之间,适合用于二分类问题的输出层,可将输出解释为概率。

平滑可导:函数处处连续可导,便于使用梯度下降等基于梯度的优化算法进行参数更新。

缺点

梯度消失问题:在 x 绝对值较大时,函数的梯度趋近于 0,导致在反向传播过程中,梯度很难传递到前面的层,使得网络难以训练,即出现梯度消失现象。

非零均值输出:输出值恒大于 0,这会导致后一层神经元的输入是非零均值的信号,可能会使梯度更新出现偏移,影响训练效果。

计算复杂度较高:涉及指数运算,在计算资源有限或大规模网络中,计算效率相对较低。

2. Tanh 函数

  Tanh 函数(双曲正切函数)将输入值压缩到 (-1, 1) 区间内,表达式为

tanh(x)=exexex+extanh(x)=\frac{e^x-e^{-x}}{e^x+e^{-x}}

函数图像为

  tanh 函数的图像是 S 形曲线,关于原点对称,在x=0处,函数值为 0 。

优点

零均值输出:输出值以 0 为中心,相比 Sigmoid 函数,能缓解后一层神经元输入的偏移问题,使得梯度更新更加合理。

比 Sigmoid 函数收敛速度快:在一定程度上缓解了梯度消失问题。

缺点

仍存在梯度消失:在 x 绝对值较大时,函数的梯度同样趋近于 0,深层网络训练时依然会面临梯度消失的挑战。

计算复杂度较高:同样涉及指数运算,计算效率有待提升。

3. ReLU 函数

  ReLU(Rectified Linear Unit,修正线性单元)函数是目前神经网络中使用最为广泛的激活函数之一,表达式为

ReLU(x)=max(0,x)ReLU(x)=max(0,x)

  即当x0x\geq 0时,函数值为x;当x<0x<0时,函数值为0。

函数图像为

  ReLU 函数图像在 x<0x<0 时,输出为 0;在 x0x\geq 0 时,是一条斜率为 1 的直线。

优点

有效缓解梯度消失:在 x0x\geq 0 时,梯度恒为 1,不会出现梯度消失问题,使得网络能够更有效地进行反向传播和训练。

计算简单高效:仅需进行一次比较和一次取值操作,相比 Sigmoid 和 Tanh 函数,大大减少了计算量,提高了训练速度。

加速网络收敛:在实际应用中,使用 ReLU 函数的神经网络通常收敛速度更快。

缺点

神经元 “死亡” 问题:当 x<0x<0 时,神经元的梯度为 0,在反向传播过程中,如果参数更新导致某些神经元的输入始终小于等于 0,那么这些神经元将不再更新权重,就像 “死亡” 了一样,无法恢复。

输出非零均值:与 Sigmoid 函数类似,输出不是以 0 为中心,可能影响梯度更新。

4. Leaky ReLU 函数

  Leaky ReLU 是对 ReLU 函数的改进,旨在解决 ReLU 函数中神经元 “死亡” 的问题,表达式为

LeakyReLU(x)={x,ifx0αx,ifx<0LeakyReLU(x)=\begin{cases} x, \hspace{1em} if \hspace{0.25em} x\geq0 \\ \alpha x, \hspace{0.45em} if \hspace{0.25em} x<0 \end{cases}

  其中 α\alpha 是一个很小的正数,如 0.01,使得 x<0x<0 时,函数依然有一个很小的梯度。

示意的函数图像为

优点

解决神经元 “死亡” 问题:通过引入一个小的非零斜率,避免了在 x0x\leq 0 时神经元 “死亡” 的情况,保证了所有神经元在一定程度上都能参与训练。

保留 ReLU 的优点:继承了 ReLU 计算简单、缓解梯度消失等优点。

缺点

超参数问题α\alpha 的值需要人为设定,不同的 α\alpha 值可能对网络性能产生不同影响,需要通过调参来确定合适的值。

5. PReLU 函数

  PReLU(Parametric ReLU)是对 Leaky ReLU 的进一步改进,它将 α\alpha 作为可学习的参数,在训练过程中与网络其他参数一起进行更新,表达式为

PReLU(x)={x,ifx0αix,ifx<0PReLU(x)=\begin{cases} x, \hspace{1.3em} if \hspace{0.25em} x\geq0 \\ \alpha_i x, \hspace{0.45em} if \hspace{0.25em} x<0 \end{cases}

  其中 αi\alpha_i 是针对每个神经元的可学习参数。

优点

自适应调整:通过让 α\alpha 成为可学习参数,使得网络能够根据数据自适应地调整负半轴的斜率,提高了网络的表达能力。

性能更优:相比 Leaky ReLU,在一些情况下能取得更好的训练效果和性能表现。

缺点

增加训练参数:引入了额外的可学习参数,增加了网络的复杂度和训练参数的数量,可能会导致过拟合风险增加。

6. ELU 函数

  ELU(Exponential Linear Unit,指数线性单元)函数结合了 Sigmoid 和 ReLU 的优点,表达式为

ELU(x)={x,ifx0α(ex1),ifx<0ELU(x)=\begin{cases} x, \hspace{3.5em} if \hspace{0.25em} x\geq0 \\ \alpha(e^x-1) , \hspace{0.1em} if \hspace{0.25em} x<0 \end{cases}

  其中 α\alpha 是一个固定的超参数,通常取 0.1 或 0.2 。

优点

加快收敛速度:在 x<0x<0 时,函数值会取到负数,使得输出均值接近 0,从而加快网络的收敛速度。

缓解梯度消失:在 x<0x<0 时,函数的导数不为 0,缓解了在负半轴的梯度消失问题。

缺点

计算复杂度增加:在 x<0x<0 时涉及指数运算,相比 ReLU 函数,计算复杂度有所提高。

超参数问题α\alpha 的值需要手动设定,合适的 α\alpha 值需要通过实验来确定。

  不同的激活函数适用于不同的场景和任务,在构建神经网络时,需要根据具体问题、网络结构和数据特点,合理选择激活函数,以达到更好的训练效果和性能表现。

Fish AI Reader

Fish AI Reader

AI辅助创作,多种专业模板,深度分析,高质量内容生成。从观点提取到深度思考,FishAI为您提供全方位的创作支持。新版本引入自定义参数,让您的创作更加个性化和精准。

FishAI

FishAI

鱼阅,AI 时代的下一个智能信息助手,助你摆脱信息焦虑

联系邮箱 441953276@qq.com

相关标签

激活函数 神经网络 ReLU Sigmoid 深度学习
相关文章