这是一个非常关键的误解!你正好卡在了整个推导中最容易把人绕晕的 “下标” 上。
你之所以觉得这里应该是 0,是因为你把
1. 谁是 0,谁不是 0?
回想一下我们的交叉熵损失函数:
如果网络预测了 3 个类别的概率:
现在,我们拿这个
- 对
求导:公式里没有 ,所以 - 对
(也就是 )求导:根据对数求导法则, (注意!这个绝对不是 0) - 对
求导:公式里没有 ,所以
结论: 只有当对错误类别的概率求导时,结果才是 0。对正确类别
2. 求和公式是如何坍缩的?
根据链式法则,我们要求
展开来看(假设有 3 个类别,正确是
现在,把第一步求出的“0”和“非0”代入进去:
看到了吗?正是因为那些 0 的存在,把周围没用的项全部“杀”掉了! 整个长长的求和公式,最后只活下来了中间那一项(也就是
3. 活下来的那一项是什么?
活下来的这一项是:
- 左半边
: 它是 ,不是 0。 - 右半边
: 这是在问:“错误类别的打分 变化时,正确类别的概率 会怎么变?”因为 (一个是正确类别,一个是错误类别,下标不同),所以应用我们在上一节讲的“非对角线(挤压)”法则,结果是 。
把它们乘在一起:
负负得正,分母的
总结一下你的困惑点: 0 乘以任何数确实是 0,但在链式法则的求和公式中,乘以 0 的那些项(