文章目录

  • 激活函数
    • 一、激活函数的分类
      • 1. 按“是否线性”分类
      • 2. 按“是否饱和”分类(针对非线性激活函数)
      • 3. 按“适用层”分类
    • 二、常见激活函数及特点
      • (一)非线性激活函数(主要用于隐藏层)
        • 1. 饱和激活函数(逐渐被淘汰,但需了解)
        • 2. 非饱和激活函数(当前主流)
      • (二)输出层激活函数(按任务设计)
    • 三、激活函数的选择策略
      • 1. 优先根据“层类型”筛选
      • 2. 结合网络深度和梯度稳定性
      • 3. 考虑计算资源
      • 4. 实验验证
    • 总结

激活函数

激活函数是神经网络的核心组件,其作用是为网络引入非线性——如果没有激活函数,无论神经网络有多少层,都只是线性模型(等价于单层线性回归),无法拟合复杂的非线性关系(如图像、语言等)。

一、激活函数的分类

激活函数的分类方式多样,常见的分类维度包括:是否线性、是否饱和、输出范围、适用场景(隐藏层/输出层)等。以下是最实用的分类框架:

1. 按“是否线性”分类

  • 线性激活函数:函数表达式为线性关系(如 f(x)=kx+bf(x)=kx+bf(x)=kx+b),无法引入非线性,仅用于特定场景(如回归任务的输出层)。
  • 非线性激活函数:函数表达式为非线性关系(如 f(x)=11+e−xf(x)=\frac{1}{1+e^{-x}}f(x)=1+ex1),是神经网络的核心,几乎所有隐藏层都依赖此类函数引入非线性。

2. 按“是否饱和”分类(针对非线性激活函数)

  • 饱和激活函数:当输入值的绝对值足够大时,函数的导数趋近于0(“饱和”),容易导致“梯度消失”(深层网络中梯度经多层传递后趋近于0,参数无法更新)。
  • 非饱和激活函数:输入值很大时,导数仍保持较大值(不趋近于0),可缓解梯度消失,更适合深层网络。

3. 按“适用层”分类

  • 隐藏层激活函数:用于网络中间层,核心是引入非线性,同时需避免梯度消失/爆炸,常见如ReLU及其变体。
  • 输出层激活函数:根据任务需求设计,需匹配输出的物理意义(如概率、数值范围),常见如sigmoid(二分类)、softmax(多分类)。

二、常见激活函数及特点

以下按“非线性激活函数(隐藏层为主)”和“输出层激活函数”分类介绍,重点说明公式、图像、优缺点及适用场景。

(一)非线性激活函数(主要用于隐藏层)

这类函数的核心是引入非线性,同时需平衡计算效率和梯度稳定性。

1. 饱和激活函数(逐渐被淘汰,但需了解)
  • sigmoid函数
    公式:f(x)=11+e−xf(x)=\frac{1}{1+e^{-x}}f(x)=1+ex1
    图像:S型曲线,输出范围 (0,1)(0,1)(0,1)
    特点:

    • 优点:输出可直接作为概率(如二分类的“属于正类的概率”),易于解释。
    • 缺点:
      • 梯度消失严重:导数最大值为0.25(在x=0处),多层传递后梯度趋近于0,深层网络无法训练。
      • 输出非零均值(均值≈0.5):会导致后续层输入偏移,影响梯度更新。
      • 计算成本高(含指数运算)。
        适用场景:仅推荐用于二分类输出层(隐藏层已极少使用)。
  • tanh函数(双曲正切)
    公式:f(x)=ex−e−xex+e−x=2sigmoid(2x)−1f(x)=\frac{e^x - e^{-x}}{e^x + e^{-x}} = 2sigmoid(2x) - 1f(x)=ex+exexex=2sigmoid(2x)1
    图像:S型曲线,输出范围 (−1,1)(-1,1)(1,1),关于原点对称。
    特点:

    • 优点:解决了sigmoid的“非零均值”问题(输出均值≈0),梯度消失比sigmoid稍轻(导数最大值为1,在x=0处)。
    • 缺点:仍存在梯度消失(输入绝对值较大时导数→0),计算成本高(指数运算)。
      适用场景:早期RNN中偶尔用于隐藏层,现逐渐被ReLU变体替代。
2. 非饱和激活函数(当前主流)
  • ReLU(Rectified Linear Unit,修正线性单元)
    公式:f(x)=max⁡(0,x)f(x)=\max(0, x)f(x)=max(0,x)
    图像:x>0时输出x,x≤0时输出0(折线)。
    特点:

    • 优点:
      • 计算极快(仅比较和取最大值,无指数/除法运算)。
      • 缓解梯度消失:x>0时导数为1,梯度可无损传递,适合深层网络(如ResNet)。
    • 缺点:
      • 死亡ReLU问题:x≤0时导数为0,若神经元长期输入负信号,参数将永远无法更新(“死亡”)。
      • 输出非零均值(仅非负):可能导致后续层输入偏移。
        适用场景:绝大多数隐藏层的默认选择,尤其卷积神经网络(CNN)和浅层网络。
  • Leaky ReLU(带泄漏的ReLU)
    公式:f(x)=max⁡(αx,x)f(x)=\max(\alpha x, x)f(x)=max(αx,x)α\alphaα 为小常数,通常取0.01)
    图像:x>0时输出x,x≤0时输出 αx\alpha xαx(小斜率的直线)。
    特点:

    • 优点:解决“死亡ReLU问题”(x≤0时仍有梯度 α\alphaα),保留ReLU的计算效率。
    • 缺点:α\alphaα 是固定值(如0.01),可能不适应所有数据分布。
      适用场景:当ReLU出现大量死亡神经元时替代使用(如训练数据中负样本较多的场景)。
  • Parametric ReLU(参数化ReLU,PReLU)
    公式:f(x)=max⁡(αx,x)f(x)=\max(\alpha x, x)f(x)=max(αx,x)α\alphaα 为可学习参数,通过训练优化)
    特点:

    • 优点:α\alphaα 自适应数据分布,灵活性更高(如对不同任务自动调整负斜率)。
    • 缺点:增加网络参数(每层一个 α\alphaα),可能过拟合小数据集。
      适用场景:大数据集(如ImageNet),需更高灵活性时。
  • ELU(Exponential Linear Unit,指数线性单元)
    公式:f(x)={xif x>0α(ex−1)if x≤0f(x)=\begin{cases} x & \text{if } x>0 \\ \alpha(e^x - 1) & \text{if } x \leq 0 \end{cases}f(x)={xα(ex1)if x>0if x0α\alphaα 通常取1)
    图像:x>0时同ReLU,x≤0时为指数曲线(趋近于 −α-\alphaα)。
    特点:

    • 优点:
      • 输出更接近零均值(x≤0时输出接近 −α-\alphaα),缓解输入偏移问题。
      • 抗噪声能力强(负输入时平滑过渡,而非硬截断)。
    • 缺点:计算成本高于ReLU(含指数运算)。
      适用场景:对鲁棒性要求高的任务(如含噪声的图像识别)。
  • Swish函数
    公式:f(x)=x⋅sigmoid(βx)f(x)=x \cdot \text{sigmoid}(\beta x)f(x)=xsigmoid(βx)β\betaβ 为常数或可学习参数,通常取1)
    图像:平滑曲线,x→∞时接近x,x→-∞时接近0(类似ReLU但更平滑)。
    特点:

    • 优点:结合ReLU(计算快)和sigmoid(平滑性),在深层网络(如MobileNet、ResNet-50)中表现优于ReLU,缓解梯度消失。
    • 缺点:计算成本略高于ReLU(含sigmoid运算)。
      适用场景:深层CNN(如目标检测、图像分割)。
  • GELU(Gaussian Error Linear Unit,高斯误差线性单元)
    公式:f(x)=x⋅Φ(x)f(x)=x \cdot \Phi(x)f(x)=xΦ(x)Φ(x)\Phi(x)Φ(x) 是标准正态分布的累积分布函数,近似为 x⋅sigmoid(1.702x)x \cdot \text{sigmoid}(1.702x)xsigmoid(1.702x)
    图像:平滑曲线,x>0时接近x,x<0时输出较小的负值(比ELU更平滑)。
    特点:

    • 优点:天然适配“ dropout ”(随机失活)机制(可理解为“对输入x按概率 Φ(x)\Phi(x)Φ(x) 保留,否则置0”),在Transformer模型(如BERT、GPT)中表现最优。
    • 缺点:计算稍复杂(需近似高斯分布)。
      适用场景:Transformer、BERT等预训练语言模型(当前NLP的默认选择)。
  • Mish函数
    公式:f(x)=x⋅tanh⁡(softplus(x))f(x)=x \cdot \tanh(\text{softplus}(x))f(x)=xtanh(softplus(x))softplus(x)=log⁡(1+ex)\text{softplus}(x)=\log(1+e^x)softplus(x)=log(1+ex)
    图像:比Swish更平滑,x→-∞时趋近于0,x→+∞时趋近于x。
    特点:

    • 优点:平滑性更好,在一些竞赛(如ImageNet分类)中表现优于Swish和ReLU,梯度更稳定。
    • 缺点:计算成本较高(含tanh和softplus运算)。
      适用场景:需极致性能的竞赛或大模型(如深层ResNet)。

(二)输出层激活函数(按任务设计)

输出层激活函数需匹配任务的输出要求(如概率、数值范围),常见如下:

  • sigmoid:用于二分类任务(输出“属于正类的概率”,范围 (0,1)(0,1)(0,1))。例如:判断图片是否为猫(输出0-1之间的概率,>0.5为正类)。

  • softmax:用于多分类任务(输出K个类别的概率分布,和为1)。公式:f(x)i=exi∑j=1Kexjf(x)_i=\frac{e^{x_i}}{\sum_{j=1}^K e^{x_j}}f(x)i=j=1Kexjexixix_ixi 为第i类的 logit 得分)。例如:识别图片是猫、狗还是鸟(输出三个概率,和为1)。

  • Identity(线性激活函数):用于回归任务(输出连续数值,范围 (−∞,∞)(-∞,∞)(,))。公式:f(x)=xf(x)=xf(x)=x。例如:预测房价(输出任意实数)。

  • ReLU(或其变体):用于非负回归任务(输出≥0的数值)。例如:预测图片中物体的面积(面积不能为负)。

三、激活函数的选择策略

没有“万能”的激活函数,选择需结合任务类型、网络结构、数据特点计算资源,核心原则如下:

1. 优先根据“层类型”筛选

  • 隐藏层

    • 首选ReLU(计算快、适配大多数场景);
    • 若ReLU出现大量死亡神经元,换Leaky ReLU(小数据集)或PReLU(大数据集);
    • 深层网络(如>50层)或需更高性能,选Swish(CNN)或GELU(Transformer);
    • 对噪声敏感的任务(如医学图像),选ELU(鲁棒性更好)。
  • 输出层

    • 二分类:sigmoid
    • 多分类:softmax
    • 回归(任意数值):Identity
    • 回归(非负数值):ReLU

2. 结合网络深度和梯度稳定性

  • 浅层网络(<10层):ReLU、sigmoid、tanh均可(梯度消失影响小);
  • 深层网络(>20层):必须用非饱和激活函数(如ReLU变体、Swish、GELU),避免梯度消失。

3. 考虑计算资源

  • 资源有限(如移动端):选ReLULeaky ReLU(无指数运算,计算最快);
  • 资源充足(如服务器训练):可尝试ELUSwish等(性能更优但计算稍慢)。

4. 实验验证

同一任务下,不同激活函数的表现可能差异较大(如小数据集上PReLU可能过拟合,而Leaky ReLU更稳定)。建议:

  • 先用默认值(如隐藏层ReLU,输出层按任务选);
  • 再替换1-2个备选(如Swish、GELU)对比验证。

总结

激活函数的核心是为网络注入非线性,其选择需在“性能”“效率”和“稳定性”之间平衡。实际应用中,优先使用主流激活函数(如ReLU、GELU),再根据具体问题微调——没有最优解,只有最适合当前任务的选择。

激活函数公式特点适用场景
Sigmoid( \frac{1}{1+e^{-x}} )输出(0,1),易梯度消失;计算量大二分类输出层
Tanh( \frac{ex-e{-x}}{ex+e{-x}} )输出(-1,1),梯度比Sigmoid强;仍存在梯度消失RNN隐藏层
ReLU( \max(0, x) )计算高效;缓解梯度消失;但存在"死亡神经元"(负输入梯度为0)CNN/MLP隐藏层(最常用)
Leaky ReLU( \max(\alpha x, x) )解决ReLU死亡问题((\alpha)为小斜率,如0.01)需要避免神经元死亡的场景
GELU( x\Phi(x) )平滑版ReLU,近似神经元随机激活特性((\Phi)为标准正态CDF)Transformer/BERT
Swish( x\cdot\sigma(\beta x) )平滑、非单调;Google提出,效果常优于ReLU深层网络实验性替代
Softmax( \frac{e^{x_i}}{\sum_j e^{x_j}} )输出概率分布(和为1);多分类任务多分类输出层

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

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

相关文章

代数——第4章——线性算子(算符)(Michael Artin)

第 4 章 线性算子(Linear Operators) That confusions of thought and errors of reasoning still darken the beginnings of Algebra, is the earnest and just complaint of sober and thoughtful men. (思维混乱和推理错误 仍然使代数的开端变得模糊不清&#xff0c; …

Neo4j Python 驱动库完整教程(带输入输出示例)

Neo4j Python 驱动库完整教程&#xff08;带输入输出示例&#xff09; 1. 基础连接示例 输入代码 from neo4j import GraphDatabase# 连接配置 URI "bolt://localhost:7687" USER "neo4j" PASSWORD "password123" # 替换为你的实际密码def t…

Axios 和 Promise 区别对比

Axios 和 Promise 是前端开发中两个不同的概念&#xff0c;尽管 Axios 基于 Promise 实现&#xff0c;但它们的核心定位和功能有显著区别。以下是对比分析&#xff1a; 1. 核心定位与功能Promise 定义&#xff1a;Promise 是 JavaScript 的异步编程方案&#xff0c;用于处理异步…

Git分支管理与工作流详解

前言 分支管理是Git最强大的功能之一&#xff0c;它允许开发者在不影响主代码库的情况下创建独立的工作空间。本文将详细介绍Git分支的操作和常见工作流策略&#xff0c;帮助团队更高效地协作开发。 1. Git分支的基本概念 1.1 什么是分支 在Git中&#xff0c;分支本质上是指…

【flutter】flutter网易云信令 + im + 声网rtm从0实现通话视频文字聊天的踩坑

接了一个国外的项目,项目采用网易云im 网易云信令声网rtm遇到的一些问题这个项目只对接口,给的工期是两周,延了工期,问题还是比较多的 需要全局监听rtm信息,收到监听内容,引起视频通话网易云给的文档太烂,所有的类型推策只能文档一点点推声网的rtm配置网易云的信令,坑太多,比如…

hive/spark sql中unix_timestamp 函数的坑以及时间戳相关的转换

我用的是hive版本是3.1.3&#xff0c;spark版本是3.3.1&#xff0c;它们的unix_timestamp 函数在同样的语句下转换出来的时间戳是完全不同的&#xff0c;如下试验所示1.unix_timestamp 函数的坑上图试验中我同样的计算 2025-07-11 10:00:00 时间点对应的时间戳&#xff0c;但是…

MyBatis专栏介绍

专栏导读 在当今的软件开发领域&#xff0c;持久层框架的选择对于提高开发效率和数据处理能力至关重要。MyBatis作为一个半自动化的ORM框架&#xff0c;因其灵活、高效的特点&#xff0c;在众多开发者中广受好评。本专栏《MyBatis实战》旨在通过深入浅出的方式&#xff0c;帮助…

HarmonyOS从入门到精通:自定义组件开发指南(七):自定义事件与回调

HarmonyOS从入门到精通&#xff1a;自定义组件开发指南&#xff08;七&#xff09;&#xff1a;自定义事件与回调 在HarmonyOS应用开发中&#xff0c;组件化架构是构建复杂界面的基础&#xff0c;而组件间的高效通信则是实现业务逻辑的核心。自定义事件与回调机制作为组件交互的…

C++编程学习(第七天)

基于过程的程序设计C既可以用来进行基于过程的程序设计&#xff0c;又可以用来进行面向对象的程序设计。基于过程的程序设计又称为过程化的程序设计&#xff0c;它的特点是&#xff1a;程序必须告诉计算机应当具体怎么做&#xff0c;也就是要给出计算机全部操作的具体过程&…

ubuntu透网方案

场景&#xff1a;两个linux/Ubuntu系统&#xff0c;一个可以上网&#xff0c;一个不能&#xff0c;让不能上网的,让能上网的共享网络 步骤 1&#xff1a;修改 /etc/sysctl.conf sudo nano /etc/sysctl.conf 找到或添加以下行&#xff1a; net.ipv4.ip_forward1 按 CtrlO 保存&a…

基于Python的物联网岗位爬取与可视化系统的设计与实现【海量数据、全网岗位可换】

文章目录有需要本项目的代码或文档以及全部资源&#xff0c;或者部署调试可以私信博主项目介绍数据采集数据预处理系统展示总结每文一语有需要本项目的代码或文档以及全部资源&#xff0c;或者部署调试可以私信博主 项目介绍 随着物联网技术的迅速发展&#xff0c;物联网行业…

线性回归原理推导与应用(十):逻辑回归多分类实战

本篇文章将利用sklearn中内置的鸢尾花数据进行逻辑回归建模并对鸢尾花进行分类。对于逻辑回归和线性回归的相关原理&#xff0c;可以查看之前的文章 数据导入 鸢尾花数据是机器学习里的常用数据&#xff0c;首先导入一些基础库并从sklearn中导入数据集 #导入用到的一些pytho…

Docker 部署emberstack/sftp 镜像

Docker 部署 emberstack/sftp 镜像 1、找到国内可用的docker源,本次测试使用docker.1ms.run 2、下载emberstack/sftp镜像docker pull docker.1ms.run/emberstack/sftp3、安装并启动emberstack/sftp镜像docker run -d -p 22:22 --name SFTP -v D:\SFTP:/home/sftpuser/sftp --pr…

【华为OD】MVP争夺战2(C++、Java、Python)

文章目录题目题目描述输入描述输出描述示例思路核心思路&#xff1a;关键观察&#xff1a;算法步骤&#xff1a;排序策略&#xff1a;特殊情况处理&#xff1a;代码CJavaPython复杂度分析时间复杂度空间复杂度结果总结题目 题目描述 给定一个整型数组&#xff0c;请从该数组中…

Python打卡训练营Day58

DAY 58 经典时序预测模型2知识点回顾&#xff1a;时序建模的流程时序任务经典单变量数据集ARIMA&#xff08;p&#xff0c;d&#xff0c;q&#xff09;模型实战SARIMA摘要图的理解处理不平稳的2种差分n阶差分---处理趋势季节性差分---处理季节性建立一个ARIMA模型&#xff0c;通…

003大模型基础知识

大模型分类&#xff1a; 技术架构&#xff1a; Encoder Only Bert Decoder Only 著名的大模型都是 Encoder - Decoder T5 是否开源&#xff1a; 开源阵营&#xff1a; Llama DeepSeek Qwen 闭源阵营&#xff1a; ChatGpt Gemini Claude 语言模型发展阶段&am…

JVM监控及诊断工具-GUI篇

19.1. 工具概述 使用上一章命令行工具或组合能帮您获取目标Java应用性能相关的基础信息&#xff0c;但它们存在下列局限&#xff1a; 1&#xff0e;无法获取方法级别的分析数据&#xff0c;如方法间的调用关系、各方法的调用次数和调用时间等&#xff08;这对定位应用性能瓶颈…

适用于Windows系统截图工具

1.Faststone Capture 官网网址&#xff1a;https://faststone-capture.com/ 网上很多注册码&#xff1a;https://www.cnblogs.com/LiuYanYGZ/p/16839503.html 2.Snipaste 官网网址&#xff1a;https://apps.microsoft.com/detail/9p1wxpkb68kx?launchtrue&modefull&…

区块链的三种共识机制——PoW、PoS和DPoS原理

区块链的核心是去中心化网络的信任机制&#xff0c;而共识机制是实现这一目标的关键。共识机制可分为两个阶段&#xff1a;&#xff08;1&#xff09;提出共识内容&#xff08;2&#xff09;对内容达成共识&#xff08;遵循最长链原则&#xff09;。三种主流的共识机制主要有工…

React 和 Vue的自定义Hooks是如何实现的,如何创建自定义钩子

目的&#xff1a;将公共逻辑提取出来&#xff0c;类似于 mixin&#xff0c;解决了mixin的设计缺陷。 React 和 Vue 自定义 Hooks 实现对比 React 自定义 Hooks React 的自定义 Hooks 是 JavaScript 函数&#xff0c;它们以 use 开头&#xff0c;可以调用其他 Hooks。 基本规则 …