天天看點

softmax作為激活函數時CE-loss 求導

softmax(柔性最大值)函數,一般在神經網絡中, softmax可以作為分類任務的輸出層。其實可以認為softmax輸出的是幾個類别選擇的機率,比如我有一個分類任務,要分為三個類,softmax函數可以根據它們相對的大小,輸出三個類别選取的機率,并且機率和為1。

ok,在推導之前,我們統一一下網絡中的各個表示符号,避免後面突然出現一個什麼符号懵逼推導不下去了。 

首先是神經元的輸出,一個神經元如下圖: 

softmax作為激活函數時CE-loss 求導

神經元的輸出設為: 

softmax作為激活函數時CE-loss 求導

其中

softmax作為激活函數時CE-loss 求導

是第i個神經元的第j個權重,b是偏移值。

softmax作為激活函數時CE-loss 求導

表示該網絡的第i個輸出。 

給這個輸出加上一個softmax函數,那就變成了這樣: 

softmax作為激活函數時CE-loss 求導

aiai代表softmax的第i個輸出值,右側就是套用了softmax函數。

損失函數 loss function

在神經網絡反向傳播中,要求一個損失函數,這個損失函數其實表示的是真實值與網絡的估計值的誤差,知道誤差了,才能知道怎樣去修改網絡中的權重。

損失函數可以有很多形式,這裡用的是交叉熵函數,主要是由于這個求導結果比較簡單,易于計算,并且交叉熵解決某些損失函數學習緩慢的問題。交叉熵的函數是這樣的: 

softmax作為激活函數時CE-loss 求導

其中yiyi表示真實的分類結果。 

到這裡可能嵌套了好幾層,不過不要擔心,下面會一步步推導,強烈推薦在紙上寫一寫,有時候光看看着看着就迷糊了,自己邊看邊推導更有利于了解~

最後的準備

在我最開始看softmax推導的時候,有時候看到一半不知道是怎麼推出來的,其實主要是因為一些求導法則忘記了,唉~ 

是以這裡把基礎的求導法則和公式貼出來~有些忘記的朋友可以先大概看一下: 

softmax作為激活函數時CE-loss 求導
softmax作為激活函數時CE-loss 求導

softmax作為激活函數時CE-loss 求導

softmax作為激活函數時CE-loss 求導

繼續閱讀