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

深度学习中常见激活函数总结

以下是一份深度学习激活函数的系统总结,涵盖定义、类型、作用、应用及选择影响,便于你快速掌握核心知识:


一、激活函数的定义

在神经网络中,激活函数(Activation Function)是神经元计算输出的非线性变换函数,作用于加权输入和偏置之和:
输出 = f(加权和 + 偏置)
核心价值:引入非线性,使神经网络能够拟合任意复杂函数(无激活函数的深度网络等价于单层线性模型)。


二、常见激活函数类型

1. 线性函数(Linear)
  • 公式:f(x) = kx
  • 缺点:多层网络退化为单层,无法学习非线性模式(极少使用)。
2. Sigmoid(S型函数)
  • 公式:f(x) = 1 / (1 + e⁻ˣ)
  • 输出范围:(0, 1)
  • 问题
    • 梯度消失:输入较大时梯度接近0,反向传播困难;
    • 非零中心:影响梯度下降效率。
3. Tanh(双曲正切)
  • 公式:f(x) = (eˣ - e⁻ˣ) / (eˣ + e⁻ˣ)
  • 输出范围:(-1, 1)
  • 优点:零中心化,梯度比Sigmoid更强;
  • 缺点:梯度消失问题仍存在。
4. ReLU(Rectified Linear Unit)
  • 公式:f(x) = max(0, x)
  • 优点
    • 计算高效,加速收敛;
    • 缓解梯度消失(正区间梯度为1)。
  • 缺点
    • 死亡ReLU:负输入梯度为0,神经元永久失效;
    • 输出非零中心。
5. 改进型ReLU
变体公式解决的核心问题
Leaky ReLUf(x) = max(αx, x) (α≈0.01)缓解死亡ReLU问题
Parametric ReLU (PReLU)f(x) = max(αx, x) (α可学习)自适应学习负斜率
ELUx if x>0; α(eˣ-1) if x≤0输出接近零中心,缓解梯度消失
6. Softmax
  • 公式:f(x_i) = eˣⁱ / Σⱼeˣʲ
  • 用途:多分类输出层,将输出转化为概率分布。
7. Swish & GELU(前沿函数)
  • Swishf(x) = x · sigmoid(βx) (Google提出,平滑优于ReLU)
  • GELUf(x) = x · Φ(x) (Φ为标准正态CDF,Transformer常用)

三、激活函数的核心作用

  1. 引入非线性:使网络能够拟合复杂函数(如图像分割、语言模型)。
  2. 控制输出范围:如Sigmoid压缩至(0,1),适合概率输出。
  3. 增强梯度传播:ReLU族在正区间保持梯度为1,缓解深层网络梯度消失。
  4. 稀疏激活:ReLU使部分神经元输出为0,提升模型泛化性。

四、典型应用场景

任务类型常用激活函数实例说明
二分类输出层Sigmoid情感分析(输出正面/负面概率)
多分类输出层SoftmaxMNIST手写数字识别(10类概率)
隐藏层ReLU / Leaky ReLU / GELUResNet、BERT的隐藏层
循环神经网络Tanh / ReLULSTM中的门控机制
生成对抗网络Leaky ReLU(生成器/判别器)DCGAN中避免梯度稀疏问题

五、激活函数选择对模型性能的影响

选择因素影响
训练速度ReLU > Tanh > Sigmoid(ReLU计算快且梯度稳定)
梯度消失ReLU族在正区间无梯度消失;Sigmoid/Tanh在饱和区严重
死亡神经元ReLU可能导致部分神经元失效;Leaky ReLU/ELU可缓解
输出范围需求概率输出需Sigmoid/Softmax;回归任务输出层可线性
模型前沿性Transformer推荐GELU;轻量模型可选Swish

实验建议

  • 隐藏层默认选择ReLU(尤其CNN/全连接网络);
  • RNN中可尝试Tanh或Leaky ReLU;
  • 若遇死亡神经元问题,切换为Leaky ReLU/ELU;
  • 输出层按任务需求选择(分类用Softmax,回归可不用激活函数)。

六、总结

  • 历史演变:Sigmoid/Tanh → ReLU → Leaky ReLU/ELU → GELU/Swish
  • 核心原则
    • 隐藏层:优先ReLU及其变体(平衡速度与性能);
    • 输出层:按任务选择(Softmax/Sigmoid/线性);
    • 前沿模型:尝试GELU(如BERT、GPT)、Swish(MobileNet)。

通过理解激活函数的特性及场景适配性,可显著提升模型性能和训练效率。

http://www.lryc.cn/news/578378.html

相关文章:

  • k8s pod调度基础
  • spring-ai-alibaba 1.0.0.2 学习(五)——集成外部工具
  • 使用tensorflow的线性回归的例子(三)
  • 【C#】如果有一个数值如 168.0000100,如何去除末尾的无效零,只显示有效的小数位数,让DeepSeek给我们解答
  • C++11中 <cinttypes>的入门与精通
  • CppCon 2018 学习:A New Take on Polymorphism
  • Redis——常用指令汇总指南(一)
  • Electron 沙箱模式深度解析:构建更安全的桌面应用
  • 笨方法学python-习题12
  • jQuery 安装使用教程
  • 【算法】动态规划 斐波那契类型: 740. 删除并获得点数
  • 设计模式之上下文对象设计模式
  • IntelliJ IDEA 2025- 下载安装教程图文版详细教程(附激活码)
  • 使用nlohmann/json.hpp实现json文件读写
  • SpringBoot全局异常详解
  • 【实时Linux实战系列】实时数据库与数据存储方案
  • 学习threejs,使用自定义GLSL 着色器,生成艺术作品
  • 使用Rust原生实现小波卡尔曼滤波算法
  • 408第三季part1 - 操作系统 - 基本分页
  • 算法赋能管理:工厂安全与效率双突破
  • 【仿muduo库实现并发服务器】Channel模块
  • 回转体航行器控制系统中深度控制与俯仰姿态控制的解耦策略
  • 基于springboot的养老院管理系统
  • C# Linq to XML 详解:强大的XML处理工具
  • (自用)Java学习-5.21(支付宝沙箱支付、Vue总结)
  • 插入排序解析
  • sqlmap学习笔记ing(1.Easy_SQLi(时间,表单注入))
  • Django打造智能Web机器人控制平台
  • HarmonyOS应用开发高级认证知识点梳理 (一) 布局与样式
  • 记本好书:矩阵力量:线性代数全彩图解+微课+Python编程