Softmax 函数求导中为什么要分对角线元素和非对角线元素两种情况
因为 Softmax 与其他普通的激活函数(如 Sigmoid、ReLU)有着根本性的不同:它是一个“存在零和博弈”的函数。
我们可以从“物理直觉”和“数学原理”两个层面来彻底拆解它:
1. 物理直觉层:分蛋糕的“零和博弈”
Softmax 的核心作用,是把一堆任意大小的打分(线性输出
现在我们要探究的是:当输入分数
- 情况 A:自己对自己(
) 假设你(索引为 )的考试打分 提高了。那么你在所有人中的相对优势变大了,你分到的蛋糕份额 理所当然会增加。这是一种正向的影响。 - 情况 B:别人对自己(
) 假设别人的考试打分 提高了。此时你的打分 并没有变。但是,因为蛋糕的总量只有 1,别人分走的蛋糕变多了,你的份额 就必然会被挤压而减少。这是一种负向的影响。
你看,同一个分数
2. 数学原理层:分子到底是不是常数?
数学永远是物理直觉的严谨表达。我们回到 Softmax 的公式:
我们要对其中的某个变量
这里的分母
真正的分水岭在于分子
- 当
时: 此时分子是 。对 来说,分子是一个自变量。所以分子求导 。这就导出了最后 的结果。 - 当
时: 此时分子是 (比如我们在对 求导,但分子是 )。在微积分中,对 求偏导时,所有不是 的字母统统被视为常数!所以,这里的分子是一个常数,常数求导 。这就导出了最后 那个带有负号(代表份额被挤压)的结果。
3. 为什么叫“对角线”和“非对角线”?
因为网络的输出是一个包含 10 个概率的向量
在这个
- 第 0 行第 0 列、第 1 行第 1 列…… 这些行号和列号相等(
)的元素,正好排在矩阵的对角线上。它们代表了“自己对自己”的影响。 - 除了对角线之外的其他所有位置,行号和列号都不等(
),它们排在矩阵的非对角线上。它们代表了“别人对自己”的挤压效应。
不知道通过这种“分蛋糕”的比喻加上分子常数判定法则,有没有帮你彻底扫清对