深度學習-交叉熵損失


SoftMax回歸

對於MNIST中的每個圖像都是零到九之間的手寫數字。所以給定的圖像只能有十個可能的東西。我們希望能夠看到一個圖像,並給出它是每個數字的概率

例如,我們的模型可能會看到一個九分之一的圖片,80%的人肯定它是一個九,但是給它一個5%的幾率是八分之一(因為頂級循環),並有一點概率所有其他,因為它不是100%確定。

這是一個經典的情況,其中softmax回歸是一種自然簡單的模型。如果要將概率分配給幾個不同的東西之一的對象,softmax是要做的事情,因為softmax給出了一個[0,1]之間的概率值加起來為1的列表。

稍后,當我們訓練更復雜型號,最后一步將是一層softmax

 

那么我們通常說的激活函數有很多,我們這個使用softmax函數.softmax模型可以用來給不同的對象分配概率。即使在之后,我們訓練更加精細的模型時,最后一步也需要用softmax來分配概率。

這里的softmax可以看成是一個激勵(activation)函數,把我們定義的線性函數的輸出轉換成我們想要的格式,也就是關於10個數字類的概率分布。

因此,給定一張圖片,它對於每一個數字的吻合度可以被softmax函數轉換成為一個概率值。

softmax回歸有兩個步驟:首先我們將我們的輸入的證據加在某些類中,然后將該證據轉換成概率。每個輸出的概率,對應着獨熱編碼中具體的類別。

下面是softmax的公式:

在神經網絡中,整個過程如下:

 

也就是最后的softmax模型,用數學式子表示:

交叉熵損失

我們前面學習過了一種計算誤差損失,預測值與標准值差的平方和。不過在這里我們不能再使用這個方式,我們的輸出值是概率並且還有標簽。那么就需要一種更好的方法形容這個分類過程的好壞。

這里就要用到交叉熵損失。確定模型損失的一個非常常見的非常好的功能稱為“交叉熵”。交叉熵來源於對信息理論中的信息壓縮代碼的思考,但是從壓縮到機器學習在很多領域都是一個重要的思想。它定義為

它表示的是目標標簽值與經過權值求和過后的對應類別輸出值

tf.nn.softmax_cross_entropy_with_logits

tf.nn.softmax_cross_entropy_with_logits(_sentinel=None, labels=None, logits=None, dim=-1, name=None)

計算logits與labels之間的softmax交叉熵損失,該函數已經包含了softmax功能,logits和labels必須有相同的形狀[batch_size, num_classes]和相同的類型(float16, float32, or float64)。

  • labels 獨熱編碼過的標簽值
  • logits 沒有log調用過的輸入值
  • 返回 交叉熵損失列表
tf.nn.softmax_cross_entropy_with_logits(labels=y_label, logits=y))

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM