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

激活函数篇 03 —— ReLU、LeakyReLU、RandomizedLeakkyReLU、PReLU、ELU

本篇文章收录于专栏【机器学习】

以下是激活函数系列的相关的所有内容:

一文搞懂激活函数在神经网络中的关键作用

逻辑回归:Sigmoid函数在分类问题中的应用


整流线性单位函数(Rectified Linear Unit, ReLU),又称修正线性单元,是一种人工神经网络中常用的激活函数,通常指代以斜坡函数及其变种为代表的非线性函数。

ReLU ( x ) = max ⁡ ( 0 , x ) \text{ReLU}(x) = \max(0, x) ReLU(x)=max(0,x)
当输入 x > 0 x > 0 x>0 时,输出等于输入;当输入 x ≤ 0 x \leq 0 x0 时,输出为 0。
在这里插入图片描述
传统的激活函数如 Sigmoid 和 Tanh 存在梯度消失和计算效率较低的问题。ReLU 函数解决了这些问题,具有计算简单、不易出现梯度消失等特点。

应用场景

  • 神经网络隐藏层:引入非线性,使网络能够学习复杂的特征表示。
  • 输出层:在需要输出非负值的回归任务中使用。
  • 特定任务:广泛应用于图像识别、自然语言处理等领域,如 CNN 和 RNN。

函数特点

  • 控制输出范围:输出值限制在 [ 0 , ∞ ) [0, \infty) [0,),防止梯度消失或爆炸。
  • 引入稀疏性:许多输出为零,减少模型复杂度,提高计算效率,防止过拟合。
  • 提供可导性:其导数为:
    ReLU ′ ( x ) = { 1 if  x > 0 0 if  x ≤ 0 \text{ReLU}'(x) = \begin{cases} 1 & \text{if } x > 0 \\ 0 & \text{if } x \leq 0 \end{cases} ReLU(x)={10if x>0if x0

  • 优点
    • 计算简单,计算效率高。
    • 不易出现梯度消失问题。
    • 引入稀疏性,有助于减少模型复杂度,提高计算效率,防止过拟合。
  • 缺点
    • 神经元死亡:当 x ≤ 0 x \leq 0 x0 时,导数为 0,可能导致神经元死亡。
    • 输出不以 0 为中心,可能影响梯度稳定性。

ReLU 函数的两个变体

Leaky ReLU:是 ReLU 的一个变体,在输入小于等于 0 时有一个小的非零斜率 α \alpha α,从而避免了神经元死亡问题:
Leaky ReLU ( x ) = { x if  x > 0 α x if  x ≤ 0 \text{Leaky ReLU}(x) = \begin{cases} x & \text{if } x > 0 \\ \alpha x & \text{if } x \leq 0 \end{cases} Leaky ReLU(x)={xαxif x>0if x0
α \alpha α 是一个小常数,通常取 0.01。在反向传播过程中,对于LeakyReLU激活函数输入小于 0 0 0 的部分,也可以计算得到梯度(ReLU的值为0),这样就避免了梯度方向锯齿问题。
在这里插入图片描述

Randomized Leaky ReLU: 研究表明 α \alpha α 的取值对于结果是有效的, α \alpha α 的分布满足均值为0,标准差为1的正态分布。有部分论文指出 Randomized LeakyReLU 相比 LeakyReLU 能得更好的结果。究其原因,是随机LeakyReLU小于0部分的随机梯度,为优化方法引入了随机性,这些随机噪声可以帮助参数取值跳出局部最优和鞍点。

以爬山为例,目标是找到山顶(最优解)。 Leaky ReLU 就像是你每次爬山时,每一步的步长是固定的。而RLeakyReLU 则像是你每次爬山时,每一步的步长是随机的。这种随机性有时会让你不小心跨过一个山丘(局部最优),从而找到更高的山顶(更优解),所以听起来有点扯的感觉,运气成分吧。

PReLU: 所以说 α \alpha α 的取值也很重要,但是如果都是随机取值的话未免不太科学,所以就有论文提出将 α \alpha α 作为参数来进行学习,所以多了参数叫 num_parametersinit,前者是可学习的 α \alpha α数量,init是 α \alpha α 的初始值。

torch.nn.PReLU(num_parameters=1, init=0.01, device=None, dtype=None)

ELU,即指数线性单元(Exponential Linear Unit),解决神经网络训练中的一些问题,如梯度消失、非连续性以及输出均值偏离零等问题。

理想的激活函数应满足两个条件:

  1. 输出的分布是零均值的,加快训练速度。
  2. 激活函数是单侧饱和的,更好的收敛。

LeakyReLU满足1不满足2;而ReLU满足2不满足1,ELU 都满足。

ELU:在 x ≤ 0 x \leq 0 x0 时有平滑的指数衰减,解决神经元死亡问题,数学表达式为:
ELU ( x ) = { x if  x > 0 α ( e x − 1 ) if  x ≤ 0 \text{ELU}(x) = \begin{cases} x & \text{if } x > 0 \\ \alpha (e^x - 1) & \text{if } x \leq 0 \end{cases} ELU(x)={xα(ex1)if x>0if x0

在这里插入图片描述

特点

缓解梯度消失问题:当 ( x > 0 ),ELU 函数的行为类似于ReLU,允许直接传递输入,从而避免了梯度消失的问题。
对负值的处理更加温和:与ReLU不同的是,当 ( x < 0 ),ELU 不是简单地将它们置为0,而是通过指数函数给出一个非零的输出,这有助于保持网络中的信息流动。
输出的均值更接近于零:由于其在负区间内的特性,ELU 能够帮助神经网络学习到更具有鲁棒性的特征表示,并且倾向于产生更接近于零的输出均值,这对于加速学习过程是有益的。

ELU 的导数在 x > 0 x > 0 x>0 时为1,在 x < 0 x < 0 x<0 时为 α ⋅ e x \alpha \cdot e^x αex。特别地,在 x = 0 x = 0 x=0 处,通常认为其导数是连续的,取左侧或右侧极限值之一。

ELU 适用于需要减少偏移量并加快学习速度的任务,但计算上比ReLU稍微复杂一些,因为它涉及到指数运算。因此,在设计深度学习模型时,需权衡这些因素来决定最适合的激活函数。


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

相关文章:

  • Photoshop自定义键盘快捷键
  • 基于机器学习的DDoS检测系统实战
  • HAL库外设宝典:基于CubeMX的STM32开发手册(持续更新)
  • 第七节 文件与流
  • Linux内核中的软中断与NAPI机制:高效处理网络数据包
  • vscode中使用code-runner插件运行c程序语法报错code: 1
  • 如何参与开源项目
  • 33.日常算法
  • Python进阶-在Ubuntu上部署Flask应用
  • iPhone 在华销量大幅下挫
  • STM32启动过程概述
  • Elasticsearch term精确查询无数据
  • Maven 依赖范围与排除
  • 如何训练开源模型成为专业业务模型
  • Racecar Gym 总结
  • DeepSeek训练成本与技术揭秘
  • android中关于CheckBox自定义选中图片选中无效问题
  • 京准:NTP卫星时钟服务器对于DeepSeek安全的重要性
  • ChatGPT搜索免费开放:AI搜索引擎挑战谷歌霸主地位全面分析
  • docker compose文件中的${}怎么赋值
  • uniapp 编译生成鸿蒙正式app步骤
  • JAVA安全—FastJson反序列化利用链跟踪autoType绕过
  • Composo:企业级AI应用的质量守门员
  • 四元数:连接四维时空与三维旋转的数学桥梁
  • 超越传统IDE:Cursor智能编码介绍
  • Mysql系列之--InnoDB存储引擎