Neural-Networks

神經網絡中的 Softmax 層

  • December 12, 2013

我正在嘗試向使用反向傳播訓練的神經網絡添加一個 softmax 層,因此我正在嘗試計算它的梯度。

softmax 輸出為在哪裡是輸出神經元數。

如果我推導出它,那麼我得到

類似於邏輯回歸。然而這是錯誤的,因為我的數值梯度檢查失敗。

我究竟做錯了什麼?我有一個想法,我也需要計算交叉導數(即) 但我不確定如何做到這一點並保持梯度的維度相同,以便適合反向傳播過程。

我對為此提供自己的答案感到有點不好,因為它被變形蟲和 juampa 很好地捕捉到了,除了關於如何將雅可比矩陣 還原為向量的最終直覺。

您正確導出了雅可比矩陣的對角線的梯度,也就是說

正如變形蟲所說,你還必須推導出雅可比行列式的非對角線條目,這會產生

這兩個概念定義可以方便地使用稱為Kronecker Delta的構造組合在一起,因此梯度的定義變為

所以雅可比矩陣是方陣

amoeba 和 juampa 已經涵蓋了到目前為止的所有信息。問題當然是,我們需要從已經計算的輸出錯誤中獲取*輸入錯誤。*由於輸出誤差的梯度取決於所有輸入,然後是輸入的梯度是

給定上面定義的雅可比矩陣,這可以簡單地實現為矩陣和輸出誤差向量的乘積:

如果 softmax 層是您的輸出層,那麼將其與交叉​​熵成本模型相結合可以將計算簡化為

在哪裡是標籤的向量,並且是 softmax 函數的輸出。簡化形式不僅方便,而且從數值穩定性的角度來看也非常有用。

引用自:https://stats.stackexchange.com/questions/79454

comments powered by Disqus

相關問答