当前位置: 首页 > article >正文

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

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

目录

Sigmoid

Tanh 函数

ReLU(Rectified Linear Unit)函数 

Leaky ReLU

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博客


http://www.kler.cn/a/373020.html

相关文章:

  • 【综合算法学习】(第十篇)
  • zabbix 6.0 监控clickhouse(单机)
  • Android 在github网站下载项目:各种很慢怎么办?比如gradle下载慢;访问github慢;依赖下载慢
  • Pinctrl子系统pinctrl_desc结构体进一步介绍
  • 11-Dockerfile
  • 【Searxng】Searxng docker 安装
  • 大模型流水线并行和量化学习资料
  • 第12次CCF CSP认证真题解
  • iOS MPNowPlayingInfoCenter 通知栏、锁屏 显示当前播放的媒体信息
  • git修改用户名与查看git的账号与密码
  • WPF中设置DataGrid的常用样式
  • Mac环境鸿蒙模拟器安装
  • VueSSR详解 VueServerRenderer Nutx
  • Docker学习笔记【从入门到精通】
  • ubuntu 挂载 新 硬盘 ext3
  • 【重学 MySQL】七十九、深入探索用户变量
  • 警务辅助人员管理系统小程序ssm+论文源码调试讲解
  • solidity的struct对象,web3j java解析输出参数
  • 海思MPP音视频总结
  • uniapp离线打包app无法调用相机权限的解决思路
  • RHCE http作业
  • hdlbits系列verilog解答(DFF8-8位D触发器)-81
  • 大语言模型(LLM)入门级选手初学教程 II
  • Linux学习_11
  • 校园社团信息管理:Spring Boot框架的深度解析
  • Springboot3.3 + Mybatis / Mybatis-plus