一个复杂的公式,最后求导的结果极为精简,被设计者的智慧折服。
思路,利用链式法则,先对交叉熵函数求导,在求出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
这是一个相当简洁的结果。