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

深度学习:深入理解 Softmax 激活函数

💡 Softmax 是多分类问题的核心组件 —— 它将神经网络的原始输出转化为概率分布,让模型“学会”判断属于哪个类别。


✅ 一、为什么要用 Softmax?

1. 二分类 vs 多分类

  • 二分类(如猫/非猫)→ 使用 sigmoid
  • 多分类(如猫/狗/鸡/其它)→ 使用 softmax

🔍 示例:识别图片中是否有猫、狗或小鸡。

  • 可以用一个神经元表示“有猫”;
  • 但无法同时判断多个类别是否出现;
  • Softmax 允许我们一次输出多个类别的概率

✅ 二、Softmax 的数学原理

假设输出层的线性输出为向量 $ z = [z_1, z_2, ..., z_C] $,其中$ C $是类别数。

Step 1: 计算指数变换(t)

$ t_i = e^{z_i} $

Step 2: 归一化得到概率(a)

$ a_i = \frac{e^{z_i}}{\sum_{j=1}^C e^{z_j}} $

即:$ \mathbf{a} = \frac{\exp(\mathbf{z})}{\sum \exp(\mathbf{z})} $

✅ 特性:

  • 所有$ a_i \in (0,1) $
  • $ \sum a_i = 1 $
  • 输出是一个概率分布

✅ 三、Python 实现 Softmax

import numpy as npdef softmax(z):# 数值稳定性处理:减去最大值防止溢出z_stable = z - np.max(z)exp_z = np.exp(z_stable)return exp_z / np.sum(exp_z)# 示例
z = np.array([5, 2, -1, 3])
a = softmax(z)
print("z =", z)
print("a =", a)

输出:

z = [ 5  2 -1  3]
a = [0.842 0.042 0.002 0.114]

✅ 解读:第一个类别概率最高(84.2%),对应“小鸡”。


✅ 四、Softmax 的直观理解

🎯 为什么叫 “Softmax”?

  • soft:不像 hardmax 那样硬性选择最大值;
  • max:倾向于选择最大的那个元素。

⚠️ 对比:

方法输出
Hardmax[1, 0, 0, 0](只保留最大值)
Softmax[0.84, 0.04, 0.002, 0.11](每个都有概率)

✅ Softmax 更“柔和”,允许模型表达不确定性。


✅ 五、损失函数:交叉熵(Cross-Entropy)

Softmax 通常搭配 交叉熵损失函数 使用:

$ L(y, y') = -\sum_{i=1}^C y_i \log(y'_i) $

其中:

  • $ y $:真实标签(one-hot 编码);
  • $ y' $:预测概率(Softmax 输出);

🧪 示例:

y_true = np.array([0, 1, 0, 0])  # 真实是第二类
y_pred = np.array([0.842, 0.042, 0.002, 0.114])
loss = -np.sum(y_true * np.log(y_pred + 1e-8))  # 加 epsilon 防止 log(0)
print("Loss =", loss)

✅ 目标:最小化这个损失 → 让预测概率接近真实标签。


✅ 六、Softmax vs 多个 Logistic 回归

场景推荐方法原因
类别互斥(如猫/狗/鸡)✅ Softmax概率总和为 1,更合理
类别不互斥(如音乐类型:古典+流行)✅ 多个 Logistic每个类别独立判断

💡 规则

  • 如果类别之间是“非此即彼”,用 Softmax;
  • 如果可以同时属于多个类别,用多个独立的 Logistic 分类器。

✅ 七、可视化:Softmax 决策边界

当输入只有两个特征时,Softmax 的决策边界是非线性的,可以划分复杂的区域。

例如,对于 $ C=3 $ 的情况,Softmax 会生成三个类别的概率,并自动形成三角形分割空间。

🖼️ 图像说明(来自原文):

  • 左图:C=3,边界较简单;
  • 中图:C=4,边界复杂;
  • 右图:C=5,进一步细化。

这说明 Softmax 能够捕捉数据之间的复杂关系。


✅ 八、实际应用建议

应用场景推荐方案
图像分类(猫/狗/鸡)Softmax
音乐风格识别(古风/摇滚/电子)Softmax(若互斥)
标签多选(人声+伴奏)多个 Logistic
文本情感分析(正面/负面/中性)Softmax

✅ 小贴士:

  • 在 PyTorch/TensorFlow 中,nn.CrossEntropyLoss() 自动包含 Softmax;
  • 不要手动加 Softmax 后再用 nn.LogSoftmaxnn.NLLLoss(),容易重复计算。

✅ 九、总结

Softmax 是多分类任务的灵魂

特性说明
输出概率分布(所有元素和为 1)
优势可解释性强,适合互斥类别
搭配交叉熵损失函数
注意类别必须互斥才能使用
http://www.dtcms.com/a/615172.html

相关文章:

  • 【持续更新】2025华为OD机试2025双机位A卷机考真题库清单含考点说明(Java/Python/JS/C++/Go)
  • 珠海做网站设计WordPress完全删除
  • 手表网站登录页背景图建设网站推广广告图
  • 小区百货店网怎么做网站开封公司网站如何制作
  • 保研贴 | 2025年(22级)四非计算机大类专业保研历程记录
  • java基础-14 : stream流
  • 巨鹿网站建设公司怎样做网络推广挣钱
  • 网站开发管理方案合肥网站建设合肥做网站
  • Linux宝塔面板安装脚本(正式版:11.2.0)
  • 设计师网站推荐免费的自助建站
  • C Primer Plus 13.10 复习题
  • 营销网站建设网站设计sem竞价
  • 58同城网站官网网站首页设置伪静态
  • 基于springboot框架的网上商城系统的设计与实现
  • 免费做网站方法北京木马工业设计
  • 前端JS深拷贝实现,解决对象引用问题
  • C语言程序编译软件 | 帮助你快速编写和调试C语言程序的工具
  • 搜索网站开发背景做百度移动网站点
  • 网站的关键词怎么设置电子商务市场营销
  • C++进阶:coroutine 协程
  • 网站开发学什么数据库上海seo课程
  • 网站销售的优势crm客户关系管理系统源码
  • Blender:法线图黑白图
  • 做网站要不要钱济南网站优化公司哪家好
  • 编译动态库时只需要知道函数的声明,与可执行文件不同
  • 【OpenGL】CMake报错解决:Error in configuration process,project files may be invalid.
  • AI有利也有坏
  • 网站 备案规定付费推广
  • 慈溪网站开发厦门最新通告
  • GAMES101-现代计算机图形学入门(六)——Cameras、Lenses、Light Fields、Color and Perception