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

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.rhkb.cn/news/391160.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

docker部署elasticsearch和Kibana

部署elasticsearch 通过下面的Docker命令即可安装单机版本的elasticsearch&#xff1a; docker run -d \--name es \-e "ES_JAVA_OPTS-Xms512m -Xmx512m" \-e "discovery.typesingle-node" \-v es-data:/usr/share/elasticsearch/data \-v es-plugins:/u…

《LeetCode热题100》---<5.①普通数组篇五道>

本篇博客讲解LeetCode热题100道普通数组篇中的五道题 第一道&#xff1a;最大子数组和&#xff08;中等&#xff09; 第二道&#xff1a;合并区间&#xff08;中等&#xff09; 第一道&#xff1a;最大子数组和&#xff08;中等&#xff09; 法一&#xff1a;贪心算法 class So…

我的256天创作纪念日

机缘 ————今天一大早收到CSDN的推送消息&#xff0c;告诉我这是我的256天创作纪念日。在这个特别的日子里&#xff0c;我回望自己踏上创作之路的点点滴滴&#xff0c;心中充满了感慨与感激。从最初的懵懂尝试到如今能够自信地分享见解&#xff0c;这段旅程不仅见证了我的成…

【教学类-73-01】20240804镂空瓶子01

背景需求&#xff1a; 瓶子里的春天呀&#xff01; - 小红书 (xiaohongshu.com)https://www.xiaohongshu.com/explore/63ef87f8000000000703acae?app_platformandroid&ignoreEngagetrue&app_version8.47.0&share_from_user_hiddentrue&xsec_sourceapp_share&…

揭秘Matplotlib等高线图:让数据‘高山流水‘间,笑点与深度并存!

1. 引言 在这个数据如山的时代&#xff0c;你是不是也曾在茫茫数海中迷失方向&#xff0c;渴望找到那片隐藏的“数据绿洲”&#xff1f;别怕&#xff0c;今天咱们就来聊聊Matplotlib这位绘图界的魔术师&#xff0c;特别是它那令人叹为观止的等高线图技能。想象一下&#xff0c…

MySQL:数据库用户

数据库用户 在关系型数据库管理系统中&#xff0c;数据库用户&#xff08;USER&#xff09;是指具有特定权限和访问权限的登录账户。每个用户都有自己的用户名和密码&#xff0c;以便系统可以通过认证来识别他们的身份。数据库用户可以登录数据库&#xff0c;在其中执行各种类…

【QT】常用控件-上

欢迎来到Cefler的博客&#x1f601; &#x1f54c;博客主页&#xff1a;折纸花满衣 目录 &#x1f449;&#x1f3fb;QWidgetenabledgeometryrect制作上下左右按钮 window frame 的影响window titlewindowIcon代码示例: 通过 qrc 管理图片作为图标 windowOpacitycursor使用qrc自…

【论文笔记】SEED: A Simple and Effective 3D DETR in Point Clouds

原文链接&#xff1a;https://arxiv.org/abs/2407.10749 简介&#xff1a;基于DETR的3D点云检测器难以达到较高的性能&#xff0c;这可能有两个原因&#xff1a;&#xff08;1&#xff09;由于点云的稀疏性和分布不均匀&#xff0c;获取合适的物体查询较为困难&#xff1b;&…

基于微信小程序的微课堂笔记的设计与实现(源码+论文+部署讲解等)

博主介绍&#xff1a;✌全网粉丝10W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流✌ 技术栈介绍&#xff1a;我是程序员阿龙&#xff…

给虚拟机Ubuntu扩展硬盘且不丢数据

1.Ubuntu关机状态下先扩展&#xff0c;如扩展20GB 2.进入ubuntu&#xff0c;切换root登录&#xff0c;必须是root全选&#xff0c;否则启动不了分区工具gparted 将新的20GB创建好后&#xff0c;选择ext4,primary&#xff1b; 3.永久挂载 我的主目录在/并挂载到/dev/sda1 从图…

【C++】C++11之新的类功能与可变参数模板

目录 一、新的默认成员函数 二、新的关键字 2.1 default 2.2 detele 2.3 final和override 三、可变参数模板 3.1 定义 3.2 递归展开参数包 3.3 逗号表达式展开参数包 3.4 emplace_back 一、新的默认成员函数 在C11之前&#xff0c;默认成员函数只有六个&#xff0c;…

【机器学习算法基础】(基础机器学习课程)-11-k-means-笔记

示例案例 为了更好地理解 K-Means 算法&#xff0c;下面通过一个简单的案例进行说明。 假设我们有以下 10 个二维数据点&#xff0c;表示不同商店的销售额&#xff08;单位&#xff1a;千元&#xff09;和顾客数&#xff08;单位&#xff1a;人&#xff09;&#xff1a; [(1…

常见cms漏洞之dedecms

DedeCMS是织梦团队开发PHP 网站管理系统&#xff0c;它以简单、易用、高效为特色&#xff0c;组建出各种各样各具特色的网站&#xff0c;如地方门户、行业门户、政府及企事业站点等。 下载地址请网上自行寻找 搭建方式选择php study 首先搭建环境 #前台http://localhost/dedecm…

Java AI伪原创视频创作视频提取文案改写去水印系统小程序源码

&#x1f525;AI赋能创作新纪元&#xff01;伪原创视频文案提取改写去水印全能系统大揭秘 &#x1f680; 开篇&#xff1a;创意无界&#xff0c;AI来助力 在这个视觉盛行的时代&#xff0c;视频创作成为了表达自我、传递信息的重要方式。但你是否曾为寻找灵感、撰写文案、处理…

sa-token登录机制以及网关统一鉴权环境搭建

文章目录 1.sa-token1.37集成&#xff08;基于token&#xff09;1.文档网址2.**sun-club-auth-application-controller引入依赖**3.application.yml4.sun-club-auth-application-controller测试的controller1.UserController.java2.启动测试1.登录&#xff0c;得到satoken2.验证…

【FPGA】cordic算法实现三角函数

参考资料&#xff1a;https://zhuanlan.zhihu.com/p/638520243https://zhuanlan.zhihu.com/p/638520243

Hadoop学习(三)

一、MapReduce框架原理 1.1InputFormat数据输入 MapTask并行度决定机制 1&#xff09;数据块&#xff08;HDFS存储数据单位&#xff09;&#xff0c;物理上把数据分成一块一块 2&#xff09;数据切片&#xff08;MapReduce程序计算输入数据的单位)&#xff1a;只是在逻辑上…

Lanproxy开箱即用的内网穿透工服务!!

Lanproxy快速上手配置服务器转发到内网!! 本教程云服务器推荐使用的开发环境如下&#xff1a;服务器端配置配置端口登录Web界面 内网客户端配置下载客户端配置客户端端口 最终效果测试 本文主要记录了使用Lanproxy搭建内网穿透服务的过程&#xff0c;其中包括服务端和客户端的详…

CSP2019第二题: 公交换乘

CSP 2019 公交换乘 题目来源&#xff1a;牛客网 题目&#xff1a;* 示例1 输入 6 0 10 3 1 5 46 0 12 50 1 3 96 0 5 110 1 6 135输出 36题意&#xff1a; 根据输入&#xff0c;计算地铁花费不能用到优惠券的公交车的花费 知识点&#xff1a; 结构体 思路&#xff1…

谷粒商城实战笔记-vagrant避坑指南

文章目录 一&#xff0c;虚拟机磁盘空间不足问题原因解决方案 二&#xff0c;虚拟机导致C盘空间不足 一&#xff0c;虚拟机磁盘空间不足 使用vagrant管理虚拟机的过程中遇到了一个问题&#xff0c;虚拟机安装完成后&#xff0c;很快磁盘dev/sda1就满了&#xff0c;40G的空间&a…