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矩陣乘,只需要點乘即可完成。