深入理解 ReLU 激活函数及其在深度学习中的应用【激活函数、Sigmoid、Tanh】

news2024/9/21 16:22:09

ReLU(Rectified Linear Unit)激活函数

ReLU(Rectified Linear Unit)激活函数是一种广泛应用于神经网络中的非线性激活函数。其公式如下:

ReLU ( x ) = max ⁡ ( 0 , x ) \text{ReLU}(x) = \max(0, x) ReLU(x)=max(0,x)

在这里插入图片描述

在图中,你可以看到 ReLU 函数的特点:

  1. x < 0 x < 0 x<0 时, ReLU ( x ) = 0 \text{ReLU}(x) = 0 ReLU(x)=0: 这意味着所有负输入值都被映射为 0,这也是 ReLU 无法处理负值的原因。虽然它能够处理负值,但输出总是 0。
  2. x ≥ 0 x \ge 0 x0 时, ReLU ( x ) = x \text{ReLU}(x) = x ReLU(x)=x: 这意味着正输入值保持不变,正半部分是线性的。

ReLU 激活函数的性质

  1. 简单易计算:ReLU 激活函数的计算非常简单,只需要比较输入值和零的大小,然后取较大值。这使得它在计算上非常高效。

  2. 非线性:尽管 ReLU 看起来像是线性的(因为正半部分是线性的),但它引入了非线性因素。这种非线性有助于神经网络学习复杂的模式。

  3. 稀疏激活:由于 ReLU 函数会将负值变为零,因此它能够使得网络中的一部分神经元输出为零。这种稀疏激活可以提高模型的训练效率和泛化能力。

  4. 梯度消失问题:相较于 sigmoid 和 tanh 激活函数,ReLU 缓解了梯度消失问题。sigmoid 和 tanh 在输入值极大或极小时,梯度会变得非常小,导致训练速度缓慢甚至停滞。而 ReLU 在正值区间梯度始终为1,因此在训练深络时,梯度更容易传递。

性质一:简单易计算

ReLU 激活函数的计算非常简单,只需要比较输入值和零的大小,然后取较大值。这使得它在计算上非常高效:

ReLU ( x ) = max ⁡ ( 0 , x ) \text{ReLU}(x) = \max(0, x) ReLU(x)=max(0,x)

这种简单的计算方式使得 ReLU 在前向传播和反向传播过程中都非常快速,极大地提升了训练速度。与其他需要复杂数学运算的激活函数相比,ReLU 的实现更加高效,特别适合大型神经网络的训练。

性质二:非线性

ReLU 激活函数的公式为:
ReLU ( x ) = max ⁡ ( 0 , x ) \text{ReLU}(x) = \max(0, x) ReLU(x)=max(0,x)

ReLU 看起来像是线性的,因为在正半部分(即 x ≥ 0 x \geq 0 x0 时),输出等于输入,表现为线性关系。然而,ReLU 实际上引入了非线性因素:

  • 在负半部分(即 x < 0 x < 0 x<0 时),输出为 0,这是一个非线性关系。
  • 这种分段线性使得 ReLU 能够在神经网络中引入非线性特性,帮助模型学习复杂的模式。

性质三:稀疏激活

ReLU 函数的另一个重要性质是它能够实现稀疏激活:

ReLU ( x ) = max ⁡ ( 0 , x ) \text{ReLU}(x) = \max(0, x) ReLU(x)=max(0,x)

这意味着,对于任何负值输入 x x x,ReLU 的输出都是 0。对于正值输入,输出等于输入值。这种特性导致了所谓的“稀疏激活”,即在某些输入条件下,网络中的很多神经元会输出 0。稀疏激活有以下几个好处:

  1. 提高计算效率

    • 当许多神经元的输出为 0 时,计算量减少,因为这些 0 值不会对下一层的计算贡献任何影响。这使得模型的 计算效率更高 ,特别是在前向传播和反向传播过程中。
  2. 减少过拟合

    • 稀疏激活起到了一种正则化的作用,防止模型过拟合。因为 只有部分神经元被激活,网络的复杂性被限制住了 ,有助于模型在训练数据上不过度拟合,从而在测试数据上表现更好。
  3. 增强模型的表达能力

    • 稀疏激活能够使得模型在 较少的参数和计算下表达复杂的非线性关系 。因为在不同的输入情况下,不同的神经元被激活,模型能够学习到更多不同的特征。

处理负值输入的局限性

虽然 ReLU 能够处理负值输入(即输入为负时输出为 0),但它 在负值区间没有输出。这意味着如果输入的数据大部分或全部是负值,ReLU 的输出将全部为 0,这会导致信息丢失并使模型无法学习。

在某些情况下,例如网络的最后一层需要处理负值(例如输出可以是正或负),使用 ReLU 作为激活函数会导致信息丢失。这是因为 ReLU 在负值区间的输出为 0,无法正确反映负值输入的信息。

为什么这与处理负值不矛盾

ReLU 的稀疏激活特性是指在数据中只有一部分输入是负值,而不是所有输入都为负值。在这种情况下,ReLU 能够利用其稀疏激活的优势:

虽然 ReLU 函数对负值输入输出为 0,似乎忽略了这些负值信息,但这并不意味着它无法处理负值输入。相反,这种处理方式带来了以下几个方面的好处:

  1. 简单且有效的非线性转换

    • 将负值输入归零是 ReLU 函数的一种简单的非线性转换方式,这种非线性有助于神经网络捕捉复杂的模式。
  2. 防止梯度消失

    • 在 Sigmoid 和 Tanh 函数中,极端输入值(非常大或非常小)会导致梯度变得非常小,导致梯度消失问题。而 ReLU 在正值区间的梯度始终为 1,这使得梯度能够顺利传播,特别是在深层网络中,这一点非常重要。
  3. 选择性激活

    • ReLU 的稀疏激活使得网络能够动态选择哪些神经元在当前输入下是重要的。这种选择性激活有助于模型专注于更重要的特征,同时抑制不重要的特征。

性质四:防止梯度消失

与 Sigmoid 和 Tanh 激活函数相比,ReLU 在防止梯度消失问题上具有显著优势。梯度消失问题是指在深层神经网络中,随着梯度在层层反向传播时逐渐减小,导致早期层的权重几乎不会更新。这会严重影响模型的训练效果。

在这里插入图片描述

Sigmoid 激活函数

Sigmoid 激活函数的公式为:
sigmoid ( x ) = 1 1 + e − x \text{sigmoid}(x) = \frac{1}{1 + e^{-x}} sigmoid(x)=1+ex1

Sigmoid 函数将输入映射到 (0, 1) 的区间内,其图形呈现为一个 S 形曲线:

  • x x x 很大时, sigmoid ( x ) \text{sigmoid}(x) sigmoid(x) 接近 1。
  • x x x 很小时, sigmoid ( x ) \text{sigmoid}(x) sigmoid(x) 接近 0。
  • x x x 接近 0 时, sigmoid ( x ) \text{sigmoid}(x) sigmoid(x) 接近 0.5。

Sigmoid 函数的导数为:
sigmoid ′ ( x ) = sigmoid ( x ) ( 1 − sigmoid ( x ) ) \text{sigmoid}'(x) = \text{sigmoid}(x) (1 - \text{sigmoid}(x)) sigmoid(x)=sigmoid(x)(1sigmoid(x))

可以看出,Sigmoid 函数的导数也呈现 S 形曲线:

  • x x x 很大或很小时,导数接近 0。
  • x x x 接近 0 时,导数接近最大值 0.25。
Tanh 激活函数

Tanh 激活函数的公式为:
tanh ( x ) = e x − e − x e x + e − x \text{tanh}(x) = \frac{e^x - e^{-x}}{e^x + e^{-x}} tanh(x)=ex+exexex

Tanh 函数将输入映射到 (-1, 1) 的区间内,其图形呈现为一个中心对称的 S 形曲线:

  • x x x 很大时, tanh ( x ) \text{tanh}(x) tanh(x) 接近 1。
  • x x x 很小时, tanh ( x ) \text{tanh}(x) tanh(x) 接近 -1。
  • x x x 接近 0 时, tanh ( x ) \text{tanh}(x) tanh(x) 接近 0。

Tanh 函数的导数为:
tanh ′ ( x ) = 1 − tanh 2 ( x ) \text{tanh}'(x) = 1 - \text{tanh}^2(x) tanh(x)=1tanh2(x)

可以看出,Tanh 函数的导数也是中心对称的 S 形曲线:

  • x x x 很大或很小时,导数接近 0。
  • x x x 接近 0 时,导数接近最大值 1。
激活函数的比较:Sigmoid vs Tanh
  1. 输出范围

    • Sigmoid 函数的输出范围为 (0, 1),适用于输出概率值的情况。
    • Tanh 函数的输出范围为 (-1, 1),适用于需要输出负值的情况。
  2. 均值归零

    • Sigmoid 函数的输出非均值归零,可能导致后续层的输入偏向某一方向。
    • Tanh 函数的输出均值归零,使得后续层的输入更为平衡,有助于梯度下降的收敛。
  3. 梯度消失问题

    • Sigmoid 函数和 Tanh 函数都存在梯度消失问题,特别是在输入值绝对值较大时,导数趋近于 0。
    • Tanh 函数在一定程度上缓解了梯度消失问题,但仍然无法完全避免。
ReLU 的梯度优势
  • ReLU 在正值区间的梯度始终为 1,这使得梯度能够顺利传播,特别是在深层网络中,这一点非常重要。
  • 虽然 ReLU 在负值区间的梯度为 0,但这不会影响正值区间的梯度传播,因此整体上 ReLU 能有效防止梯度消失问题。

ReLU 的变种

虽然 ReLU 在很多应用中表现良好,但它也有一些缺点,如“死亡 ReLU”问题(一些神经元在训练过程中可能永远不会被激活,即输出一直为零)。为了解决这些问题,出现了很多 ReLU 的变种:

  1. Leaky ReLU
    Leaky ReLU ( x ) = { x if  x ≥ 0 α x if  x < 0 \text{Leaky ReLU}(x) = \begin{cases} x & \text{if } x \geq 0 \\ \alpha x & \text{if } x < 0 \end{cases} Leaky ReLU(x)={xαxif x0if x<0
    其中 α \alpha α 是一个很小的正数(如 0.01)。它允许在负值区间有一个非零的输出,从而缓解“死亡 ReLU”问题。

  2. Parametric ReLU (PReLU)
    PReLU ( x ) = { x if  x ≥ 0 α x if  x < 0 \text{PReLU}(x) = \begin{cases} x & \text{if } x \geq 0 \\ \alpha x & \text{if } x < 0 \end{cases} PReLU(x)={xαxif x0if x<0
    其中 α \alpha α 是一个可学习的参数。

  3. Exponential Linear Unit (ELU)
    ELU ( x ) = { x if  x ≥ 0 α ( e x − 1 ) if  x < 0 \text{ELU}(x) = \begin{cases} x & \text{if } x \geq 0 \\ \alpha (e^x - 1) & \text{if } x < 0 \end{cases} ELU(x)={xα(ex1)if x0if x<0
    ELU 在负值区间的输出会渐近于 − α -α α,从而可以缓解梯度消失问题,同时在正值区间保持了 ReLU 的优点。

ReLU 在神经网络中的应用

ReLU 被广泛应用于各类神经网络,特别是卷积神经网络(CNN)和全连接神经网络(FCN)。其简单高效的性质使得它在实际应用中表现出色。

  1. 卷积神经网络(CNN):在图像分类、目标检测等任务中,CNN 广泛采用 ReLU 作为激活函数,提高了训练速度和模型性能。
  2. 全连接神经网络(FCN):在许多分类和回归任务中,ReLU 也被广泛采用。

总的来说,ReLU 激活函数因其计算简单、有效缓解梯度消失问题和提高训练效率的特性,在深度学习中得到了广泛应用。其变种如 Leaky ReLU、PReLU 和 ELU 也在不同场景中进一步提升了模型的性能和稳定性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1977325.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

嵌入式Linux系统中pinictrl框架基本实现

1. 回顾Pinctrl的三大作用 记住pinctrl的三大作用,有助于理解所涉及的数据结构: * 引脚枚举与命名(Enumerating and naming) * 单个引脚 * 各组引脚 * 引脚复用(Multiplexing):比如用作GPIO、I2C或其他功能 * 引脚配置(Configuration):比如上拉、下拉、open drain、驱…

Java中的五种线程池类型

Java中的五种线程池类型 1. CachedThreadPool &#xff08;有缓冲的线程池&#xff09;2. FixedThreadPool &#xff08;固定大小的线程池&#xff09;3. ScheduledThreadPool&#xff08;计划线程池&#xff09;4. SingleThreadExecutor &#xff08;单线程线程池&#xff09…

CTFHUB-SSRF-DNS重绑定 Bypass

开启题目&#xff0c;页面空白&#xff0c;访问附件 附件是一个知乎的文章&#xff0c;翻到下面点击文中这个链接 跳转之后&#xff0c;进行设置 把得到的链接拼接到题目的后面进行访问&#xff0c;然后得到了本题的 flag

Leetcode3226. 使两个整数相等的位更改次数

Every day a Leetcode 题目来源&#xff1a;3226. 使两个整数相等的位更改次数 解法1&#xff1a;位运算 从集合的角度理解&#xff0c;k 必须是 n 的子集。如果不是&#xff0c;返回 −1。怎么用位运算判断&#xff0c;见上面的文章链接。 如果 k 是 n 的子集&#xff0c;…

Windows Batch Linux Shell

windows上使用unix&#xff0c;Linux的unix工具对应的windows的可执行exe程序&#xff0c;对于本来的windows用户也可以使用这些工具提高工作效率&#xff0c;特别地在windows的批处理中使用这些命令很方便 二 工具列表 agrep.exe ansi2knr.exe basename.exe bc.exe bison.exe…

图像生成技术的颠覆性进展——从GAN到Aura SR V2

欢迎来到我们的科技专栏&#xff01;最近&#xff0c;文本到图像合成技术的成功引起了全球的轰动&#xff0c;激发了公众的无限想象力。从技术角度看&#xff0c;这也标志着在设计生成图像模型的架构上发生了巨大的变化。曾经&#xff0c;生成对抗网络&#xff08;GANs&#xf…

【Material-UI】详解安装指南

文章目录 一、默认安装1.1 Peer Dependencies 二、使用styled-components三、Roboto字体3.1 使用Fontsource3.2 使用Google Web Fonts 四、图标4.1 使用Google Web Fonts 五、CDN安装六、总结 Material-UI是全球最受欢迎的React UI框架之一。它提供了丰富的组件和高度可定制的主…

CSDN 的 Markdown 编辑器图片居中对齐和设置图片大小的方法

图片对齐方式 加在文件格式后面 #pic_center #pic_left #pic_right例如&#xff1a; 居中对齐 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/eb16b0a5bc414b9888ab73f3c74a8acb.png#pic_center)左对齐 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direc…

AI答题应用平台相关面试题

目录 1、请介绍整个系统后端的架构设计&#xff0c;有哪些模块以及各模块之间的关系&#xff1f; 2、你在项目中是如何设计库表的&#xff1f;可以从字段、索引、关联等方面回答。 3、为什么使用策略模式来封装不同的应用评分算法&#xff1f;它有哪些好处&#xff1f;具体如…

Elasticsearch 的DSL查询,聚合查询与多维度数据统计

文章目录 搜索聚合高阶概念 搜索 即从一个索引下按照特定的字段或关键词搜索出符合用户预期的一个或者一堆cocument&#xff0c;然后根据文档的相关度得分&#xff0c;在返回的结果集里并根据得分对这些文档进行一定的排序。 聚合 根据业务需求&#xff0c;对文档中的某个或…

【源码+文档+调试讲解】营业厅宽带系统设计与实现

摘 要 现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数据信息的管理升级为软件存储&#xff0c;归纳&#xff0c;集中处理数据信息的管理方式。本营业厅宽带系统就是在这样的大环境下诞生&#xff0c;其可以帮助管理者在短时间内处理完毕庞大的数据信息&…

Action部署在线上写文章

原文&#xff1a;https://blog.c12th.cn/archives/32.html 前言 之前分别出了 Hexo 和 Hugo 的 Action搭建教程&#xff0c;相当于伪动态&#xff0c;可以在线上写文章了&#xff1b;不过对于喜欢魔改的同学就不太友好了qwq 教程 github.dev 确保在配置过程中能访问Github &…

学工系统学生家庭情况登记功能概述

智慧校园学工系统中的“学生家庭情况”模块主要用于收集和管理学生的家庭背景信息&#xff0c;以便学校更好地了解学生的情况&#xff0c;并据此提供相应的支持和服务。该模块通常包括以下几个方面&#xff1a; 基本信息录入&#xff1a;支持录入学生的家庭成员信息&#xff0c…

ocaml精解【1】

文章目录 概述简介一、基本概述二、开发工具三、语言特性四、应用场景五、未来展望 windows下安装基础 参考文献 概述 简介 OCaml&#xff08;Objective Caml&#xff09;是Caml编程语言的主要实现&#xff0c;由Xavier Leroy、Jrme Vouillon、Damien Doligez、Didier Rmy等人…

一款免费强大的电脑锁屏工具,中文绿色免安装

这款软件主要特点是锁屏后不显示密码输入框&#xff0c;直接输入密码即可解锁。 ScreenBlur是一款功能强大的电脑屏幕锁软件&#xff0c;主要用于保护用户的隐私和数据安全。该软件的主要功能包括自动锁屏、隐藏桌面、加密锁机等。 功能特点 自动锁屏&#xff1a;用户可以设…

C语言之unsigned long long与struct相互转换实例(五十六)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 新书发布&#xff1a;《Android系统多媒体进阶实战》&#x1f680; 优质专栏&#xff1a; Audio工程师进阶系列…

数学希腊符号

1、Α α alpha /a:lf/ 阿尔法 2、Β β beta /bet/ 贝塔 3、Γ γ gamma /ga:m/ 伽马 4、Δ δ delta /delt/ 德尔塔 5、Ε ε epsilon /epsilon/ 伊普西龙 6、Ζ ζ zeta /zat/ 截塔 7、Η η eta /eit/ 艾塔 8、Θ θ thet /θit/ 西塔 9、Ι ι iot /aiot/ 约塔 10、Κ κ …

ADHD儿童康复的灯塔,专业与爱共筑希望之桥

在自闭症及注意缺陷多动障碍&#xff08;ADHD&#xff09;儿童教育领域&#xff0c;专业的康复学校扮演着至关重要的角色。这些学校不仅为孩子们提供科学的康复训练&#xff0c;还致力于帮助他们融入社会&#xff0c;实现自我价值。 以星启帆自闭症儿童康复机构为例&#xff0c…

【系统架构设计师】二十四、安全架构设计理论与实践③

目录 五、网络安全体系架构设计 5.1 OSI安全架构 5.2 认证框架 5.3 访问控制框架 5.4 机密性框架 5.5 完整性框架 5.6 抗抵赖框架 往期推荐 五、网络安全体系架构设计 5.1 OSI安全架构 OSI定义了7层协议&#xff0c;其中除第5层(会话层)外&#xff0c;每一层均能提供相…

NetAssist免费下载使用

这种TCPUDP的局域网工具有很多&#xff0c;但是找起来很麻烦&#xff0c;在微信小程序里面发现了一个“TCPUDP局域网小助手”的工具&#xff0c;打开即用非常方便&#xff0c; 打开之后长这样 能下载电脑端NetAssist