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

神经网络中常见的激活函数Sigmoid、Tanh和ReLU

激活函数在神经网络中起着至关重要的作用,它们决定了神经元的输出是否应该被激活以及如何非线性地转换输入信号。不同的激活函数适用于不同的场景,选择合适的激活函数可以显著影响模型的性能和训练效率。以下是三种常见的激活函数:SigmoidTanhReLU 的详细介绍。

1. Sigmoid 激活函数

公式:

在这里插入图片描述

图像:

在这里插入图片描述

特点:
  • 输出范围:(0, 1),将输入压缩到0到1之间。
  • 用途:常用于二分类问题中的输出层,因为它的输出可以解释为概率值(0表示负类,1表示正类)。
  • 优点
    • 输出具有良好的可解释性,适合用于需要概率输出的任务。
  • 缺点
    • 梯度消失问题:当输入较大或较小时,Sigmoid 函数的导数接近于0,导致反向传播时梯度几乎为零,使得权重更新非常缓慢,甚至停止更新。这在深度网络中尤为严重。
    • 非零中心化:Sigmoid 函数的输出不是以0为中心的,这会导致后续层的权重更新方向不一致,影响训练效率。
应用场景:
  • 二分类问题的输出层。
  • 逻辑回归模型。

2. Tanh (双曲正切) 激活函数

公式:

在这里插入图片描述

图像:

在这里插入图片描述

特点:
  • 输出范围:(-1, 1),将输入压缩到-1到1之间。
  • 用途:常用于隐藏层,尤其是在早期的神经网络中。它比 Sigmoid 更加对称,且输出是以0为中心的。
  • 优点
    • 零中心化:Tanh 的输出是零中心化的,这有助于加速收敛,因为后续层的权重更新方向更加一致。
    • 更好的梯度传播:相比 Sigmoid,Tanh 在输入接近0时的导数更大,因此梯度消失问题稍微缓解。
  • 缺点
    • 仍然存在梯度消失问题:虽然比 Sigmoid 稍好,但在输入较大或较小时,Tanh 的导数也会接近0,导致梯度消失。
应用场景:
  • 隐藏层,尤其是浅层神经网络。
  • RNN(循环神经网络)中,Tanh 是常用的激活函数,因为它可以帮助控制信息的流动。

3. ReLU (Rectified Linear Unit) 激活函数

公式:

在这里插入图片描述

图像:

在这里插入图片描述

特点:
  • 输出范围:[0, +∞),当输入为正时,输出等于输入;当输入为负时,输出为0。
  • 用途:广泛应用于现代深度学习模型的隐藏层,尤其是在卷积神经网络(CNN)和全连接网络中。
  • 优点
    • 避免梯度消失问题:对于正输入,ReLU 的导数为1,因此不会出现梯度消失问题。这使得 ReLU 在深层网络中表现良好,能够加速训练。
    • 计算简单:ReLU 的计算非常简单,只需判断输入是否大于0,因此计算效率高。
    • 稀疏性:ReLU 会将负输入直接设为0,这有助于引入稀疏性,减少模型的复杂度。
  • 缺点
    • 死亡 ReLU 问题:当输入为负时,ReLU 的导数为0,导致该神经元在反向传播时不再更新权重。如果大量神经元进入“死亡”状态,模型可能会失去表达能力。为了解决这个问题,通常使用改进版的 ReLU,如 Leaky ReLU 或 Parametric ReLU。
    • 非零中心化:ReLU 的输出是非零中心化的,这可能会导致后续层的权重更新方向不一致。
改进版本:
  • Leaky ReLU:为了解决死亡 ReLU 问题,Leaky ReLU 在负输入时赋予一个很小的斜率(通常是0.01),而不是直接设为0。
    [
    \text{Leaky ReLU}(x) = \max(\alpha x, x), \quad \text{其中} ; 0 < \alpha \ll 1
    ]
  • Parametric ReLU (PReLU):Leaky ReLU 的斜率是固定的,而 PReLU 的斜率是一个可学习的参数,可以在训练过程中自动调整。
    [
    \text{PReLU}(x) = \max(\alpha_i x, x), \quad \text{其中} ; \alpha_i ; \text{是每个神经元的可学习参数}
    ]
  • Exponential Linear Unit (ELU):ELU 在负输入时使用指数函数来平滑过渡,避免了死亡 ReLU 问题,并且输出是零中心化的。
    [
    \text{ELU}(x) =
    \begin{cases}
    x & \text{if} ; x > 0 \
    \alpha (e^x - 1) & \text{if} ; x \leq 0
    \end{cases}
    ]
应用场景:
  • 隐藏层,尤其是深度神经网络(DNN)、卷积神经网络(CNN)和生成对抗网络(GAN)。
  • 由于其出色的性能和计算效率,ReLU 及其变体已成为现代深度学习模型中最常用的激活函数之一。

总结

激活函数输出范围优点缺点应用场景
Sigmoid(0, 1)输出具有概率意义梯度消失,非零中心化二分类问题的输出层,逻辑回归
Tanh(-1, 1)零中心化,更好的梯度传播梯度消失隐藏层,RNN 中
ReLU[0, +∞)避免梯度消失,计算简单,引入稀疏性死亡 ReLU 问题,非零中心化隐藏层,DNN、CNN、GAN

选择激活函数的建议:

  • Sigmoid:主要用于二分类问题的输出层,尤其是在需要概率输出的情况下。
  • Tanh:适用于隐藏层,尤其是浅层网络或 RNN 中。它比 Sigmoid 更加对称,有助于加速收敛。
  • ReLU:是现代深度学习模型中最常用的激活函数,尤其适用于隐藏层。如果你遇到死亡 ReLU 问题,可以尝试使用 Leaky ReLU 或 PReLU。

相关文章:

神经网络中常见的激活函数Sigmoid、Tanh和ReLU

激活函数在神经网络中起着至关重要的作用&#xff0c;它们决定了神经元的输出是否应该被激活以及如何非线性地转换输入信号。不同的激活函数适用于不同的场景&#xff0c;选择合适的激活函数可以显著影响模型的性能和训练效率。以下是三种常见的激活函数&#xff1a;Sigmoid、T…...

适用于学校、医院等低压用电场所的智能安全配电装置

引言 电力&#xff0c;作为一种清洁且高效的能源&#xff0c;极大地促进了现代生活的便捷与舒适。然而&#xff0c;与此同时&#xff0c;因使用不当或维护缺失等问题&#xff0c;漏电、触电事件以及电气火灾频发&#xff0c;对人们的生命安全和财产安全构成了严重威胁&#xf…...

基于python爬虫的智慧人才数据分析系统

废话不多说&#xff0c;先看效果图 更多效果图可私信我获取 源码分享 import os import sysdef main():"""Run administrative tasks."""os.environ.setdefault(DJANGO_SETTINGS_MODULE, 智慧人才数据分析系统.settings)try:from django.core.m…...

LeetCode-315. Count of Smaller Numbers After Self

目录 题目描述 解题思路 【C】 【Java】 复杂度分析 LeetCode-315. Count of Smaller Numbers After Selfhttps://leetcode.com/problems/count-of-smaller-numbers-after-self/description/ 题目描述 Given an integer array nums, return an integer array counts whe…...

根据导数的定义计算导函数

根据导数的定义计算导函数 1. Finding derivatives using the definition (使用定义求导)1.1. **We want to differentiate f ( x ) 1 / x f(x) 1/x f(x)1/x with respect to x x x**</font>1.2. **We want to differentiate f ( x ) x f(x) \sqrt{x} f(x)x ​ wi…...

WPF关于打开新窗口获取数据的回调方法的两种方式

一种基于消息发送模式 一种基于回调机制 基于消息发送模式 父页面定义接收的_selectedPnNumberStandarMsg保证是唯一 Messenger.Default.Register<PlateReplaceApplyModel>(this, _selectedPnNumberStandarMsgToken, platePnNumberModel > { …...

复杂网络(四)

一、规则网络 孤立节点网络全局耦合网络&#xff08;又称完全网络&#xff09;星型网络一维环二维晶格 编程实践&#xff1a; import networkx as nx import matplotlib.pyplot as pltn 10 #创建孤立节点图 G1 nx.Graph() G1.add_nodes_from(list(range(n))) plt.figure(f…...

用MATLAB符号工具建立机器人的动力学模型

目录 介绍代码功能演示拉格朗日方法回顾求解符号表达式数值求解 介绍 开发机器人过程中经常需要用牛顿-拉格朗日法建立机器人的动力学模型&#xff0c;表示为二阶微分方程组。本文以一个二杆系统为例&#xff0c;介绍如何用MATLAB符号工具得到微分方程表达式&#xff0c;只需要…...

SQL优化与性能——数据库设计优化

数据库设计优化是提高数据库性能、确保数据一致性和支持业务增长的关键环节。无论是大型企业应用还是小型项目&#xff0c;合理的数据库设计都能够显著提升系统性能、减少冗余数据、优化查询响应时间&#xff0c;并降低维护成本。本章将深入探讨数据库设计中的几个关键技术要点…...

FPGA存在的意义:为什么adc连续采样需要fpga来做,而不会直接用iic来实现

FPGA存在的意义&#xff1a;为什么adc连续采样需要fpga来做&#xff0c;而不会直接用iic来实现 原因ADS111x连续采样实现连续采样功能说明iic读取adc的数据速率 VS adc连续采样的速率adc连续采样的速率iic读取adc的数据速率结论分析 FPGA读取adc数据问题一&#xff1a;读取adc数…...

我们来学mysql -- 事务之概念(原理篇)

事务的概念 题记一个例子一致性隔离性原子性持久性 题记 在漫长的编程岁月中&#xff0c;存在一如既往地贯穿着工作&#xff0c;面试的概念这类知识点&#xff0c;事不关己当然高高挂起&#xff0c;精准踩坑时那心情也的却是日了&#x1f436;请原谅我的粗俗&#xff0c;遇到B…...

基于特征子空间的高维异常检测:一种高效且可解释的方法

本文将重点探讨一种替代传统单一检测器的方法&#xff1a;不是采用单一检测器分析数据集的所有特征&#xff0c;而是构建多个专注于特征子集(即子空间)的检测器系统。 在表格数据的异常检测实践中&#xff0c;我们的目标是识别数据中最为异常的记录&#xff0c;这种异常性可以…...

看不见的彼方:交换空间——小菜一碟

有个蓝色的链接&#xff0c;先去看看两年前的题目的write up &#xff08;https://github.com/USTC-Hackergame/hackergame2022-writeups/blob/master/official/%E7%9C%8B%E4%B8%8D%E8%A7%81%E7%9A%84%E5%BD%BC%E6%96%B9/README.md&#xff09; 从别人的write up中了解到&…...

YOLO模型训练后的best.pt和last.pt区别

在选择YOLO模型训练后的权重文件best.pt和last.pt时&#xff0c;主要取决于具体的应用场景‌&#xff1a;‌12 ‌best.pt‌&#xff1a;这个文件保存的是在训练过程中表现最好的模型权重。通常用于推理和部署阶段&#xff0c;因为它包含了在验证集上表现最好的模型权重&#x…...

Pareidoscope - 语言结构关联工具

文章目录 关于 Pareidoscope安装使用方法输入格式语料库查询 将语料库转换为 SQLite3 数据库两种语言结构之间的关联简单词素分析关联共现和伴随词素分析相关的更大结构可视化关联结构 关于 Pareidoscope Pareidoscope 是一组 用于确定任意语言结构之间 关联的工具&#xff0c…...

GPT(Generative Pre-trained Transformer) 和 Transformer的比较

GPT&#xff08;Generative Pre-trained Transformer&#xff09; 和 Transformer 的比较 flyfish 1. Transformer 是一种模型架构 Transformer 是一种通用的神经网络架构&#xff0c;由 Vaswani 等人在论文 “Attention Is All You Need”&#xff08;2017&#xff09;中提…...

软件无线电(SDR)的架构及相关术语

今天简要介绍实现无线电系统调制和解调的主要方法&#xff0c;这在软件定义无线电(SDR)的背景下很重要。 外差和超外差 无线电发射机有两种主要架构——一种是从基带频率直接调制到射频频率&#xff08;称为外差&#xff09;&#xff0c;而第二种超外差是通过两个调制阶段来实…...

Python将Excel文件转换为JSON文件

工作过程中,需要从 Excel 文件中读取数据,然后交给 Python 程序处理数据,中间需要把 Excel 文件读取出来转为 json 格式,再进行下一步数据处理。 这里我们使用pandas库,这是一个强大的数据分析工具,能够方便地读取和处理各种数据格式。需要注意的是还需要引入openpyxl库,…...

排序算法之选择排序篇

思想&#xff1a; 每次从未排序的部分找出最小的元素&#xff0c;将其放到已排序部分的末尾 从数据结构中找到最小值&#xff0c;放到第一位&#xff0c;放到最前面&#xff0c;之后再从剩下的元素中找出第二小的值放到第二位&#xff0c;以此类推。 实现思路&#xff1a; 遍…...

sizeof和strlen区分,(好多例子)

sizeof算字节大小 带\0 strlen算字符串长度 \0之前...

基于ASP.NET+ SQL Server实现(Web)医院信息管理系统

医院信息管理系统 1. 课程设计内容 在 visual studio 2017 平台上&#xff0c;开发一个“医院信息管理系统”Web 程序。 2. 课程设计目的 综合运用 c#.net 知识&#xff0c;在 vs 2017 平台上&#xff0c;进行 ASP.NET 应用程序和简易网站的开发&#xff1b;初步熟悉开发一…...

HTML 列表、表格、表单

1 列表标签 作用&#xff1a;布局内容排列整齐的区域 列表分类&#xff1a;无序列表、有序列表、定义列表。 例如&#xff1a; 1.1 无序列表 标签&#xff1a;ul 嵌套 li&#xff0c;ul是无序列表&#xff0c;li是列表条目。 注意事项&#xff1a; ul 标签里面只能包裹 li…...

css的定位(position)详解:相对定位 绝对定位 固定定位

在 CSS 中&#xff0c;元素的定位通过 position 属性控制&#xff0c;共有 5 种定位模式&#xff1a;static&#xff08;静态定位&#xff09;、relative&#xff08;相对定位&#xff09;、absolute&#xff08;绝对定位&#xff09;、fixed&#xff08;固定定位&#xff09;和…...

React---day11

14.4 react-redux第三方库 提供connect、thunk之类的函数 以获取一个banner数据为例子 store&#xff1a; 我们在使用异步的时候理应是要使用中间件的&#xff0c;但是configureStore 已经自动集成了 redux-thunk&#xff0c;注意action里面要返回函数 import { configureS…...

在Ubuntu24上采用Wine打开SourceInsight

1. 安装wine sudo apt install wine 2. 安装32位库支持,SourceInsight是32位程序 sudo dpkg --add-architecture i386 sudo apt update sudo apt install wine32:i386 3. 验证安装 wine --version 4. 安装必要的字体和库(解决显示问题) sudo apt install fonts-wqy…...

LangChain知识库管理后端接口:数据库操作详解—— 构建本地知识库系统的基础《二》

这段 Python 代码是一个完整的 知识库数据库操作模块&#xff0c;用于对本地知识库系统中的知识库进行增删改查&#xff08;CRUD&#xff09;操作。它基于 SQLAlchemy ORM 框架 和一个自定义的装饰器 with_session 实现数据库会话管理。 &#x1f4d8; 一、整体功能概述 该模块…...

基于Java+VUE+MariaDB实现(Web)仿小米商城

仿小米商城 环境安装 nodejs maven JDK11 运行 mvn clean install -DskipTestscd adminmvn spring-boot:runcd ../webmvn spring-boot:runcd ../xiaomi-store-admin-vuenpm installnpm run servecd ../xiaomi-store-vuenpm installnpm run serve 注意&#xff1a;运行前…...

Python 实现 Web 静态服务器(HTTP 协议)

目录 一、在本地启动 HTTP 服务器1. Windows 下安装 node.js1&#xff09;下载安装包2&#xff09;配置环境变量3&#xff09;安装镜像4&#xff09;node.js 的常用命令 2. 安装 http-server 服务3. 使用 http-server 开启服务1&#xff09;使用 http-server2&#xff09;详解 …...

MyBatis中关于缓存的理解

MyBatis缓存 MyBatis系统当中默认定义两级缓存&#xff1a;一级缓存、二级缓存 默认情况下&#xff0c;只有一级缓存开启&#xff08;sqlSession级别的缓存&#xff09;二级缓存需要手动开启配置&#xff0c;需要局域namespace级别的缓存 一级缓存&#xff08;本地缓存&#…...

ui框架-文件列表展示

ui框架-文件列表展示 介绍 UI框架的文件列表展示组件&#xff0c;可以展示文件夹&#xff0c;支持列表展示和图标展示模式。组件提供了丰富的功能和可配置选项&#xff0c;适用于文件管理、文件上传等场景。 功能特性 支持列表模式和网格模式的切换展示支持文件和文件夹的层…...