softmax交叉熵損失函式反向傳播求導過程分析
目錄
softmax經常被新增在分類任務的神經網路中的輸出層,神經網路的反向傳播中關鍵的步驟就是求導,從這個過程也可以更深刻地理解反向傳播的過程,還可以對梯度傳播的問題有更多的思考。
一、softmax 函式
softmax函式,一般在神經網路中, softmax可以作為分類任務的輸出層。其實可以認為softmax輸出的是幾個類別選擇的概率,比如我有一個分類任務,要分為三個類,softmax函式可以根據它們相對的大小,輸出三個類別選取的概率,並且概率和為1。
softmax函式的公式是這種形式:
代表的是第i個神經元的輸出。ok,其實就是在輸出後面套一個這個函式,在推導之前,我們統一一下網路中的各個表示符號,避免後面突然出現一個什麼符號懵逼推導不下去了。
首先是神經元的輸出,一個神經元如下圖:
神經元的輸出設為:
其中 是第 個神經元的第 個權重, 是偏移值, 表示該網路的第 個神經元的輸出。給這個輸出加上一個softmax函式,那就變成了這樣:
代表softmax的第 個輸出值,就是套用了softmax函式。
二、損失函式 loss function
在神經網路反向傳播中,要求一個損失函式,這個損失函式其實表示的是真實值與網路的估計值的誤差,知道誤差了,才能知道怎樣去修改網路中的權重。
損失函式可以有很多形式,這裡用的是交叉熵函式,原因如下2個:
- 主要是由於這個求導結果比較簡單,易於計算,
- 交叉熵解決某些損失函式學習緩慢的問題。
交叉熵的函式是這樣的:
其中 表示真實的分類結果。到這裡可能嵌套了好幾層,不過不要擔心,下面會一步步推導,強烈推薦在紙上寫一寫,有時候光看看著看著就迷糊了,自己邊看邊推導更有利於理解。
三、最後的準備工作
四、具體的推導過程
好了,這下正式開始,首先,我們要明確一下我們要求什麼,我們要求的是我們的 對於神經元輸出 的梯度,即:
根據複合函式求導法則:
由於有些朋友對於之前的寫法有些疑惑,所以我這裡修改了一下,這裡為什麼是 而不是 這裡要看一下softmax的公式了,因為softmax公式的特性,它的分母包含了所有神經元的輸出,所以,對於不等於 的其他輸出裡面,也包含著 所有的都要納入到計算範圍中,並且後面的計算可以看到需要分為 兩種情況求導。
下面我們一個一個推:
第二個稍微複雜一點,我們先把它分為兩種情況:
①如果 :
②如果 :
接下來我們只需要把上面的組合起來:
最後的結果看起來簡單了很多,最後,針對分類問題,我們給定的結果 最終只會有一個類別是1,其他類別都是0,因此,對於分類問題,這個梯度等於: