深度学习:Softmax 函数详解
Softmax 函数详解
定义与数学表达
Softmax 函数是一个广泛使用的激活函数,特别是在多类分类任务中。它将一个向量或一组数值转换为概率分布。每个输出的概率是对应输入的指数与所有输入指数之和的比例。
数学上,Softmax 函数定义如下:
[$ \text{Softmax}(z_i) = \frac{e{z_i}}{\sum_{j=1}{K} e^{z_j}} $]
其中:
- ( z i z_i zi ) 表示输入向量 ($ \mathbf{z} KaTeX parse error: Can't use function '\)' in math mode at position 1: \̲)̲ 的第 \( i $) 个分量。
- ( K K K ) 是类别总数,即向量 ($ \mathbf{z}$ ) 的维度。
- ($ e $) 是自然对数的底数。
Softmax 函数的输出是一个长度为 ( K ) 的向量,其中每个分量都在 0 到 1 之间,并且所有分量的和为 1。
特性
- 归一化:Softmax 保证所有输出值的和为1,使其可以被解释为概率。
- 可微性:Softmax 函数在整个定义域内可微,这使得它可以在基于梯度的优化算法中使用,例如反向传播。
- 敏感性:Softmax 对输入值非常敏感,尤其是当有一个输入远大于其他输入时。
实例解释
假设一个简单的情景,我们需要对三个类别进行分类:猫、狗和鸟。神经网络的最后一层生成了以下原始分数(也称为 logits):
[ $z = [2.0, 1.0, 0.1] $]
这些分数通过 Softmax 函数转换为概率:
-
计算每个类别的指数:
[ e 2.0 ≈ 7.389 , e 1.0 ≈ 2.718 , e 0.1 ≈ 1.105 e^{2.0} \approx 7.389, \quad e^{1.0} \approx 2.718, \quad e^{0.1} \approx 1.105 e2.0≈7.389,e1.0≈2.718,e0.1≈1.105 ] -
计算指数之和:
[ Sum = 7.389 + 2.718 + 1.105 ≈ 11.212 \text{Sum} = 7.389 + 2.718 + 1.105 \approx 11.212 Sum=7.389+2.718+1.105≈11.212 ] -
应用 Softmax 公式:
[ $\text{Softmax}(猫) = \frac{7.389}{11.212} \approx 0.659 $]
[ $\text{Softmax}(狗) = \frac{2.718}{11.212} \approx 0.242 $]
[ $\text{Softmax}(鸟) = \frac{1.105}{11.212} \approx 0.099 $]
这表明,根据网络的输出,猫、狗和鸟的分类概率分别为 65.9%,24.2% 和 9.9%。这意味着模型认为这张图片是猫的可能性最高。
数学属性
- 输出解释:Softmax 输出的每一个值都代表对应类别的概率,这使得最终解释非常直观。
- 交叉熵损失:在训练过程中,Softmax 通常与交叉熵损失结合使用,以有效地计算模型输出和实际标签之间的差异。
总结
Softmax 函数是处理多类分类问题的理想选择,因为它能够将神经网络输出的 logits 转换为清晰的概率分布。这个函数在许多深度学习框架中都得到了广泛应用,尤其是在训练具有多个类别输出的分类器时。通过优化交叉熵损失,Softmax 函数帮助神经网络调整其参数,以更准确地预测每个类别的概率。