自动驾驶背后的数学:ReLU,Sigmoid, Leaky ReLU, PReLU,Swish等激活函数解析

随着自动驾驶技术的飞速发展,深度学习在其中扮演着至关重要的角色。而激活函数作为神经网络中的关键组件,直接影响着模型的性能和效果。前面几篇博客 自动驾驶背后的数学:特征提取中的线性变换与非线性激活 , 「自动驾驶背后的数学:从传感器数据到控制指令的函数嵌套」—— 揭秘人工智能中的线性函数、ReLU 与复合函数中, 非线性激活函数举例只讲到了ReLU 函数。本文将深入探讨自动驾驶中常见的激活函数,包括 ReLU、Sigmoid、Leaky ReLU、PReLU 和 Swish,解析它们的数学原理、应用场景及 PyTorch 实现代码。

一、基础激活函数解析

1. ReLU (Rectified Linear Unit)

数学表达式
f ( x ) = max ⁡ ( 0 , x ) f(x) = \max(0, x) f(x)=max(0,x)
导数
f ′ ( x ) = { 1 x > 0 0 x ≤ 0 f'(x) = \begin{cases} 1 & x>0 \\ 0 & x\leq0 \end{cases} f(x)={10x>0x0

特点

  • 优点:计算高效,缓解梯度消失
  • 缺点:存在"神经元死亡"问题
  • 自动驾驶应用
    • YOLOv5的目标检测特征提取
    • 激光雷达点云处理
# PyTorch实现
import torch.nn as nn
relu = nn.ReLU(inplace=True)

2. Sigmoid

数学表达式
f ( x ) = 1 1 + e − x f(x) = \frac{1}{1 + e^{-x}} f(x)=1+ex1
导数
f ′ ( x ) = f ( x ) ( 1 − f ( x ) ) f'(x) = f(x)(1 - f(x)) f(x)=f(x)(1f(x))

特点

  • 优点:输出平滑(0,1)
  • 缺点:梯度消失严重
  • 应用场景
    • 车道线存在概率预测
    • 刹车概率估计
# 二分类输出层
sigmoid = nn.Sigmoid()

3. Leaky ReLU

数学表达式
f ( x ) = { x x > 0 α x x ≤ 0 ( α = 0.01 ) f(x) = \begin{cases} x & x>0 \\ \alpha x & x\leq0 \end{cases} \quad (\alpha=0.01) f(x)={xαxx>0x0(α=0.01)

特点

  • 改进:解决神经元死亡问题
  • 应用场景
    • 毫米波雷达噪声数据处理;长距离毫米波雷达数据处理
    • 夜间低光照图像处理
# 带参数初始化
leaky_relu = nn.LeakyReLU(negative_slope=0.01)

二、进阶激活函数

4. PReLU (Parametric ReLU)

数学表达式
f ( x ) = { x x > 0 α x x ≤ 0 ( α 可学习 ) f(x) = \begin{cases} x & x>0 \\ \alpha x & x\leq0 \end{cases} \quad (\alpha\text{可学习}) f(x)={xαxx>0x0(α可学习)

特点

  • 优势:自适应调整负区间斜率
  • 应用案例
    • 多传感器融合网络
    • 雨雾天气特征补偿
# 可学习参数初始化
prelu = nn.PReLU(num_parameters=1, init=0.25)

5. Swish

数学表达式
f ( x ) = x ⋅ σ ( β x ) ( β 可调节 ) f(x) = x \cdot \sigma(\beta x) \quad (\beta\text{可调节}) f(x)=xσ(βx)(β可调节)

特点

  • 优势:平滑过渡,自门控机制;平衡线性与非线性特征
  • 实测数据(Tesla BEV网络):
    • 比ReLU提升1.2% mAP
    • 推理时间增加15%
# 自定义实现
class Swish(nn.Module):def __init__(self, beta=1.0):super().__init__()self.beta = nn.Parameter(torch.tensor(beta))def forward(self, x):return x * torch.sigmoid(self.beta * x)

三、函数对比分析

特性ReLULeaky ReLUPReLUSigmoidSwish
计算复杂度O(n)O(n)O(n)O(n)O(2n)
梯度消失缓解缓解缓解严重缓解
输出范围[0, ∞)(-∞, ∞)(-∞, ∞)(0,1)(-∞, ∞)
可学习参数可选
典型延迟(RTX 3090)1.2ms1.3ms1.5ms1.8ms2.1ms

四、应用场景决策树

需要
不需要
需要概率输出?
Sigmoid/Tanh
实时性要求?
ReLU/Leaky ReLU
Swish
GELU/Mish
处理负值?
Leaky ReLU
ReLU
需要自适应性?
参数化Swish
固定β=1.0

五、多函数性能测试代码

import torch
from torch import nn
import time# 测试配置
input_size = 1000000
x = torch.randn(input_size).cuda()# 函数集合
activations = {"ReLU": nn.ReLU(),"LeakyReLU": nn.LeakyReLU(0.01),"Swish": Swish(),"GELU": nn.GELU()
}# 基准测试
for name, func in activations.items():torch.cuda.synchronize()start = time.time()_ = func(x)torch.cuda.synchronize()print(f"{name}: {1000*(time.time()-start):.2f} ms")

典型输出(RTX 3090):

ReLU: 1.23 ms
LeakyReLU: 1.31 ms
Swish: 2.15 ms
GELU: 3.02 ms

六、工程选型建议

  1. 实时感知层(>30FPS):

    # 激光雷达特征提取
    self.act = nn.LeakyReLU(0.1)  # 兼顾效率与负值保留
    
  2. 决策规划层

    # 路径概率预测
    self.act = nn.Sequential(nn.Linear(256, 128),nn.SiLU(),  # Swish-1.0的官方实现nn.Dropout(0.3)
    )
    
  3. 极端环境处理

    # 雨雾天气补偿网络
    self.act = nn.PReLU(num_parameters=64)  # 每通道独立学习
    
  4. 边缘设备部署

    # 车载ECU部署
    self.act = nn.ReLU6()  # 限制最大输出值6.0
    

通过深入理解激活函数的数学特性和工程实践中的表现差异,开发者可以针对自动驾驶的不同子系统(感知、预测、规划)选择最优激活策略,在计算效率和模型性能之间取得最佳平衡。


七、补充信息

其它激活函数

在nuScenes数据集上的实验结果:

激活函数mAP(%)推理时间(ms)功耗(W)
ReLU72.315.223.1
GELU74.117.825.3
Mish75.618.526.7

未来发展与挑战

  1. 动态权重优化:结合元学习实现场景自适应矩阵更新
  2. 神经形态计算:采用Spiking ReLU降低功耗90%+
  3. 量子矩阵运算:探索量子比特加速特征变换的可能性
  4. 可解释性研究:通过矩阵分解可视化特征决策路径

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

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

相关文章

性能测试、负载测试、压力测试的全面解析

在软件测试领域,性能测试、负载测试和压力测试是评估系统稳定性和可靠性的关键手段。​它们各自关注不同的测试目标和应用场景,理解这些差异对于制定有效的测试策略至关重要。 本文对性能测试、负载测试和压力测试进行深入分析,探讨其定义、…

责任链模式-java

1、spring依赖注入模式 @Configuration public class ChainConfig {@Beanpublic ChainSpringFactory chainSpringFactory(List<IHandler<DemoOne,Boolean>> handlerList){return new ChainSpringFactory(handlerList);}} public class DemoOne { }public abstract…

学习本地部署DeepSeek的过程(基于LM Studio)

除了使用Ollama部署DeepSeek&#xff0c;还可以使用LM Studio部署DeepSeek&#xff0c;后者是一款允许用户在本地计算机上运行大型语言模型&#xff08;LLMs&#xff09;的桌面应用程序&#xff0c;旨在简化本地模型的使用&#xff0c;无需云端连接或复杂配置即可体验 AI 功能。…

CSS 尺寸 (Dimension)

CSS 尺寸 (Dimension) 在网页设计中&#xff0c;CSS&#xff08;层叠样式表&#xff09;的尺寸属性是控制元素大小和位置的关键。本文将详细介绍CSS尺寸相关的概念、属性及其应用。 1. CSS 尺寸概述 CSS尺寸主要包括宽度和高度&#xff0c;这些属性可以应用于各种HTML元素&a…

【自学笔记】ELK基础知识点总览-持续更新

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 ELK基础知识点总览1. ELK简介2. Elasticsearch基础Elasticsearch配置示例&#xff08;elasticsearch.yml&#xff09; 3. Logstash基础Logstash配置示例&#xff08…

等差数列公式推导

前言&#xff1a; 通过实践而发现真理&#xff0c;又通过实践而证实真理和发展真理。从感性认识而能动地发展到理性认识&#xff0c;又从理性认识而能动地指导革命实践&#xff0c;改造主观世界和客观世界。实践、认识、再实践、再认识&#xff0c;这种形式&#xff0c;循环往…

【MySQL】用户账户、角色、口令、PAM

目录 查看用户账户设置 连接 1.本地连接 2.远程连接 账户 角色 操作用户账户和角色 配置口令和账户有效期限 手工使口令过期 配置口令有效期限 PAM身份验证插件 客户端连接&#xff1a;使用 PAM 账户登录 在连接到MySQL服务器并执行查询时&#xff0c;会验证你的身…

5种生成模型(VAE、GAN、AR、Flow 和 Diffusion)的对比梳理 + 易懂讲解 + 代码实现

目录 1 变分自编码器&#xff08;VAE&#xff09;​ 1.1 概念 1.2 训练损失 1.3 VAE 的实现 2 生成对抗网络&#xff08;GAN&#xff09;​ 2.1 概念 2.2 训练损失 a. 判别器的损失函数 b. 生成器的损失函数 c. 对抗训练的动态过程 2.3 GAN 的实现 3 自回归模型&am…

印刷电路板 (PCB) 的影响何时重要?在模拟环境中导航

我和我的同事们经常被问到关于 PCB 效应的相同问题&#xff0c;例如&#xff1a; 仿真何时需要 PCB 效果&#xff1f; 为什么时域仿真需要 PCB 效应&#xff1f; 当 PCB 效应必须包含在仿真中时&#xff0c;频率是否重要&#xff1f; 设计人员应该在多大程度上关注 VRM 模型中包…

2024跨境电商挑战:AI反检测技术在避免封号中的作用

2024跨境电商挑战&#xff1a;AI反检测技术在避免封号中的作用 跨境电商的浪潮席卷全球&#xff0c;为商家打开了通往世界各地的大门。然而&#xff0c;随着平台监管的加强&#xff0c;合规性问题成为商家不得不面对的挑战。在电商平台的严格监控下&#xff0c;任何违规行为都…

QML控件 - Text

在 QML 中&#xff0c;Text 组件是用于显示文本的核心元素&#xff0c;支持丰富的文本样式、布局和交互功能。以下是 完整指南 和常见用法示例&#xff1a; 1. 基础用法 import QtQuick 2.15Text {text: "Hello, QML!" // 显示文本内容font.pixelSize: 20 // 字体…

网络运维学习笔记(DeepSeek优化版) 024 HCIP-Datacom OSPF域内路由计算

文章目录 OSPF域内路由计算&#xff1a;单区域的路由计算一、OSPF单区域路由计算原理二、1类LSA详解2.1 1类LSA的作用与结构2.2 1类LSA的四种链路类型 三、OSPF路由表生成验证3.1 查看LSDB3.2 查看OSPF路由表3.3 查看全局路由表 四、2类LSA详解4.1 2类LSA的作用与生成条件4.2 2…

HTML5 SVG:图形绘制的现代标准

HTML5 SVG:图形绘制的现代标准 引言 随着互联网技术的发展,网页的交互性和美观性日益受到重视。HTML5 SVG作为一种强大的图形绘制技术,在网页设计中发挥着重要作用。本文将深入探讨HTML5 SVG的原理、应用场景以及如何在实际项目中运用。 一、HTML5 SVG简介 1.1 什么是SV…

多智能体融合(Multi-Agent Fusion)

多智能体融合&#xff08;Multi-Agent Fusion&#xff09;是指在多智能体系统&#xff08;MAS, Multi-Agent System&#xff09;中&#xff0c;多个智能体&#xff08;Agent&#xff09;通过协作、竞争或共享信息&#xff0c;实现全局最优的智能决策和任务执行。该方法广泛应用…

[学习笔记]NC工具安装及使用

工具简介 Netcat&#xff08;简称 nc&#xff09;是一款强大的命令行网络工具&#xff0c;被称作瑞士军刀&#xff0c;用来在两台机器之间建立 TCP/UDP 连接&#xff0c;并通过标准的输入输出进行数据的读写&#xff0c;大家也可以使用Nmap&#xff08;增强版nc工具&#xff0…

SvelteKit 最新中文文档教程(11)—— 部署 Netlify 和 Vercel

前言 Svelte&#xff0c;一个语法简洁、入门容易&#xff0c;面向未来的前端框架。 从 Svelte 诞生之初&#xff0c;就备受开发者的喜爱&#xff0c;根据统计&#xff0c;从 2019 年到 2024 年&#xff0c;连续 6 年一直是开发者最感兴趣的前端框架 No.1&#xff1a; Svelte …

计算机等级4级数据库工程师(笔记1)

数据依赖&#xff08;2&#xff09;&#xff1a;多值依赖 进程&#xff08;4&#xff09;&#xff1a;PCB 内存管理&#xff08;3&#xff09; 文件管理&#xff08;3&#xff09; 关系模型中数据的物理结构是一张二维表&#xff08;错&#xff09; 在用户看来&#xff0c;…

pod 不允许改哪些字段?

在 Kubernetes 中&#xff0c;Pod 是一种不可变的资源对象。这意味着一旦 Pod 被创建&#xff0c;其中的一些字段是无法修改的。如果你需要对这些不可变字段进行更改&#xff0c;通常的做法是删除旧的 Pod 并创建一个新的 Pod。 以下是一些在 Pod 中不可修改的关键字段&#x…

量子计算的黎明:从理论到现实的突破之旅

在科技发展的浩瀚星空中&#xff0c;量子计算如同一颗璀璨的新星&#xff0c;正逐渐照亮人类探索未知领域的道路。从最初的理论构想&#xff0c;到如今实验室中的初步实现&#xff0c;量子计算正经历着一场从梦想到现实的华丽蜕变。这场变革不仅挑战了我们对计算本质的理解&…

【Unity】 HTFramework框架(六十三)SerializableDictionary可序列化字典

更新日期&#xff1a;2025年3月26日。 Github 仓库&#xff1a;https://github.com/SaiTingHu/HTFramework Gitee 仓库&#xff1a;https://gitee.com/SaiTingHu/HTFramework 索引 一、SerializableDictionary可序列化字典1.使用SerializableDictionary2.实现思路 二、Serializ…