softmax 公式:
假设有一个向量,其长度为, 表示中的第个元素,那么这个元素的softmax值为:
Softmax反向传播
当j!=i时,
当j=i时,
所以 将上面两个式子加起来得到
注意上式括号里面的量与无关,并且其值为与的乘积之和,设其为
则
有人问这有什么意义?
其实这样就说明softmax的反向传播在编程的时候并不需要 分i=j和i!=j的情况来计算。
以caffe为例子 bottom_diff = top_data * (top_diff - sum(top_diff * top_data)) 其中*表示点乘。
可以看出这样来计算backward不需要 gemm矩阵乘,只需要点乘即可完成。