sheng的学习笔记-AI基础-激活函数

ai目录:sheng的学习笔记-AI目录-CSDN博客

目录

Sigmoid

[Tanh 函数](#Tanh 函数)

[ReLU(Rectified Linear Unit)函数](#ReLU(Rectified Linear Unit)函数)

[Leaky ReLU](#Leaky ReLU)

[ELU(Exponential Linear Unit)](#ELU(Exponential Linear Unit))

SEIU

Swish

激活函数的选择


激活函数(Activation Function) 是神经网络中的一个关键组件,负责将输入的线性组合转化为非线性输出。它赋予神经网络模型以复杂的表达能力,使其能够处理非线性问题,比如分类、图像识别和自然语言处理等任务。

Sigmoid

Sigmoid 函数是深度学习中最早广泛使用的激活函数之一,它将输入值映射到 ( 0 , 1 ) 的区间,输出为一个概率值。其公式为:

特点 :输出值在 0 00 到 1 11 之间,因此常用于二分类问题。
缺点 :梯度消失问题,在输入值较大或较小时,Sigmoid 函数的梯度(导数)接近零,这会导致反向传播过程中梯度逐渐减小(消失),影响权重的更新,特别是在深层网络中。
图示

Tanh 函数

Tanh(双曲正切函数)是 Sigmoid 的扩展版本,输出范围为 ( − 1 , 1 ) ,可以解决 Sigmoid 在输出上的偏移问题。其公式为

特点 :输出范围为 ( − 1 , 1 ) (-1, 1)(−1,1),相比 Sigmoid 更加居中,能够减少偏移(mean shift)问题。
缺点 :同样存在梯度消失问题,在输入值非常大或非常小时,Tanh 的梯度依然会变得很小。

图示:

ReLU(Rectified Linear Unit)函数

ReLU 是目前使用最为广泛的激活函数之一。ReLU 函数的输出在正数区域保持线性,在负数区域则为 0。其公式为:

特点 :当输入大于 0 时,ReLU 直接输出输入值;当输入小于 0 时,输出为 0。
优点

解决梯度消失问题:ReLU 的梯度为 1(当 x > 0 x > 0x>0 时),不会像 Sigmoid 和 Tanh 那样使梯度变小,从而有效缓解梯度消失问题。

计算效率高:ReLU 计算非常简单,只需要一个最大值操作,非常适合在深层网络中使用。
缺点:死亡 ReLU 问题,当输入的值小于 0 时,ReLU 的输出一直为 0,这意味着神经元可能会永远不再激活,这在某些情况下会导致网络性能下降。

Leaky ReLU

Leaky ReLU 是对 ReLU 的一种改进,解决了 ReLU 在负数区域输出为 0 时神经元"死亡"的问题。Leaky ReLU 在负数区域给予一个很小的正数斜率 α (通常为 0.01)而不是完全为 0,其公式为:

优点:在负数区域仍然保持一个小的斜率,使得神经元不完全失活。减少了 ReLU 函数中的死亡 ReLU 问题,确保神经元即使在负值输入时也能有一定的梯度更新。

ELU(Exponential Linear Unit)

ELU 是另一种改进的 ReLU 激活函数,在负数区域使用指数函数进行平滑。其公式为:

其中 α 是一个超参数,通常取值为 1。

  • 特点:在正数区域与 ReLU 类似,但在负数区域使用指数函数进行平滑,避免了死亡 ReLU 问题。
  • 优点:与 Leaky ReLU 相比,ELU 在负数区域提供的平滑曲线可以在一定程度上减少偏差。
  • 缺点:计算量比 ReLU 稍大,因为负数区域的计算涉及指数运算。

SEIU

是ELU激活函数的可扩展变体,如果你构建一个仅由密集层堆叠组成的神经网络,并且如果所有隐藏层都使用SELU激活函数,则该网络是自归一化的:每层的输出倾向于在训练过程中保留平均值0和标准差1,从而解决了梯度消失/梯度爆炸的问题。

SELU激活函数通常大大优于这些神经网络(尤其是深层神经网络)的其他激活函数。但是,有一些产生自归一化的条件

  • ·输入特征必须是标准化的(平均值为0,标准差为1)。
  • ·每个隐藏层的权重必须使用LeCun正态初始化。在Keras中,这意味着设置kernel_initializer="lecun_normal"。·
  • 网络的架构必须是顺序的。不幸的是,如果你尝试在非顺序架构(例如循环网络)中使用SELU(见第15章)或具有跳过连接的网络(即在Wide&Deep网络中跳过层的连接),将无法保证自归一化,因此SELU不一定会胜过其他激活函数。

Swish

Swish 是一种新的激活函数,由 Google 提出,它结合了 ReLU 和 Sigmoid 的优势。其公式为

特点 :Swish 在小于 0 的输入值时逐渐趋近于 0,而在大于 0 时逐渐增大,因此它在负值区域不会像 ReLU 那样硬性截断。
优点 :Swish 的非线性变化更加平滑,能够捕获更多的复杂模式,特别适合用于深度神经网络中。
缺点:计算量比 ReLU 更大,因为它涉及 Sigmoid 的计算。

激活函数的选择

神经网络中的激活函数选择取决于具体任务和网络结构。以下是一些常见的经验法则:

  • ReLU 是目前最常用的激活函数,特别是在卷积神经网络(CNN)和全连接网络(FCN)中表现优异。对于大多数深度网络,ReLU 是一个很好的起点,因为它能有效避免梯度消失问题。
  • Leaky ReLU 和 ELU 是 ReLU 的改进版本,适合于有负输入的场景或避免神经元失活的场景。
  • Sigmoid 和 Tanh 适用于一些特殊情况,特别是在需要输出概率或对称输出的情况下(例如,输出为 [ − 1 , 1 ] [-1, 1][−1,1])。不过它们通常会导致梯度消失,因此不推荐用于深层网络。
  • Swish 是一种更平滑的激活函数,在某些复杂任务(如超深网络)上可能表现优异。

通常SELU>ELU>leaky ReLU(及其变体)>ReLU>tanh>logistic

  • 如果网络的架构不能自归一化,那么ELU的性能可能会优于SELU(因为SELU在z=0时不平滑)。
  • 如果你非常关心运行时延迟,那么你可能更喜欢leaky ReLU。
  • 如果你不想调整其他超参数,则可以使用Keras使用的默认α值(例如,leaky ReLU为0.3)。

如果你有空闲时间和计算能力,则可以使用交叉验证来评估其他激活函数,例如,如果网络过拟合,则为RReLU;如果你的训练集很大,则为PReLU。也就是说,由于ReLU是迄今为止最常用的激活函数,因此许多库和硬件加速器都提供了ReLU特定的优化。因此,如果你将速度放在首位,那么ReLU可能仍然是最佳选择。

参考文章

【AI知识点】激活函数(Activation Function)-CSDN博客

相关推荐
老艾的AI世界2 小时前
AI翻唱神器,一键用你喜欢的歌手翻唱他人的曲目(附下载链接)
人工智能·深度学习·神经网络·机器学习·ai·ai翻唱·ai唱歌·ai歌曲
DK221512 小时前
机器学习系列----关联分析
人工智能·机器学习
FreedomLeo13 小时前
Python数据分析NumPy和pandas(四十、Python 中的建模库statsmodels 和 scikit-learn)
python·机器学习·数据分析·scikit-learn·statsmodels·numpy和pandas
风间琉璃""3 小时前
二进制与网络安全的关系
安全·机器学习·网络安全·逆向·二进制
Java Fans4 小时前
梯度提升树(Gradient Boosting Trees)详解
机器学习·集成学习·boosting
谢眠4 小时前
机器学习day6-线性代数2-梯度下降
人工智能·机器学习
sp_fyf_20245 小时前
【大语言模型】ACL2024论文-19 SportsMetrics: 融合文本和数值数据以理解大型语言模型中的信息融合
人工智能·深度学习·神经网络·机器学习·语言模型·自然语言处理
CoderIsArt5 小时前
基于 BP 神经网络整定的 PID 控制
人工智能·深度学习·神经网络
z千鑫6 小时前
【人工智能】PyTorch、TensorFlow 和 Keras 全面解析与对比:深度学习框架的终极指南
人工智能·pytorch·深度学习·aigc·tensorflow·keras·codemoss
EterNity_TiMe_6 小时前
【论文复现】神经网络的公式推导与代码实现
人工智能·python·深度学习·神经网络·数据分析·特征分析