ss激活函数的作用是在隐藏层引入非线性,使得神经网络能够学习和表示复杂的函数关系,使网络具备非线性能力,增强其表达能力。

一、常见激活函数

1、sigmoid

激活函数的作用是在隐藏层引入非线性,使得神经网络能够学习和表示复杂的函数关系,使网络具备非线性能力,增强其表达能力。

(1)公式:

(2)特征

  1. 将任意实数输入映射到 (0, 1)之间,因此非常适合处理概率场景。

  2. sigmoid函数一般只用于二分类的输出层

  3. 微分性质: 导数计算比较方便,可以用自身表达式来表示:

(3)缺点

  • 梯度消失:

    • 在输入非常大或非常小时,Sigmoid函数的梯度会变得非常小,接近于0。这导致在反向传播过程中,梯度逐渐衰减。

    • 最终使得早期层的权重更新非常缓慢,进而导致训练速度变慢甚至停滞。

  • 信息丢失:输入100和输入10000经过sigmoid的激活值几乎都是等于 1 的,但是输入的数据却相差 100 倍。

  • 计算成本高: 由于涉及指数运算,Sigmoid的计算比ReLU等函数更复杂,尽管差异并不显著。

2、tanh

tanh(双曲正切)是一种常见的非线性激活函数,常用于神经网络的隐藏层。tanh 函数也是一种S形曲线,输出范围为(−1,1)。

(1)公式:

(2)特征

  1. 输出范围: 将输入映射到$$(-1, 1)$$之间,因此输出是零中心的。相比于Sigmoid函数,这种零中心化的输出有助于加速收敛。

  2. 对称性: Tanh函数关于原点对称,因此在输入为0时,输出也为0。这种对称性有助于在训练神经网络时使数据更平衡。

  3. 平滑性: Tanh函数在整个输入范围内都是连续且可微的,这使其非常适合于使用梯度下降法进行优化。

(3)缺点

  1. 梯度消失: 虽然一定程度上改善了梯度消失问题,但在输入值非常大或非常小时导数还是非常小,这在深层网络中仍然是个问题。

  2. 计算成本: 由于涉及指数运算,Tanh的计算成本还是略高,尽管差异不大。

3、ReLU

ReLU(Rectified Linear Unit)是深度学习中最常用的激活函数之一,它的全称是修正线性单元。ReLU 激活函数的定义非常简单,但在实践中效果非常好。

(1)公式

即ReLU对输入x进行非线性变换:

(2)特征

  1. 计算简单:ReLU 的计算非常简单,只需要对输入进行一次比较运算,这在实际应用中大大加速了神经网络的训练。

  2. ReLU 函数的导数是分段函数:

  3. 缓解梯度消失问题:相比于 Sigmoid 和 Tanh 激活函数,ReLU 在正半区的导数恒为 1,这使得深度神经网络在训练过程中可以更好地传播梯度,不存在饱和问题。

  4. 稀疏激活:ReLU在输入小于等于 0 时输出为 0,这使得 ReLU 可以在神经网络中引入稀疏性(即一些神经元不被激活),这种稀疏性可以提升网络的泛化能力。

(3)缺点

神经元死亡:由于ReLU在x≤0时输出为0,如果某个神经元输入值是负,那么该神经元将永远不再激活,成为“死亡”神经元。随着训练的进行,网络中可能会出现大量死亡神经元,从而会降低模型的表达能力。

4、LeakyReLU

Leaky ReLU是一种对 ReLU 函数的改进,旨在解决 ReLU 的一些缺点,特别是神经元死亡的问题。Leaky ReLU 通过在输入为负时引入一个小的负斜率来改善这一问题。

(1)公式

其中,alpha 是一个非常小的常数(如 0.01),它控制负半轴的斜率。这个常数 alpha是一个超参数,可以在训练过程中可自行进行调整。

(2)特征

  1. 避免神经元死亡:通过在x<=0区域引入一个小的负斜率,这样即使输入值小于等于零,Leaky ReLU仍然会有梯度,允许神经元继续更新权重,避免神经元在训练过程中完全“死亡”的问题。

  2. 计算简单:Leaky ReLU 的计算与 ReLU 相似,只需简单的比较和线性运算,计算开销低。

(3)缺点

  1. 参数选择:alpha是一个需要调整的超参数,选择合适的alpha值可能需要实验和调优。

  2. 出现负激活:如果alpha设定得不当,仍然可能导致激活值过低

5、softmax

Softmax激活函数通常用于分类问题的输出层,它能够将网络的输出转换为概率分布,使得输出的各个类别的概率之和为 1。Softmax 特别适合用于多分类问题。

(1)公式

假设神经网络的输出层有n个节点,每个节点的输出为z_i,则 Softmax 函数的定义如下:

(2)特征

  1. 将输出转化为概率:通过Softmax,可以将网络的原始输出转化为各个类别的概率,从而可以根据这些概率进行分类决策。

  2. 概率分布:Softmax的输出是一个概率分布,即每个输出值Softmax(Zi)都是一个介于0和1之间的数,并且所有输出值的和为 1:

  3. 突出差异:Softmax会放大差异,使得概率最大的类别的输出值更接近1,而其他类别更接近0。

  4. 在实际应用中,Softmax常与交叉熵损失函数Cross-Entropy Loss结合使用,用于多分类问题。在反向传播中,Softmax的导数计算是必需的。

(3)缺点

  1. 数值不稳定性:在计算过程中,如果z_i的数值过大,e^{z_i}可能会导致数值溢出。因此在实际应用中,经常会对z_i进行调整,如减去最大值以确保数值稳定。

        2.难以处理大量类别:Softmax在处理类别数非常多的情况下(如大模型中的词汇表)计算开销会较大。

(4)代码实现

import torch
import torch.nn as nn# 表示4分类,每个样本全连接后得到4个得分,下面示例模拟的是两个样本的得分
input_tensor = torch.tensor([[-1.0, 2.0, -3.0, 4.0], [-2, 3, -3, 9]])softmax = nn.Softmax()
output_tensor = softmax(input_tensor)
# 关闭科学计数法
torch.set_printoptions(sci_mode=False)
print("输入张量:", input_tensor)
print("输出张量:", output_tensor)
"""
输入张量: tensor([[-1.,  2., -3.,  4.],[-2.,  3., -3.,  9.]])
输出张量: tensor([[    0.0059,     0.1184,     0.0008,     0.8749],[    0.0000,     0.0025,     0.0000,     0.9975]])
"""

二、如何选择激活函数

隐藏层

  1. 优先选ReLU;

  2. 如果ReLU效果不咋地,那么尝试其他激活,如Leaky ReLU等;

  3. 使用ReLU时注意神经元死亡问题, 避免出现过多神经元死亡;

  4. 不使用sigmoid,尝试使用tanh;

 输出层

  1. 二分类问题选择sigmoid激活函数;

  2. 多分类问题选择softmax激活函数

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

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

相关文章

洛谷 小 Y 拼木棒 贪心

题目背景上道题中&#xff0c;小 Y 斩了一地的木棒&#xff0c;现在她想要将木棒拼起来。题目描述有 n 根木棒&#xff0c;现在从中选 4 根&#xff0c;想要组成一个正三角形&#xff0c;问有几种选法&#xff1f;答案对 1097 取模。输入格式第一行一个整数 n。第二行往下 n 行…

飞算JavaAI的“盾牌”计划:手撕Spring Security + JWT认证链

一、飞算JavaAI&#xff1a;智能时代Java开发的“全能引擎” 1.1 飞算JavaAI&#xff1a;重新定义Java安全开发的“技术革命”在数字化浪潮席卷全球的今天&#xff0c;Java作为企业级应用开发的首选语言&#xff0c;其安全性需求随着业务复杂度的提升而呈指数级增长——从用户认…

大语言模型提示工程与应用:大语言模型进阶提示工程技术

高级提示词使用 学习目标 掌握大语言模型中进阶提示工程技术的原理与应用&#xff0c;包括零样本/少样本提示、思维链推理、知识生成等核心方法&#xff0c;提升复杂任务解决能力。 相关知识点 零样本与少样本提示思维链提示技术高级推理技术 学习内容 1 零样本与少样本提…

【从零开始java学习|第五篇】项目、模块、包、类的概念与联系

目录 一、概念与作用&#xff1a;从宏观到微观的层级拆分 1. 项目&#xff08;Project&#xff09;&#xff1a;最外层的 "大容器" 2. 模块&#xff08;Module&#xff09;&#xff1a;项目的 "功能子单元" 3. 包&#xff08;Package&#xff09;&…

kernel pwn 入门(四) ret2dir详细

介绍 ret2dir 是哥伦比亚大学网络安全实验室在 2014 年提出的一种辅助攻击手法&#xff0c;主要用来绕过 smep、smap、pxn 等用户空间与内核空间隔离的防护手段&#xff0c; 原论文见此处&#xff1a; ret2dir原文论文 参考&#xff1a;kernel pwn入门到大神 ret2dir ret2di…

n阶常系数齐次线性微分方程的含义

微分方程 (Differential Equation): 含义&#xff1a; 包含未知函数及其导数&#xff08;或微分&#xff09;的方程。例子&#xff1a; dy/dx 2x&#xff08;未知函数是 y(x)&#xff0c;导数是 dy/dx&#xff09;, dy/dt 2 dy/dt y 0&#xff08;未知函数是 y(t)&#xff…

hexo + github 搭建个人博客

hexo github 搭建个人博客环境配置部署环境配置部署 所需环境&#xff1a; 跳过github邮箱注册。 右键点击桌面空白处&#xff0c;选择 “Git Bash Here”&#xff0c;输入以下命令设置用户名和邮箱&#xff1a; git config --global user.name "GitHub用户名" g…

ERFA库全面指南:从基础概念到实践应用

ERFA库全面指南&#xff1a;从基础概念到实践应用 ERFA&#xff08;Essential Routines for Fundamental Astronomy&#xff09;作为天文学计算领域的重要开源库&#xff0c;为开发者提供了处理天文时间、坐标系转换和星体位置计算等核心功能。本文将深入探讨ERFA库的技术细节…

STM32 HAL库串口的功能实现与改进

目录 概述 1 CubeMX配置串口参数 1.1 STM32CUB配置参数 1.2 生成代码 2 核心代码介绍 2.1 初始化函数 2.2 中断函数 2.3 重要的用户函数 2.4 实现用户接口函数 3 接收数据函数的优化 3.1 HAL库接收函数的缺陷 3.2 改进接收函数 概述 在STM32开发中使用HAL库操作串…

DBA | SQL 结构化查询语言介绍与学习环境准备

[ 知识是人生的灯塔&#xff0c;只有不断学习&#xff0c;才能照亮前行的道路 ]&#x1f4e2; 大家好&#xff0c;我是 WeiyiGeek&#xff0c;一名深耕安全运维开发&#xff08;SecOpsDev&#xff09;领域的技术从业者&#xff0c;致力于探索DevOps与安全的融合&#xff08;Dev…

day39_2025-08-13

知识点回顾&#xff1a; 彩色和灰度图片测试和训练的规范写法&#xff1a;封装在函数中 展平操作&#xff1a;除第一个维度batchsize外全部展平 dropout操作&#xff1a;训练阶段随机丢弃神经元&#xff0c;测试阶段eval模式关闭dropout 作业&#xff1a;仔细学习下测试和训练…

使用GTX ip core + SDI IP core实现SDI设计

使用GTX ip core SDI IP core实现SDI设计 1.SDI接口可以调用GTX IP&#xff0c;具体代码可以参考xapp592&#xff0c;将代码移植进入工程里&#xff0c;增加SDI IP核&#xff0c;增加引脚约束即可运行起来 2.使用transceiver的gt的ip core&#xff0c;然后协议选择SDI协议 3.使…

【无标题】centos 配置阿里云的yum源

1、查看系统正在使用的yum源列表yum repolist结果分析&#xff1a;目前这里看出有base &#xff0c;extras &#xff0c;updates三个yum源&#xff0c;这三个也是系统默认的yum源&#xff0c;一般还需要一个epel企业级额外的yum源&#xff0c;本文主要就是更改yum源的配置文件&…

GPT-5全面开放!OpenAI回应用户反馈:GPT-4o已重新上线!

OpenAI 近日宣布&#xff0c;其最新模型 GPT-5 现已全面向所有 Plus、Pro、Team 和免费用户开放。 为进一步优化用户体验并应对初期反馈&#xff1a; 用户额度提升&#xff1a; 在刚刚过去的周末&#xff0c;OpenAI已将 Plus 和 Team 用户的 GPT-5 使用额度提升至原来的 2 倍…

线程安全的单例模式,STL和智能指针

目录 什么是单例模式 什么是设计模式 单例模式的特点 饿汉实现方式和懒汉实现方式 饿汉方式实现单例模式 懒汉方式实现单例模式 懒汉方式实现单例模式(线程安全版本) STL,智能指针和线程安全 STL中的容器是否是线程安全的? 智能指针是否是线程安全的? 其他常见的各种锁 什么是…

[每周一更]-(第155期):深入Go反射机制:架构师视角下的动态力量与工程智慧

在构建高复杂度、高灵活性的Go语言系统时&#xff0c;反射&#xff08;reflect&#xff09;就像一把双刃剑——用得好能斩断开发枷锁&#xff0c;用不好则可能自伤程序。本文将深入探讨反射的内部机理、典型应用场景、安全边界及性能优化策略。一、反射核心&#xff1a;类型与值…

15_基于深度学习的苹果病害检测识别系统(yolo11、yolov8、yolov5+UI界面+Python项目源码+模型+标注好的数据集)

目录 项目介绍&#x1f3af; 功能展示&#x1f31f; 一、环境安装&#x1f386; 环境配置说明&#x1f4d8; 安装指南说明&#x1f3a5; 环境安装教学视频 &#x1f31f; 二、数据集介绍&#x1f31f; 三、系统环境&#xff08;框架/依赖库&#xff09;说明&#x1f9f1; 系统环…

Kotlin 数据容器 - MutableList(MutableList 概述、MutableList 增删改查、MutableList 遍历元素)

一、MutableList 概述MutableList 是 Kotlin 中可变的列表接口&#xff0c;它继承自 List 接口并添加了修改列表内容的方法MutableList 允许添加、删除、更新元素二、创建 MutableList 1、基础创建 使用 mutableListOf 函数 // 创建一个 MutableList&#xff0c;包含 4 个元素 …

数据库规范化:消除冗余与异常的核心法则

规范化&#xff08;Normalization&#xff09; 是数据库设计中的核心流程&#xff0c;旨在通过结构化表与字段&#xff0c;消除数据冗余和避免数据异常&#xff08;插入/更新/删除异常&#xff09;&#xff0c;同时确保数据依赖合理。其核心方法是将大表拆分为多个小表&#xf…

AI绘画与摄影新纪元:ChatGPT+Midjourney+文心一格 共绘梦幻世界

文章目录一、AI艺术的新时代二、ChatGPT&#xff1a;创意的引擎与灵感的火花三、Midjourney&#xff1a;图像生成的魔法与技术的奇迹四、文心一格&#xff1a;艺术的升华与情感的共鸣五、融合创新&#xff1a;AI绘画与摄影实战的无限可能六、应用场景与实践案例AI艺术的美好未来…