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

神经网络之激活函数

激活函数是神经网络中至关重要的组成部分,它决定了神经元是否应该被“激活”(即输出什么信息)。简单来说,激活函数的作用是给神经网络引入非线性,让网络能够学习和表示复杂的模式。

1. 为什么需要激活函数?

如果没有激活函数,神经网络中的每一层都只是对输入进行线性变换(加权求和)。无论堆叠多少层,整个网络仍然等价于一个线性模型(因为线性函数的复合仍然是线性函数)。这样的模型只能解决线性可分的问题,比如简单的二分类(用一条直线分开两类点),而无法处理更复杂的任务,比如图像识别、语音识别等,这些任务中数据往往是非线性的。

激活函数通过引入非线性,使得神经网络可以逼近任意复杂的函数(根据通用近似定理),从而能够学习数据中的复杂关系。

2. 激活函数的作用

  • 引入非线性:让网络可以学习曲线、边界等复杂模式。
  • 决定神经元输出:对线性组合后的结果进行“加工”,输出一个值给下一层。
  • 控制信息流:某些激活函数(如 Sigmoid)的输出范围有限,可以起到门控作用。

3. 常见的激活函数

激活函数 公式 输出范围 特点 适用场景
Sigmoid ( \sigma(x) = \frac{1}{1+e^{-x}} ) (0, 1) 平滑,可解释为概率,但存在梯度饱和问题(两端导数接近0),容易导致梯度消失 二分类输出层(配合交叉熵损失)
Tanh ( \tanh(x) = \frac{e^x - e{-x}}{ex + e^{-x}} ) (-1, 1) 零中心,梯度比 Sigmoid 稍好,但仍有饱和问题 循环神经网络(RNN)或某些隐藏层
ReLU ( \text{ReLU}(x) = \max(0, x) ) [0, +∞) 计算简单,缓解梯度消失,但可能导致神经元死亡(输出恒为0) 最常用,隐藏层首选
Leaky ReLU ( \max(0.01x, x) ) (-∞, +∞) 改进 ReLU,负半轴有微小斜率,避免神经元死亡 解决 ReLU 死亡问题
Softmax ( \frac{e^{x_i}}{\sum_j e^{x_j}} ) (0,1),和为1 将多个输出转换为概率分布 多分类输出层

4. 在 PyTorch 中的使用

PyTorch 提供了丰富的激活函数,都在 torch.nn 模块中。

作为函数使用(不保留参数):

import torch
import torch.nn.functional as Fx = torch.randn(3)
y = torch.sigmoid(x)          # Sigmoid
y = torch.tanh(x)              # Tanh
y = F.relu(x)                   # ReLU

作为网络层使用(便于构建模型):

import torch.nn as nnmodel = nn.Sequential(nn.Linear(10, 20),nn.ReLU(),           # 隐藏层用 ReLUnn.Linear(20, 2),nn.Softmax(dim=1)    # 多分类输出层用 Softmax
)

5. 激活函数的选择建议

  • 隐藏层:优先使用 ReLU,简单高效。如果出现神经元死亡(很多输出恒为0),可尝试 Leaky ReLU 或 ELU。
  • 输出层
    • 二分类:Sigmoid(输出一个概率)
    • 多分类:Softmax(输出多个类别的概率分布)
    • 回归问题:不用激活函数(直接输出线性值)
  • 循环神经网络:常用 Tanh 或 ReLU(需谨慎处理梯度)。
http://www.jsqmd.com/news/421893/

相关文章:

  • 题解:洛谷 B2033 A*B 问题
  • 题解:洛谷 B2031 计算三角形面积
  • WC2026XKLJIU5IGGNOI;hgggggggggg904yyyyyyyyyyyyyyyyyvo RIHFEacsmPo=
  • 高效盘活闲置资源,大量小额天猫超市卡回收渠道全解析 - 京顺回收
  • OpenClaw:零门槛AI自动化神器
  • 月薪 3800 辅警小奇:一年内恋爱结婚,如今即将迎来双胞胎宝宝
  • NR 下行功率分配
  • C++游戏开发之旅 19
  • 相控超声波换能器:原理、应用与完整项目案例详解
  • Linux驱动编译(Out-Of-Tree 交叉编译)
  • 【开题答辩全过程】以 华远企业的员工行为及属性的数据分析与可视化为例,包含答辩的问题和答案
  • 最小二乘问题详解11:基于李代数的PnP优化
  • EB(EdgeBus)如何低成本实现传感器到 LoRaWAN 的智能对接?
  • 题解:洛谷 B2030 计算线段长度
  • 日语视频 SRT 字幕生成软件下载:日语视频本地自动翻译SRT字幕生成、日语视频自动翻译 Faster Whisper v1.7 下载与使用教程(含AMD显卡支持)
  • 【开题答辩全过程】以 航班管理系统的设计与实现为例,包含答辩的问题和答案
  • 黑马点评
  • D005 求子树大小的四种方法 树形结构 递归 栈模拟递归 CSES 1674
  • AI赋能安全 | 悬镜安全荣登《ISC.AI 2025创新性案例报告》
  • vscode下nodejs开发准备
  • Unity3d笔记
  • 美甲美发“效果预览数字模板”,减少沟通误差。
  • 题解:洛谷 B2027 计算球的体积
  • 农村创业者,农产品数字艺术包装,提升档次。
  • FastAPI 学习教程 · 第8部分
  • AI模型——Ming-Lite-Omni-1.5多模态全能助手[特殊字符]
  • FastAPI 学习教程 · 第7部分
  • AI vs Human图像分类模型 [特殊字符][特殊字符]‍[特殊字符] 60K数据训练
  • 题解:洛谷 B2028 反向输出一个三位数
  • OpenClaw 架构设计全解析