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

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


✅ 一、为什么要用 Softmax?

1. 二分类 vs 多分类

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

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

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

✅ 二、Softmax 的数学原理

假设输出层的线性输出为向量 ,其中是类别数。

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

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

即:

✅ 特性:

  • 所有
  • 输出是一个概率分布

✅ 三、Python 实现 Softmax

复制代码
import numpy as np

def 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 通常搭配 交叉熵损失函数 使用:

其中:

  • :真实标签(one-hot 编码);
  • :预测概率(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 的决策边界是非线性的,可以划分复杂的区域。

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

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

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

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


✅ 八、实际应用建议

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

✅ 小贴士:

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

✅ 九、总结

Softmax 是多分类任务的灵魂

特性 说明
输出 概率分布(所有元素和为 1)
优势 可解释性强,适合互斥类别
搭配 交叉熵损失函数
注意 类别必须互斥才能使用
相关推荐
aaaa_a13321 分钟前
李宏毅——self-attention Transformer
人工智能·深度学习·transformer
Coovally AI模型快速验证37 分钟前
MAR-YOLOv9:革新农业检测,YOLOv9的“低调”逆袭
人工智能·神经网络·yolo·计算机视觉·cnn
云和数据.ChenGuang38 分钟前
AI运维工程师技术教程之Linux环境下部署Deepseek
linux·运维·人工智能
cvyoutian41 分钟前
解决 PyTorch 大型 wheel 下载慢、超时和反复重下的问题
人工智能·pytorch·python
oliveray1 小时前
解决开放世界目标检测问题——Grounding DINO
人工智能·目标检测·计算机视觉
子非鱼9211 小时前
3 传统序列模型——RNN
人工智能·rnn·深度学习
万俟淋曦1 小时前
【论文速递】2025年第33周(Aug-10-16)(Robotics/Embodied AI/LLM)
人工智能·深度学习·ai·机器人·论文·robotics·具身智能
卢卡上学1 小时前
【AI工具】Coze智能体工作流:5分钟制作10个10w+治愈视频,无需拍摄剪辑
人工智能·音视频·ai视频·ai智能体
共绩算力1 小时前
Maya多模态模型支持8国语言
人工智能·maya·共绩算力
乾元1 小时前
SDN 与 AI 协同:控制面策略自动化与策略一致性校验
运维·网络·人工智能·网络协议·华为·系统架构·ansible