當前位置:編程學習大全網 - 源碼下載 - 徹底理解 softmax、sigmoid、交叉熵(cross-entropy)

徹底理解 softmax、sigmoid、交叉熵(cross-entropy)

sigmoid 函數也叫S函數,因為它的函數曲線的形狀像字母 S,由此得名。其形式為:

sigmoid 函數的輸入是壹個標量,輸出也是壹個標量,是壹個標量到標量的映射。從函數曲線或函數表達式可以看出,sigmoid 函數的定義域為全體實數 ,值域為 (0,1) 區間,由此可以發現,sigmoid 函數能夠起到將任意數值放縮到 (0,1) 區間內部。sigmoid 函數過去經常作為神經網絡的激活函數,這是因為壹方面 sigmoid 函數能夠將那些過大或過小的數值縮放到 (0,1) 區間內部,同時還可以保持其相對大小;另壹方面 sigmoid 函數的導數 ,可以發現 sigmoid 函數的導數可以由 sigmoid 本身直接得到,這個特性使得 sigmoid 函數在神經網絡的反向傳播過程中的求導十分容易。然而現在更常用的激活函數是形式更為簡單的 ReLU 函數 。

值得壹提的是,sigmoid 函數的原函數叫做 softplus 函數,其形式為:

softplus 函數的值域為 ,可用來產生正態分布的均值 和標準差 ,softplus 函數的名字來源於 函數的平滑形式。

softplus 函數的導數是 sigmoid 函數 。

softmax 函數,顧名思義是壹種 max 函數,max 函數的作用是從壹組數據中取最大值作為結果,而 softmax 也起到類似的作用,只是將這組數據進行壹些處理,使得計算結果放縮到 (0,1) 區間內。

softmax 函數首先將這組數據中的每壹個值 都轉換為自然對數 的指數,即 ,隨後將每個轉換後的數據 都除以所有轉換後數據的和 ,即 ,就是 softmax 對數據 的輸出結果。這裏需要註意的是,softmax 的作用是將壹組數據的每壹個都轉換到 (0,1) 區間內,輸入是壹個向量,輸出也是壹個向量,是壹個從向量到向量的映射;而 max 函數是將壹組數據中的最大值作為輸出,輸入是壹個向量,輸出則是壹個標量(壹個數),是壹個從向量到標量的映射,max 函數將輸入數據的維度進行了壓縮。

softmax 函數可視作 sigmoid 函數在向量上的擴展形式。sigmoid 函數的輸入為壹個標量,作用是將其放縮到 (0,1) 區間內,而 softmax 的輸入為壹個向量,輸出也是壹個向量,作用與 sigmoid 相同,只是 softmax 函數會保持這個向量內每個分量互相之間的相對大小(分量小的在 softmax 後依然小,分量大的在 softmax 後依然大)。考慮壹個 2 維向量 , , ,當 時, ,其形式與 sigmoid 函數壹致。

交叉熵 函數是用於計算兩個概率分布之間的差異,其輸入為兩個分布,輸出為壹個標量,該標量表示兩個分布之間的差異程度。交叉熵的形式為:

這裏需要註意的是,在交叉熵函數中,交換分布 p 和 q 的順序會影響交叉熵函數的輸出結果,因為交叉熵函數 的作用是以分布 p 為基準,對分布 q 進行評估,將其交換順序會導致評估的基準不壹致, 與 的意義並不相同。

在深度學習中,經常將交叉熵函數與 softmax 函數相關聯,這是因為 softmax 函數對壹組數據的每個數據進行計算後,可以將這組數據中的每壹個都映射到 (0,1) 區間上,並且其和為 1,符合概率的定義,而交叉熵恰恰是對概率分布進行計算,因此通常將 softmax 函數的輸出結果作為交叉熵函數的輸入,將二者構造為復合函數。

在深度學習的訓練過程中,通常將每個輸入的真實標簽值設置為分布 p,預測值設置為分布 q,利用交叉熵函數計算出的值作為損失值,將其用於後續的反向傳播計算梯度並更新權重。在這裏,設 softmax 函數對輸入數據 預測為第 類的概率為 ,輸入數據 屬於第 類的真實概率為 ,那麽交叉熵函數的形式為:

根據以上公式,對模型預測的第 類的導數為:

softmax 函數對輸入的導數的形式可由 softmax 本身得到,其形式十分簡單(由於自然對數 的存在):

將 softmax 函數的輸出作為交叉熵函數中的概率 ,即 ,那麽交叉熵函數對 softmax 函數的輸入 的導數為:

由於這裏將 softmax 函數視作 p,即:

將 softmax 用 p 代替,也就是將 替換為 :

最後將上式代入到交叉熵函數的導數 中,即可得到交叉熵函數對輸入 的導數:

可以看到交叉熵函數與 softmax 函數結合使用,可以得到十分簡潔的導數形式,只需將 softmax 的輸出結果減 1 再與對應的標簽值 相乘即可得到在第 類上的導數,對每個類別分別計算相應的導數,即可得到我們需要的梯度。在許多任務中,標簽值往往用 one-hot 形式表示, 壹般為 1,那麽只需將 softmax 函數的計算結果減 1 即可得到本次傳播的第 類的導數值,這使得反向傳播中梯度的計算變得十分簡單和方便。

  • 上一篇:如何用原生的react,webpack,es6來使用螞蟻金服的ant design組件庫
  • 下一篇:倩女幽魂手遊ios模擬器怎麽玩
  • copyright 2024編程學習大全網