softmax交叉熵損失函式求導

2022-08-30 00:57:10 字數 2019 閱讀 5304

來寫乙個softmax求導的推導過程,不僅可以給自己理清思路,還可以造福大眾,豈不美哉~

softmax經常被新增在分類任務的神經網路中的輸出層,神經網路的反向傳播中關鍵的步驟就是求導,從這個過程也可以更深刻地理解反向傳播的過程,還可以對梯度傳播的問題有更多的思考。

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

softmax函式的公式是這種形式:

s_i代表的是第i個神經元的輸出。

ok,其實就是在輸出後面套乙個這個函式,在推導之前,我們統一一下網路中的各個表示符號,避免後面突然出現乙個什麼符號懵逼推導不下去了。

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

神經元的輸出設為:

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

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

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

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

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

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

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

好了,這下正式開始~

首先,我們要明確一下我們要求什麼,我們要求的是我們的loss對於神經元輸出(z_i)的梯度,即:

根據復合函式求導法則:

有個人可能有疑問了,這裡為什麼是a_j而不是a_i,這裡要看一下softmax的公式了,因為softmax公式的特性,它的分母包含了所有神經元的輸出,所以,對於不等於i的其他輸出裡面,也包含著z_i,所有的a都要納入到計算範圍中,並且後面的計算可以看到需要分為i = j和i ≠ j兩種情況求導。

下面我們乙個乙個推:

第二個稍微複雜一點,我們先把它分為兩種情況:

如果i=j:

如果i≠j:

ok,接下來我們只需要把上面的組合起來:

最後的結果看起來簡單了很多,最後,針對分類問題,我們給定的結果y_i最終只會有乙個類別是1,其他類別都是0,因此,對於分類問題,這個梯度等於:

softmax函式與交叉熵損失函式

本文主要介紹了當前機器學習模型中廣泛應用的交叉熵損失函式與softmax激勵函式。這個損失函式主要應用於多分類問題,用於衡量 值與實際值之間的相似程度。交叉熵損失函式定義如下 lce y y i 1ncl asse syi log yi l hat,y sum y i log hat lce y y...

交叉熵損失函式以及softmax損失函式

週六總結 參考資料 本markdown編輯器使用stackedit修改而來,用它寫部落格,將會帶來全新的體驗哦 markdown 是一種輕量級標記語言,它允許人們使用易讀易寫的純文字格式編寫文件,然後轉換成格式豐富的html頁面。維基百科 使用簡單的符號標識不同的標題,將某些文字標記為粗體或者斜體,...

softmax回歸與交叉熵損失函式

交叉熵損失函式 在 動手學深度學習 softmax回歸一節中,交叉熵損失函式比較晦澀,學習csdn上其他部落格後有了一定了解,做此記錄 softmax回歸同線性回歸一樣,也是乙個單層神經網路,但和線性回歸不同,softmax回歸的輸出單元從乙個變成了多個,且引入了softmax運算使輸出更適合離散值...