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

常见激活函数——作用、意义、特点及实现

文章目录

  • 激活函数的意义
  • 常见激活函数及其特点
    • 1. Sigmoid(Logistic 函数、S型函数)
    • 2. Tanh(双曲正切函数)
    • 3. ReLU(Rectified Linear Unit修正线性单元)
    • 4. Softmax
    • 5. Swish(Google 提出)
  • python实现各类激活函数

激活函数(Activation Function)是神经网络中的核心组件之一,它决定了神经元的输出方式,**直接影响模型的非线性表达能力、梯度传播和训练效果。**不同的激活函数适用于不同的场景,选择合适的激活函数对模型性能至关重要。在一些模型训练中会涉及到激活函数的选择,今天自己查阅资料时总结一下不同激活函数的作用、意义、特点及如何实现。

“激活函数”​(Activation Function,也常被译为“激励函数”​)的作用就是为了给神经网络加入非线性的表达能力,它改进了阈值函数只能单纯比较大小判断是否激发神经元信号的简单逻辑,允许根据实际需要,对输入的加权和进行不受限制的数学处理。
在这里插入图片描述

——周志明《智慧的疆界:从图灵机到人工智能》

一些高质量的文章可供学习
神经网络|(十二)|常见激活函数
图解深度学习中的激活函数

激活函数的意义

引入非线性

  • 突破线性模型限制:如果神经网络中没有激活函数,每一层都只是线性变换,无论网络有多少层,其输出都是输入的线性组合,无法逼近复杂函数。而激活函数可以引入非线性因素,使神经网络能够学习和表达复杂的非线性关系,从而解决诸如图像识别、语音识别等复杂任务。
  • 构造复杂决策边界:激活函数的非线性映射可以使神经网络构造出复杂的决策边界,提高模型的泛化能力,使其能够更好地拟合数据分布,区分不同类别的数据。

控制输出值范围

  • 归一化输出:某些激活函数如sigmoid会将输出限制在特定区间内,如(0,1),tanh的输出范围是(-1,1),这有助于提高网络训练稳定性,并减少梯度爆炸或梯度消失的风险,方便后续处理和计算。
  • 便于概率解释:在二分类问题中,sigmoid函数的输出可以被解释为概率,方便对模型的预测结果进行理解和分析。

影响梯度传播

  • 缓解梯度消失或爆炸问题:不同的激活函数对梯度的传播有不同的影响。例如,relu函数在正区间梯度恒为1,有效缓解了sigmoid和tanh的梯度消失问题,加快了模型的收敛速度;而tanh函数虽然也存在梯度消失问题,但其输出以零为中心,有助于改善梯度下降的效率和网络的收敛速度。
  • 优化训练过程:激活函数的选择会影响反向传播中的梯度计算,从而影响网络的训练效率。合适的激活函数可以使梯度传播更加稳定和有效,

加快模型的训练速度,提高训练效果。
增加网络稀疏性

  • 减少计算量:以relu函数为例,它将输入小于0的部分置为0,大于0的部分保持不变,使得部分神经元输出为0,增加了网络的稀疏性。这可以减少计算量,提高计算效率,特别是在处理大规模数据和深度网络时,这种稀疏性可以显著降低计算成本。
  • 提取关键特征:网络的稀疏性有助于提取更具有区分性的特征,使模型更加关注重要的输入特征,提高模型的性能和泛化能力。

常见激活函数及其特点

在这里插入图片描述

1. Sigmoid(Logistic 函数、S型函数)

在这里插入图片描述

2. Tanh(双曲正切函数)

在这里插入图片描述

3. ReLU(Rectified Linear Unit修正线性单元)

在这里插入图片描述

4. Softmax

在这里插入图片描述

5. Swish(Google 提出)

在这里插入图片描述

python实现各类激活函数

import numpy as np
import matplotlib.pyplot as plt
import warnings
warnings.filterwarnings("ignore")
plt.rcParams['font.sans-serif'] = ['SimHei']  # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False  # 用来正常显示负号# Sigmoid
def sigmoid(x):return 1 / (1 + np.exp(-x))# Tanh
def tanh(x):return np.tanh(x)# ReLU
def relu(x):return np.maximum(0, x)# Leaky ReLU
def leaky_relu(x, alpha=0.01):return np.where(x > 0, x, alpha * x)# Softmax
def softmax(x):exp_x = np.exp(x - np.max(x))  # 防止数值溢出return exp_x / exp_x.sum(axis=0)# Swish
def swish(x, beta=1.0):return x * sigmoid(beta * x)# 测试数据
x = np.linspace(-5, 5, 100)# 计算各激活函数输出
y_sigmoid = sigmoid(x)
y_tanh = tanh(x)
y_relu = relu(x)
y_leaky_relu = leaky_relu(x)
y_softmax = softmax(x)
y_swish = swish(x)# 绘制图像
plt.figure(figsize=(12, 8))plt.subplot(2, 3, 1)
plt.plot(x, y_sigmoid, label="Sigmoid")
plt.title("Sigmoid")
plt.grid()plt.subplot(2, 3, 2)
plt.plot(x, y_tanh, label="Tanh", color="orange")
plt.title("Tanh")
plt.grid()plt.subplot(2, 3, 3)
plt.plot(x, y_relu, label="ReLU", color="green")
plt.title("ReLU")
plt.grid()plt.subplot(2, 3, 4)
plt.plot(x, y_leaky_relu, label="Leaky ReLU", color="red")
plt.title("Leaky ReLU")
plt.grid()plt.subplot(2, 3, 5)
inputs = np.vstack([x, 0.5 * x, 0.2 * x])
# 计算Softmax输出
# Softmax计算三个变量各自所占的比例
outputs = softmax(inputs)
for i in range(outputs.shape[0]):plt.plot(x, outputs[i], label=f'变量 {i+1}所占比例')
plt.title("Softmax")
plt.legend() 
plt.grid()plt.subplot(2, 3, 6)
plt.plot(x, y_swish, label="Swish", color="purple")
plt.title("Swish")
plt.grid()plt.tight_layout()
plt.show()

在这里插入图片描述

相关文章:

常见激活函数——作用、意义、特点及实现

文章目录 激活函数的意义常见激活函数及其特点1. Sigmoid(Logistic 函数、S型函数)2. Tanh(双曲正切函数)3. ReLU(Rectified Linear Unit修正线性单元)4. Softmax5. Swish(Google 提出&#xff…...

Spring模拟转账开发

完成转账代码的编写 service public class AccountServiceImpl implements AccountService {Autowiredprivate AccountDao accountDao;public void setAccountDao(AccountDao accountDao) {this.accountDao accountDao;}public void pay(String out, String in, Double money)…...

基于微信小程序的在线聊天功能实现:WebSocket通信实战

基于微信小程序的在线聊天功能实现:WebSocket通信实战 摘要 本文将详细介绍如何使用微信小程序结合WebSocket协议开发一个实时在线聊天功能。通过完整的代码示例和分步解析,涵盖界面布局、WebSocket连接管理、消息交互逻辑及服务端实现,适合…...

小波变换+注意力机制成为nature收割机

小波变换作为一种新兴的信号分析工具,能够高效地提取信号的局部特征,为复杂数据的处理提供了有力支持。然而,它在捕捉数据中最为关键的部分时仍存在局限性。为了弥补这一不足,我们引入了注意力机制,借助其能够强化关注…...

【无标题】威灏光电哲讯科技MES项目启动会圆满举行

5月14日,威灏光电与哲讯科技MES项目启动会在威灏光电总部隆重举行。威灏光电董事长江轮、总经理刘明星、哲讯科技总经理崔新华、副总王子文及双方项目组成员共同出席,标志着两家企业在数字化领域的第二次深度合作正式启航。 强强联手,二度合作…...

腾讯云存储原理

我们来详细展开你提到的两个核心结构概念: 一、“基于分布式文件系统 对象存储技术” 是什么? 1. 分布式文件系统(DFS)基础 分布式文件系统是一种支持将数据分布在多个存储节点上、并对上层用户透明的文件系统。腾讯云COS虽然是…...

display:grid网格布局属性说明

网格父级 &#xff1a;display:grid&#xff08;块级网格&#xff09;/ inline-grid&#xff08;行内网格&#xff09; 注意&#xff1a;当设置网格布局&#xff0c;column、float、clear、vertical-align的属性是无效的。 HTML: <ul class"ls02 f18 mt50 sysmt30&…...

排序算法之高效排序:快速排序,归并排序,堆排序详解

排序算法之高效排序&#xff1a;快速排序、归并排序、堆排序详解 前言一、快速排序&#xff08;Quick Sort&#xff09;1.1 算法原理1.2 代码实现&#xff08;Python&#xff09;1.3 性能分析 二、归并排序&#xff08;Merge Sort&#xff09;2.1 算法原理2.2 代码实现&#xf…...

Java 并发编程归纳总结(可重入锁 | JMM | synchronized 实现原理)

1、锁的可重入 一个不可重入的锁&#xff0c;抢占该锁的方法递归调用自己&#xff0c;或者两个持有该锁的方法之间发生调用&#xff0c;都会发生死锁。以之前实现的显式独占锁为例&#xff0c;在递归调用时会发生死锁&#xff1a; public class MyLock implements Lock {/* 仅…...

基于对抗性后训练的快速文本到音频生成:stable-audio-open-small 模型论文速读

Fast Text-to-Audio Generation with Adversarial Post-Training 论文解析 一、引言与背景 文本到音频系统的局限性&#xff1a;当前文本到音频生成系统性能虽佳&#xff0c;但推理速度慢&#xff08;需数秒至数分钟&#xff09;&#xff0c;限制了其在创意领域的应用。 研究…...

BUFDS_GTE2,IBUFDS,BUFG缓冲的区别

1、IBUFDS_GTE2 这是 Xilinx FPGA 中专门为 高速收发器&#xff08;SerDes/GTX/GTH/GTY&#xff09;参考时钟设计的差分输入缓冲器。 主要功能是将外部的差分时钟信号&#xff08;如LVDS、LVPECL等&#xff09;转换为FPGA内部的单端时钟信号&#xff0c;并保证信号的完整性和高…...

ADC深入——SNR、SFDR、ENOB等概念

目录 SNR&#xff08;Spurious‑Free Dynamic Range 信噪比&#xff09; ENOB&#xff08;Effective Number Of Bits 有效位&#xff09; SFDR&#xff08;Spurious‑Free Dynamic Range&#xff09; 感觉SNR和SFDR差不多&#xff1f;看看下图 输入带宽 混叠 带通采样/欠…...

ThinkPad X250电池换电池芯(理论技术储备)

参考&#xff1a;笔记本电池换电芯的经验与心得分享 - 经典ThinkPad专区 - 专门网 换电池芯&#xff0c;需要克服以下问题&#xff1a; 1 拆电池。由于是超声波焊接&#xff0c;拆解比较费力&#xff0c;如果暴力撬&#xff0c;有可能导致电池壳变形... 2 替换电池芯的时候如…...

硬件厂商的MIB文档详解 | 如何查询OID? | MIB Browser实战指南-优雅草卓伊凡

硬件厂商的MIB文档详解 | 如何查询OID? | MIB Browser实战指南-优雅草卓伊凡 一、硬件厂商的MIB文档是什么&#xff1f; 1. MIB的本质&#xff1a;设备的”数据字典” MIB&#xff08;Management Information Base&#xff09; 是SNMP协议的核心数据库&#xff0c;定义了设备…...

阿里开源通义万相 Wan2.1-VACE,开启视频创作新时代

0.前言 阿里巴巴于2025年5月14日正式开源了其最新的AI视频生成与编辑模型——通义万相Wan2.1-VACE。这一模型是业界功能最全面的视频生成与编辑工具&#xff0c;能够同时支持多种视频生成和编辑任务&#xff0c;包括文生视频、图像参考视频生成、视频重绘、局部编辑、背景延展…...

小学数学题批量生成及检查工具

软件介绍 今天给大家介绍一款近期发现的小工具&#xff0c;它非常实用。 软件特点与出题功能 这款软件体积小巧&#xff0c;不足两兆&#xff0c;具备强大的功能&#xff0c;能够轻松实现批量出题。使用时&#xff0c;只需打开软件&#xff0c;输入最大数和最小数&#xff0c…...

5.13/14 linux安装centos及一些操作命令随记

一、环境准备 VMware Workstation版本选择建议 CentOS 7 ISO镜像下载指引 虚拟机硬件配置建议&#xff08;内存/处理器/磁盘空间&#xff09; 二、系统基础命令 一、环境准备 1.VMware Workstation版本选择建议 版本选择依据 选择VMware Workstation的版本时&#xff0c…...

OpenCV 背景建模详解:从原理到实战

在计算机视觉领域&#xff0c;背景建模是一项基础且重要的技术&#xff0c;它能够从视频流中分离出前景目标&#xff0c;广泛应用于运动目标检测、视频监控、人机交互等场景。OpenCV 作为计算机视觉领域最受欢迎的开源库之一&#xff0c;提供了多种高效的背景建模算法。本文将深…...

Transformer 模型与注意力机制

目录 Transformer 模型与注意力机制 一、Transformer 模型的诞生背景 二、Transformer 模型的核心架构 &#xff08;一&#xff09;编码器&#xff08;Encoder&#xff09; &#xff08;二&#xff09;解码器&#xff08;Decoder&#xff09; 三、注意力机制的深入剖析 …...

卡顿检测与 Choreographer 原理

一、卡顿检测的原理 卡顿的本质是主线程&#xff08;UI 线程&#xff09;未能及时完成某帧的渲染任务&#xff08;超过 16.6ms&#xff0c;以 60Hz 屏幕为例&#xff09;&#xff0c;导致丢帧&#xff08;Frame Drop&#xff09;。检测卡顿的核心思路是监控主线程任务的执行时…...

Baklib加速企业AI数据智理转型

Baklib智理AI数据资产 在AI技术深度渗透业务场景的背景下&#xff0c;Baklib通过构建企业级知识中台架构&#xff0c;重塑了数据资产的治理范式。该平台采用智能分类引擎与语义分析模型&#xff0c;将分散在邮件、文档、数据库中的非结构化数据转化为标准化的知识单元&#xf…...

基于协同过滤的文学推荐系统设计【源码+文档+部署】

基于协同过滤的文学推荐系统设计 摘要 随着信息技术的飞速发展和文学阅读需求的日益多样化&#xff0c;构建一个高效、精准的文学推荐系统变得尤为重要。本文采用Spring Boot框架&#xff0c;结合协同过滤算法&#xff0c;设计并实现了一个基于用户借阅行为和社交论坛互动的文学…...

在c/c++中,如何使用链表进行插入、删除和遍历功能。

首先&#xff0c;链表由节点组成&#xff0c;每个节点应该包含数据和指向下一个节点的指针。 结构体可以包含数据域和指针域。 比如&#xff0c;假设链表存储整数&#xff0c;那节点的结构体应该有一个int类型的数据和一个指向同样结构体的指针。结构体定义大概是这样的&…...

数据结构与算法——单链表(续)

单链表&#xff08;续&#xff09; 查找在指定位置之前插入结点在指定位置之后插入结点删除pos位置的结点删除pos位置之后的结点销毁 查找 遍历&#xff1a;pcur指向头结点&#xff0c;循环&#xff0c;当pucr不为空进入循环&#xff0c;pucr里面指向的数据为要查找的值的时候…...

全面且深度学习c++类和对象(上)

文章目录 过程和对象类的引入&#xff0c;类的定义类的访问限定符及封装类的访问限定符封装 类的实例化类大小内存对齐规则&#xff1a; this指针this特性 过程和对象 C语言面向过程设计&#xff0c;c面向对象设计&#xff0c; 举例&#xff1a;洗衣服 C语言&#xff1a;放衣服…...

开源情报如何成为信息攻防的关键资源

相比于传统情报&#xff0c;开源情报具有情报数量大、情报质量好、情报成本低、情报可用性强等优势。这是开源情报能够成为信息攻防关键资源的主要原因。 海量信息让开源情报具有更大潜力。一是开源情报体量巨大。信息化时代是信息爆炸的时代&#xff0c;网络上发布的各种信息…...

【风控】用户特征画像体系

一、体系架构概述 1.1 核心价值定位 风控特征画像体系是通过多维度数据融合分析&#xff0c;构建客户风险全景视图的智能化工具。其核心价值体现在&#xff1a; 全周期覆盖&#xff1a;贯穿客户生命周期的营销、贷前、贷中、贷后四大场景立体化刻画&#xff1a;整合基础数据…...

Android开发-文本输入

在Android应用开发中&#xff0c;文本输入是用户与应用交互的最常见方式之一。无论是登录界面、搜索框还是表单填写&#xff0c;都需要处理用户的文本输入。本文将介绍如何在Android应用中实现和管理文本输入&#xff0c;包括基本控件的使用、事件监听、输入验证以及一些高级功…...

Unity:场景管理系统 —— SceneManagement 模块

目录 &#x1f3ac; 什么是 Scene&#xff08;场景&#xff09;&#xff1f; Unity 项目中的 Scene 通常负责什么&#xff1f; &#x1f30d; 一个 Scene 包含哪些元素&#xff1f; Scene 的切换与管理 &#x1f4c1; 如何创建与管理 Scenes&#xff1f; 什么是Scene Man…...

elementUI源码学习

学习笔记。 最近在看element的table表格优化&#xff0c;又去看了一下element源码框架。element 的架构是很优秀&#xff0c;通过大量的脚本实现工程化&#xff0c;让组件库的开发者专注于事情本身&#xff0c;比如新加组件&#xff0c;一键生成组件所有文件&#xff0c;并完成…...