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

神经网络中常用的激活函数(公式 + 函数图像)

        激活函数是人工神经网络中的一个关键组件,负责引入非线性,从而使神经网络能够学习和表示复杂的非线性关系。没有激活函数,神经网络中的所有计算都是线性变换,而线性模型的表达能力有限,无法处理复杂的任务。

激活函数的作用

  • 引入非线性:通过将线性输入映射到非线性输出,使神经网络具备表示复杂函数的能力。

  • 控制输出范围:激活函数常将输出限制在某个范围内,如 [0,1] ,有助于稳定训练过程。

  • 提供梯度信息:激活函数对输入的导数用于反向传播,通过调整参数来优化网络性能。

常见激活函数

(一)ReLU(Rectified Linear Unit)

公式:

 f(x) = \max(0, x)

 

特点:

  • 输出范围:[0,+∞)

  • 优点:计算简单,高效;缓解了梯度消失问题。

  • 缺点:可能导致“神经元死亡”(Dead Neurons)问题,尤其是输入为负时。即当权重更新导致某些神经元输出恒为0时,这些神经元可能永远不被激活。

(二)Sigmoid

公式:

f(x) = \frac{1}{1 + e^{-x}}

特点:

  • 输出范围:(0,1)

  • 非线性且平滑,对输入做“压缩”,将其映射到 (0,1)区间

特点:

  • 输出范围:(0,1)(0, 1)(0,1)

  • 常用于二分类问题的输出层。

  • 优点:平滑,可解释为概率。

  • 缺点:梯度在接近 0 和 1 时趋近于 0(梯度消失问题)。

(三)Tanh(Hyperbolic Tangent)

公式

f(x) = \tanh(x) = \frac{e^x - e^{-x}}{e^x + e^{-x}}

 

特点:

  • 输出范围:(−1,1)(-1, 1)(−1,1)。

  • 优点:输出均值接近 0,适合深层网络的梯度传播。

  • 缺点:和 Sigmoid 一样,容易出现梯度消失问题。

(四)LReLU(Leaky ReLU)

公式:

f(x) = \begin{cases} x & \text{if } x > 0 \\ \alpha x & \text{if } x \leq 0 \end{cases}

特点:

  • 输出范围:[ -∞, +∞ )。
  • 优点:解决了 ReLU 的“神经元死亡”问题。
  • 缺点:引入了一个额外的超参数 α ,默认为 0.1。

(五)PReLU(Parametric ReLU)

公式:

f(x) = \begin{cases} x & \text{if } x > 0 \\ \alpha x & \text{if } x \leq 0 \end{cases}

特点:

  • 是 Leaky ReLU 的扩展版本, 斜率 α 是可学习的参数

  • 提高模型的灵活性和表现力。

(六)ELU(Exponential Linear Unit)

公式

f(x) = \begin{cases} x & \text{if } x > 0 \\ \alpha (e^x - 1) & \text{if } x \leq 0 \end{cases}

(α>0,  通常为 1)

特点:

  • 输出范围:(−α,+∞)。

  • 优点:缓解梯度消失问题;负输出使均值更接近 0。

(七)Softmax

公式

f_i(x) = \frac{e^{x_i}}{\sum_{j=1}^n e^{x_j}}

特点:

  • 用于多分类问题的输出层。

  • 将输出归一化为概率分布

(八)Swish

公式

f(x) = x \cdot \sigma(x) = x \cdot \frac{1}{1 + e^{-x}}

特点:

  • 输出范围:(−∞,+∞)。

  • 优点:平滑,可微;在某些任务中表现优于 ReLU。

  • 缺点:计算稍复杂。

(九)GELU(Gaussian Error Linear Unit)

公式

f(x)=x\cdot \Phi (x)

Φ(x) 为标准正态分布的累积分布函数

特点:

  • Swish 的一种改进。

  • 常用于自然语言处理中的 Transformer 模型。

常用激活函数总结

隐藏层:常用 ReLU 或其变体(Leaky ReLU、PReLU、ELU)。

  • 简单网络:可以尝试 ReLU 或 Leaky ReLU。

  • 深度网络:推荐 Swish、GELU 或 ELU。

输出层

  • 二分类问题:Sigmoid。

  • 多分类问题:Softmax。

  • 回归问题:线性激活函数(或不使用激活函数)。

#  若文章对大噶有帮助的话,点个赞支持一下叭!


http://www.kler.cn/a/402654.html

相关文章:

  • 海信Java后端开发面试题及参考答案
  • 云计算-华为HCIA-学习笔记
  • fastapi入门
  • RabbitMQ 之 死信队列
  • C++初阶(十五)--STL--list 的深度解析与全面应用
  • 视觉经典神经网络与复现:深入解析与实践指南
  • 【汇编语言】转移指令的原理(三) —— 汇编跳转指南:jcxz、loop与位移的深度解读
  • 【系统架构设计师】真题论文: 论企业架构管理与应用(包括解题思路和素材)
  • Spring Boot教程之三:Spring Boot 与 Spring MVC 及 Spring的区别
  • 【TTS】OuteTTS初体验
  • 企业微信中设置回调接口url以及验证 spring boot项目实现
  • 二叉树的练习题(下)
  • Python-简单病毒程序合集(一)
  • 《 C++ 点滴漫谈 一 》C++ 传奇:起源、演化与发展
  • 【大数据学习 | Spark】详解分区个数
  • Three.js 相机控制器Controls
  • Akts初识1.0
  • PuppyGraph:实时图查询引擎,无需ETL
  • 基于Java Springboot城市公交运营管理系统
  • 关于上架HarmonyOS元服务,ArkWeb问题
  • 题解 洛谷 Luogu P2440 木材加工 二分答案 C/C++
  • 有效的完全平方数
  • webgl threejs 云渲染(服务器渲染、后端渲染)解决方案
  • 达梦数据库工程师认证培训体系是怎么样的?
  • 【linux学习指南】VSCode部署Ubantu云服务器,与Xshell进行本地通信文件编写
  • maven仓库