一、什么是Softmax?

**Softmax(“soft maximum”)**是一个将实数向量映射到一个概率分布的函数。它常用于神经网络的输出层,特别是多类别分类任务中,用来表示每个类别的预测概率。

核心作用:

  • 将模型输出的原始分数(Logits)转化为概率值,且这些概率和为1,便于解释和决策。

二、Softmax的数学公式

假设模型的输出(Logits)是一个向量:
深度学习——softmax_softmax
其中,每个 深度学习——softmax_softmax_02 是第 深度学习——softmax_概率分布_03 个类别的得分(可能是线性变换的结果)。

Softmax函数定义为:
深度学习——softmax_概率分布_04

  • 其中,深度学习——softmax_softmax_05 转换为正数;
  • 分母是所有类别指数的和,确保所有输出的概率之和为1。

输出结果是:
深度学习——softmax_softmax_06
每个 深度学习——softmax_softmax_07 表示第 深度学习——softmax_概率分布_03 个类别的概率。


三、工作原理和理解

  • 归一化指数:
    通过指数函数放大得分的差异,使得较大的得分对应明显更高的概率。
  • 概率分布:
    因为分母是所有类别指数之和,确保输出是一个合法的概率分布(所有元素非负,和为1)。
  • 比例关系:
    分类决策通常选择概率最大的类别。

四、作用和特点

  • 概率输出:
    使得模型输出可以直观理解为类别的概率,有助于后续决策。
  • 平滑性:
    转换后输出的概率是连续且光滑的,有利于优化。
  • 指数放大:
    大得分对应的概率会变得更高,强调了模型的信心。

五、优缺点

优点

  • 生成合理的概率分布,便于多类别分类。
  • 和交叉熵损失(Cross-Entropy Loss)搭配使用效果良好。
  • 具有平滑性,避免模型过于“硬性”决策。

缺点

  • 数值不稳定问题:当输入的 深度学习——softmax_softmax_02 值很大或很小时,可能导致指数计算的数值溢出或下溢(解决方案是数值稳定技巧,详见下面)。
  • 对于非常大的得分值,Softmax容易出现梯度消失。

六、数值稳定的技巧

在实际中,为了避免指数计算溢出,通常会使用数值稳定的实现

import numpy as npdef stable_softmax(z):z_max = np.max(z)exp_z = np.exp(z - z_max)return exp_z / np.sum(exp_z)

减去最大值 深度学习——softmax_概率分布_10,可以防止指数溢出,同时保持输出不变。


七、在深度学习中的应用

  • 多类别分类:
    最常用于模型输出层,将Logits转化为概率,用于多类别交叉熵损失(Cross-Entropy Loss)。
  • 注意:
    Softmax后,模型的输出可以直接用来计算损失,也可以结合阈值、概率等进行决策。

八、总结

特点

内容

作用

将模型输出转化为概率分布

公式

深度学习——softmax_概率分布_11

作用场景

多分类任务,输出层激活函数

优势

生成合理概率,增强模型可解释性

注意事项

数值稳定性,结合交叉熵损失使用