随着自动驾驶技术的飞速发展,深度学习在其中扮演着至关重要的角色。而激活函数作为神经网络中的关键组件,直接影响着模型的性能和效果。前面几篇博客 自动驾驶背后的数学:特征提取中的线性变换与非线性激活 , 「自动驾驶背后的数学:从传感器数据到控制指令的函数嵌套」—— 揭秘人工智能中的线性函数、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>0x≤0
特点:
- 优点:计算高效,缓解梯度消失
- 缺点:存在"神经元死亡"问题
- 自动驾驶应用:
- 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+e−x1
导数:
f ′ ( x ) = f ( x ) ( 1 − f ( x ) ) f'(x) = f(x)(1 - f(x)) f′(x)=f(x)(