深度学习中激活函数的演变与应用:一个综述

摘要

本文全面回顾了深度学习中激活函数的发展历程,从早期的Sigmoid和Tanh函数,到广泛应用的ReLU系列,再到近期提出的Swish、Mish和GeLU等新型激活函数。深入分析了各类激活函数的数学表达、特点优势、局限性以及在典型模型中的应用情况。通过系统的对比分析,本文探讨了激活函数的设计原则、性能评估标准以及未来可能的发展方向,为深度学习模型的优化和设计提供理论指导。

1. 引言

激活函数是神经网络中的关键组件,它在神经元的输出端引入非线性特性,使得神经网络能够学习和表示复杂的非线性映射。没有激活函数,无论多么深的神经网络本质上都只能表示线性变换,这大大限制了网络的表达能力。
随着深度学习的快速发展,激活函数的设计和选择已成为影响模型性能的重要因素。不同的激活函数具有不同的特性,如梯度流动性、计算复杂度、非线性程度等,这些特性直接影响着神经网络的训练效率、收敛速度和最终性能。
本文旨在全面回顾激活函数的演变历程,深入分析各类激活函数的特性,并探讨其在现代深度学习模型中的应用。我们将从以下几个方面展开讨论:

  1. 经典激活函数:包括Sigmoid、Tanh等早期常用的激活函数。
  2. ReLU及其变体:包括ReLU、Leaky ReLU、PReLU、ELU等。
  3. 新型激活函数:如Swish、Mish、GeLU等近期提出的函数。
  4. 特殊用途的激活函数:如Softmax、Maxout等。
  5. 激活函数的比较与选择:讨论不同场景下激活函数的选择策略。
  6. 未来展望:探讨激活函数研究的可能发展方向。

通过这一系统的回顾和分析,希望能为研究者和实践者提供一个全面的参考,帮助他们在深度学习模型设计中更好地选择和使用激活函数。

2. 经典激活函数

2.1 Sigmoid函数

Sigmoid函数是最早被广泛使用的激活函数之一,其数学表达式为:
σ ( x ) = 1 1 + e − x \sigma(x) = \frac{1}{1 + e^{-x}} σ(x)=1+ex1
image.png

特点与优点:
  1. 输出范围有界:Sigmoid函数的输出范围在(0, 1)之间,这使其特别适合于处理概率问题。
  2. 平滑可导:函数在整个定义域内都是平滑且可导的,这有利于梯度下降算法的应用。
  3. 解释性强:输出可以被解释为概率,特别适用于二分类问题的输出层。
缺点与限制:
  1. 梯度消失问题:当输入值很大或很小时,梯度接近于零,这会导致深层网络中的梯度消失问题。
  2. 输出非零中心:Sigmoid的输出均为正值,这可能会导致后一层神经元的输入总是正的,影响模型的收敛速度。
  3. 计算复杂度:涉及指数运算,计算复杂度相对较高。
适用场景:
  1. 早期的浅层神经网络。
  2. 二分类问题的输出层。
  3. 需要将输出限制在(0, 1)范围内的场景。
与其他函数的对比:

相比于后来出现的ReLU等函数,Sigmoid在深度网络中的应用受到了很大限制,主要是因为其梯度消失问题。然而,在某些特定任务(如二分类)中,Sigmoid仍然是一个有效的选择。

2.2 Tanh函数

Tanh(双曲正切)函数可视为Sigmoid函数的改进版本,其数学表达式为:
tanh ⁡ ( x ) = e x − e − x e x + e − x \tanh(x) = \frac{e^x - e^{-x}}{e^x + e^{-x}} tanh(x)=ex+exexex
image.png

特点与优点:
  1. 零中心输出:Tanh函数的输出范围在(-1, 1)之间,解决了Sigmoid的非零中心问题。
  2. 梯度更强:在输入接近零的区域,Tanh函数的梯度比Sigmoid函数更大,有助于加快学习速度。
  3. 平滑可导:与Sigmoid类似,Tanh也是平滑且可导的。
缺点与限制:
  1. 梯度消失问题:虽然比Sigmoid有所改善,但Tanh在输入值较大或较小时仍然存在梯度消失的问题。
  2. 计算复杂度:与Sigmoid类似,Tanh也涉及指数运算,计算复杂度较高。
适用场景:
  1. 在需要零中心化输出的场景中优于Sigmoid。
  2. 在循环神经网络(RNN)和长短时记忆网络(LSTM)中经常使用。
  3. 在一些归一化输出很重要的场景中使用。
改进与对比:

Tanh函数可以看作是Sigmoid函数的改进版本,主要改进在于输出的零中心化。这一特性使得Tanh在许多情况下比Sigmoid表现更好,特别是在深度网络中。然而,与后来出现的ReLU等函数相比,Tanh仍然存在梯度消失的问题,在非常深的网络中可能会影响模型的性能。
Sigmoid和Tanh这两个经典的激活函数在深度学习早期发挥了重要作用,它们的特性和局限性也推动了后续激活函数的发展。虽然在很多场景下已经被更新的激活函数所替代,但在特定的任务和网络结构中,它们仍然有其独特的应用价值。

3. ReLU及其变体

3.1 ReLU (Rectified Linear Unit)

ReLU函数的提出是激活函数发展的一个重要里程碑。其数学表达式简单:
ReLU ( x ) = max ⁡ ( 0 , x ) \text{ReLU}(x) = \max(0, x) ReLU(x)=max(0,x)
image.png

特点与优点:
  1. 计算简单:ReLU的计算复杂度远低于Sigmoid和Tanh,有利于加速网络训练。
  2. 缓解梯度消失:对于正输入,ReLU的梯度恒为1,有效缓解了深层网络中的梯度消失问题。
  3. 稀疏激活:ReLU可以使一部分神经元的输出为0,导致网络的稀疏表达,这在某些任务中是有益的。
  4. 生物学解释:ReLU的单侧抑制特性与生物神经元的行为相似。
缺点与限制:
  1. "死亡ReLU"问题:当输入为负时,梯度为零,可能导致神经元永久失活。
  2. 非零中心输出:ReLU的输出均为非负值,这可能会影响下一层的学习过程。
适用场景:
  1. 深度卷积神经网络(如ResNet, VGG)中广泛使用。
  2. 适用于大多数前馈神经网络。
与其他函数的对比:

相比Sigmoid和Tanh,ReLU在深度网络中表现出显著优势,主要体现在训练速度和缓解梯度消失方面。然而,"死亡ReLU"问题促使研究者们提出了多种改进版本。

3.2 Leaky ReLU

为了解决ReLU的"死亡"问题,Leaky ReLU被提出:
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,αx,if x>0if x0
其中, α \alpha α 是一个小的正常数,通常取0.01。
image.png

特点与优点:
  1. 缓解"死亡ReLU"问题:在输入为负时仍然保留一个小的梯度,避免神经元完全失活。
  2. 保留ReLU的优点:在正半轴保持线性,计算简单,有助于缓解梯度消失。
缺点与限制:
  1. 引入超参数 α \alpha α值的选择需要调优,增加了模型复杂度。
  2. 非零中心输出:与ReLU类似,输出仍然不是零中心的。
适用场景:
  1. 在ReLU表现不佳的场景中作为替代选择。
  2. 在需要保留一些负值信息的任务中使用。

3.3 PReLU (Parametric ReLU)

PReLU是Leaky ReLU的一个变体,其中负半轴的斜率是可学习的参数:
PReLU ( x ) = { x , if  x > 0 α x , if  x ≤ 0 \text{PReLU}(x) = \begin{cases} x, & \text{if } x > 0 \\ \alpha x, & \text{if } x \leq 0 \end{cases} PReLU(x)={x,αx,if x>0if x0
这里的 α \alpha α 是通过反向传播学习得到的参数。
image.png

特点与优点:
  1. 自适应学习:可以根据数据自动学习最适合的负半轴斜率。
  2. 性能潜力:在某些任务中,PReLU可以获得比ReLU和Leaky ReLU更好的性能。
缺点与限制:
  1. 增加模型复杂度:引入额外的可学习参数,增加了模型的复杂度。
  2. 可能过拟合:在某些情况下,可能导致过拟合,特别是在小数据集上。
适用场景:
  1. 大规模数据集上的深度学习任务。
  2. 需要自适应激活函数的场景。

3.4 ELU (Exponential Linear Unit)

ELU试图结合ReLU的优点和负值输入的处理,其数学表达式为:
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)=

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

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

相关文章

实验二:图像灰度修正

目录 一、实验目的 二、实验原理 三、实验内容 四、源程序和结果 源程序(python): 结果: 五、结果分析 一、实验目的 掌握常用的图像灰度级修正方法,包括图象的线性和非线性灰度点运算和直方图均衡化法,加深对灰度直方图的理解。掌握对比度增强、直方图增强的原理,…

Git常用命令以及使用IDEA集成Gitee

目录 一、设置用户签名 二、初始化本地库 三、查看本地库状态 四、添加文件到暂存区 五、提交本地库 六、修改文件 七、版本穿梭 八、Git分支 九、分支的操作 9.1、查看分支 9.2、创建分支 9.3、切换分支 9.4、合并分支 十、团队协作 十一、Idea集成Git 11.1、配…

全球DeepFake攻防挑战赛DataWhale AI 夏令营——图像赛道

全球DeepFake攻防挑战赛&DataWhale AI 夏令营——图像赛道 赛题背景 随着人工智能技术的迅猛发展,深度伪造技术(Deepfake)正成为数字世界中的一把双刃剑。这项技术不仅为创意内容的生成提供了新的可能性,同时也对数字安全构…

CV12_ONNX转RKNN模型(谛听盒子)

暂时简单整理一下: 1.在边缘设备上配置相关环境。 2.配置完成后,获取模型中间的输入输出结果,保存为npy格式。 3.将onnx格式的模型,以及中间输入输出文件传送到边缘设备上。 4.编写一个python文件用于转换模型格式&#xff0c…

零售门店收银系统源码

php收银系统源码-CSDN博客文章浏览阅读268次,点赞6次,收藏4次。收银系统源码https://blog.csdn.net/qh716/article/details/140431477 1.系统开发语言 核心开发语言: PHP、HTML5、Dart后台接口: PHP7.3后合管理网站: HTML5vue2.0element-uicssjs线下收…

2023年高教杯数学建模2023B题解析(仅从代码角度出发)

前言 最近博主正在和队友准备九月的数学建模,在做往年的题目,博主主要是负责数据处理,运算以及可视化,这里分享一下自己部分的工作,相关题目以及下面所涉及的代码后续我会作为资源上传 问题求解 第一题 第一题的思路主要如下:…

win10远程ubuntu服务器桌面且显示图像窗口工具及配置说明

仅需一个MobaXterm_Personal工具就可以实现 网上的教程比较多,实现起来比较复杂,这个是经过自己的钻研找到的方法(请勿转载和抄袭) 报错:cannot connect to X server :0.0 操作1:export DISPLAY自己windo…

数学建模·熵权法

熵权法 一种计算评价指标之间权重的方法。熵权法是一种客观的方法,没有主观性,比较可靠。 具体定义 熵权法的核心在于计算信息熵,信息熵反映了一个信息的紊乱程度,体现了信息的可靠性 具体步骤 Step1正向化处理 将所以评价指标转…

玩客云刷入海纳思系统

玩客云(晶晨S805)刷机 | 海纳思系统 (ecoo.top) https://www.ecoo.top/update/soft_init/amlproject/USB_Burning_Tool_v2.1.3.exe https://node4.histb.com:9088/update/system/s805/hinas_s805_eMMC.burn.img.zip

LabVIEW液压数据采集测试系统

液压系统是装载机的重要组成部分,通过液压传动和控制实现各项作业功能,如提升、倾斜、转向等。液压系统的性能直接影响装载机的作业效率和稳定性。为了保证装载机液压系统的正常运行和优化设计,需要对其进行数据采集和测试。本文介绍了一套基…

Wireshark 对 https 请求抓包并展示为明文

文章目录 1、目标2、环境准备3、Wireshark 基本使用4、操作步骤4.1、彻底关闭 Chrome 进程4.2、配置 SSLKEYLOGFILE [核心步骤]4.3、把文件路径配置到 Wireshark 指定位置4.4、在浏览器发起请求4.5、抓包配置4.6、过滤4.6.1、过滤域名 http.host contains "baidu.com4.6.2…

通用图形处理器设计GPGPU基础与架构(三)

一、前言 前两篇已经介绍了 GPGPU 的背景 和 GPGPU 的编程模型相关的内容,本文将在 SIMT 计算模型的基础上,介绍 GPGPU 控制核心架构和微体系结构的设计。 二、CPU-GPGPU 异构计算系统 一个由 CPU 和 GPGPU 构成的异构计算平台如下图所示,GP…

树结构添加分组,向上向下添加同级,添加子级

树结构添加分组&#xff0c;向上向下添加同级&#xff0c;添加子级 效果代码实现页面js 效果 代码实现 页面 <el-tree :data"treeData" :props"defaultProps" :expand-on-click-node"false":filter-node-method"filterNode" :ref&…

Hive的基本操作(查询)

1、基础查询 基本语法 select 字段列表|表达式|子查询 from 表(子查询|视图|临时表|普通表) where [not] 条件A and|or 条件B --先&#xff1a;面向原始行进行筛选 group by 字段A[,字段B,...] > 分组【去重处理】 having 聚合条件(非原始字段条件) --再&#x…

iPhone数据恢复:如何从iPhone恢复误删除的短信

来自iPhone的意外删除的短信可能很关键。它们可能是来自您常用应用程序、银行交易、付款收据的重要通知&#xff0c;也可能是来自朋友的重要文本、孩子的学校通知等。 如果您也从iPhone丢失了此类消息&#xff0c;我们在这里分享如何在没有备份以及有备份的情况下在iPhone上恢…

热门软件缺陷管理工具2024:专业评测与建议

国内外主流的10款软件缺陷管理工具软件对比&#xff1a;PingCode、Worktile、禅道、Tapd、Teambition、Tower、JIRA、Bugzilla、MantisBT、Trac。 在软件开发过程中&#xff0c;管理缺陷和漏洞常常成为一项挑战&#xff0c;尤其是在项目规模庞大时。选择一个高效的软件缺陷管理…

object-C 解答算法:两数之和(leetCode-1)

两数之和(leetCode-1) 题目如下图:(也可以到leetCode上看完整题目,题号1) 解答方法一: 最简单的方法就是双指针遍历数组.代码如下 - (NSMutableArray *)sumOfTwoNumbers:(NSMutableArray *)array target:(int)target {NSMutableArray * resultArray [[NSMutableArray alloc…

探索Facebook在人工智能领域的最新进展

在当今快速发展的科技领域中&#xff0c;人工智能&#xff08;AI&#xff09;作为一项关键技术&#xff0c;正在逐步改变着社交媒体的面貌。作为全球最大的社交平台之一&#xff0c;Facebook积极探索和应用人工智能&#xff0c;以提升用户体验、增强平台安全性并推动技术创新。…

数学建模·灰色关联度

灰色关联分析 基本原理 灰色关联分析可以确定一个系统中哪些因素是主要因素&#xff0c;哪些是次要因素&#xff1b; 灰色关联分析也可以用于综合评价&#xff0c;但是由于数据预处理的方式不同&#xff0c;导致结果 有较大出入 &#xff0c;故一般不采用 具体步骤 数据预处理…

实战案例:用百度千帆大模型API开发智能五子棋

前随着人工智能技术的迅猛发展&#xff0c;各种智能应用层出不穷。五子棋作为一款经典的棋类游戏&#xff0c;拥有广泛的爱好者。将人工智能技术与五子棋结合&#xff0c;不仅能提升游戏的趣味性和挑战性&#xff0c;还能展现AI在复杂决策问题上的强大能力。在本篇文章中&#…