softmax函数的损失函数公式

大哥打扰一下,softmax函数的损失函数公式
最新回答
红麈别春梦

2026-10-23 00:23:23

Softmax函数本身没有损失函数,但它是多分类问题中交叉熵损失函数的核心组成部分。两者结合形成的Softmax交叉熵损失函数,是分类任务的标准选择。

1. 核心公式
组合后的损失函数公式为:
$L = -\frac{1}{N} \sum_{i=1}^{N} \sum_{c=1}^{C} y_{i,c} \cdot \log(p_{i,c})$
其中:
- $N$ 是批量数据中的样本数量。
- $C$ 是类别总数。
- $y_{i,c}$ 是一个二进制指示符(0或1),表示样本 $i$ 的真实类别是否为 $c$。
- $p_{i,c}$ 是Softmax函数预测样本 $i$ 属于类别 $c$ 的概率。

2. 工作原理与拆解
该损失函数的计算可以拆解为两个连续步骤:
2.1 Softmax概率计算
对于神经网络最后一个全连接层输出的每个样本的原始分数(logits)$z$,通过Softmax函数将其转换为概率分布:
$p_c = \frac{e^{z_c}}{\sum_{j=1}^{C} e^{z_j}}$
这一步确保了所有输出概率之和为1,符合概率分布的特性。

2.2 交叉熵计算
在得到预测概率 $p$ 和真实标签(通常为one-hot编码)$y$ 后,计算两者之间的交叉熵:
$L_i = -\sum_{c=1}^{C} y_c \cdot \log(p_c)$
对于一个真实类别为 $k$ 的样本,其损失可简化为:$L_i = -\log(p_k)$。模型的目标就是最小化这个损失,即让正确类别的预测概率 $p_k$ 尽可能接近1。

3. 反向传播的梯度
该组合的一个关键优势是其梯度形式非常简洁,便于高效地进行反向传播。损失函数 $L$ 对原始分数 $z_j$ 求导的结果为:
$\frac{\partial L_i}{\partial z_j} = p_j - y_j$
这个梯度直接是预测概率与真实标签的差值</strong,没有复杂的计算,这在实践中极大地提高了训练效率并保证了数值稳定性。