一个复杂的公式,最后求导的结果极为精简,被设计者的智慧折服。
思路,利用链式法则,先对交叉熵函数求导,在求出Softmax的导数,代入即可。
Softmax的求导
pi=eai∑eak
∂pi∂ai={pi(1−pj),−pipj,if i=jif i≠j- 其中 pi 是Softmax函数, ai 是输入到Cross Entropy Loss with Softmax的上一层的输出值(激活值)。
- Softmax的导数做了构造,很巧妙地构造出 pi 的导数只由 pi 和 pj 组成。
Cross Entropy Loss的求导
Loss=−∑kyklog(pk)
∂L∂ai=−∑kyk1pk⋅∂pk∂ai- 其中 yi 是对应的one hot label.
Cross Entropy Loss with Softmax的求导
将Softmax的导数,代入Cross Entropy Loss的导数,处理 ∂pk∂ai 时,要分别考虑 k=i 和 k≠i 的情况,利用one hot label的性质,可得。
∂L∂ai=pi−yi
这是一个相当简洁的结果。