全面理解softmax與交叉熵

2021-09-05 09:04:18 字數 2942 閱讀 1795

交叉熵最早起源於資訊理論,1948 年,夏農提出了「資訊熵」(shāng) 的概念,才解決了對資訊的量化度量問題。

一條資訊的資訊量大小和它的不確定性有直接的關係。比如說,我們要搞清楚一件非常非常不確定的事,或是我們一無所知的事情,就需要了解大量的資訊。相反,如果我們對某件事已經有了較多的了解,我們不需要太多的資訊就能把它搞清楚。所以,從這個角度,我們可以認為,資訊量的度量就等於不確定性的多少。

有興趣的同學可以更多地去搜尋了解關於這方面的內容。。

通過神經網路解決多分類問題時,最常用的一種方式就是在最後一層設定n個輸出節點,無論在淺層神經網路還是在cnn中都是如此,比如,在alexnet中最後的輸出層有1000個節點:

而即便是resnet取消了全連線層,也會在最後有乙個1000個節點的輸出層:

一般情況下,最後乙個輸出層的節點個數與分類任務的目標數相等。假設最後的節點數為n,那麼對於每乙個樣例,神經網路可以得到乙個n維的陣列作為輸出結果,陣列中每乙個維度會對應乙個類別。在最理想的情況下,如果乙個樣本屬於k,那麼這個類別所對應的的輸出節點的輸出值應該為1,而其他節點的輸出都為0,即[0,0,1,0,….0,0],這個陣列也就是樣本的label,是神經網路最期望的輸出結果,交叉熵就是用來判定實際的輸出與期望的輸出的接近程度!

神經網路的原始輸出不是乙個概率值,實質上只是輸入的數值做了複雜的加權和與非線性處理之後的乙個值而已,那麼如何將這個輸出變為概率分布?

這就是softmax層的作用,假設神經網路的原始輸出為y1,y2,….,yn,那麼經過softmax回歸處理之後的輸出為:

很顯然的是:

而單個節點的輸出變成的乙個概率值,經過softmax處理後結果作為神經網路最後的輸出。

交叉熵刻畫的是實際輸出(概率)與期望輸出(概率)的距離,也就是交叉熵的值越小,兩個概率分布就越接近。假設概率分布p為期望輸出,概率分布q為實際輸出,h(p,q)為交叉熵,則:

這個公式如何表徵距離呢,舉個例子:

假設n=3,期望輸出為p=(1,0,0),實際輸出q1=(0.5,0.2,0.3),q2=(0.8,0.1,0.1),那麼:

很顯然,q2與p更為接近,它的交叉熵也更小。

除此之外,交叉熵還有另一種表達形式,還是使用上面的假設條件:

其結果為:

以上的所有說明針對的都是單個樣例的情況,而在實際的使用訓練過程中,資料往往是組合成為乙個batch來使用,所以對用的神經網路的輸出應該是乙個m*n的二維矩陣,其中m為batch的個數,n為分類數目,而對應的label也是乙個二維矩陣,還是拿上面的資料,組合成乙個batch=2的矩陣:

所以交叉熵的結果應該是乙個列向量(根據第一種方法):

而對於乙個batch,最後取平均為0.2。

在tensorflow可以採用這種形式:

cross_entropy = -tf.reduce_mean(y_ * tf.log(tf.clip_by_value(y, 1e-10, 1.0)))
其中y_表示期望的輸出,y表示實際的輸出(概率值),*為矩陣元素間相乘,而不是矩陣乘。

上述**實現了第一種形式的交叉熵計算,需要說明的是,計算的過程其實和上面提到的公式有些區別,按照上面的步驟,平均交叉熵應該是先計算batch中每乙個樣本的交叉熵後取平均計算得到的,而利用tf.reduce_mean函式其實計算的是整個矩陣的平均值,這樣做的結果會有差異,但是並不改變實際意義。

除了tf.reduce_mean函式,tf.clip_by_value函式是為了限制輸出的大小,為了避免log0為負無窮的情況,將輸出的值限定在(1e-10, 1.0)之間,其實1.0的限制是沒有意義的,因為概率怎麼會超過1呢。

由於在神經網路中,交叉熵常常與sorfmax函式組合使用,所以tensorflow對其進行了封裝,即:

cross_entropy = tf.nn

.sorfmax_cross_entropy_with_logits(y_ ,y)

與第乙個**的區別在於,這裡的y用神經網路最後一層的原始輸出就好了。

(簡單易懂的softmax交叉熵損失函式求導)

(手打例子一步一步帶你看懂softmax函式以及相關求導過程)

(幾種常見的損失函式)

(分類問題損失函式的資訊理論解釋)

(交叉熵代價函式(損失函式)及其求導推導,雖然只寫了logistic回歸,但softmax回歸是其推廣,可參照一樣的方法理解)

回歸 (來自ufldl的資源,softmax回歸與logistic回歸的聯絡)

交叉熵與Softmax

分類問題中,交叉熵常與softmax結合使用,交叉熵能夠衡量同乙個隨機變數中的兩個不同概率分布的差異程度,在機器學習中就表示為真實概率分布與 概率分布之間的差異。交叉熵的值越小,模型 效果就越好。資訊是用來消除隨機不確定性的東西 資訊量大小與資訊發生的概率成反比,概率越大,資訊量越小 概率越小,資訊...

Softmax函式與交叉熵

在logistic regression二分類問題中,我們可以使用sigmoid函式將輸入wx b對映到 0,1 區間中,從而得到屬於某個類別的概率。將這個問題進行泛化,推廣到多分類問題中,我們可以使用softmax函式,對輸出的值歸一化為概率值 這裡假設在進入softmax函式之前,已經有模型輸出...

softmax和交叉熵

softmax用於多分類過程中,往往加在神經網路的他將多個神經元的輸出,對映到 0,1 區間內,看成概率來解,這些值的累和為1,在選取輸出節點的時候選取概率最大的節點作為我們的 目標,從而進行多分類。softmax 相關求導 當對分類的loss進行改進時,我們通過梯度下降,每次優化乙個step大小的...