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

news2025/7/11 10:11:44

文章目录

  • 激活函数的意义
  • 常见激活函数及其特点
    • 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()

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

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

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

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

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

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

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

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;限制了其在创意领域的应用。 研究…

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;看看下图 输入带宽 混叠 带通采样/欠…

硬件厂商的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…

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

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

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

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

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

单链表&#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;整合基础数据…

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

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

SZU 编译原理

总结自 深圳大学《编译原理》课程所学相关知识。 文章目录 文法语法分析自顶向下的语法分析递归下降分析LL(1) 预测分析法FIRST 集合FOLLOW 集合 文法 乔姆斯基形式语言理论&#xff1a; 表达能力&#xff1a;0型文法 > 1型文法 > 2型文法 > 3型文法。 0 型文法&am…