前言:
在除錯tensorflow官方教程**時,我發現了交叉熵(
cross entropy
)損失和其之前所用的
softmax
函式。我還沒在《神經網路與機器學習第
3版》中看到交叉熵,就大概先了解一下,並且記錄下我目前了解到的資訊。
正文:先說交叉熵的公式:
如果是在訓練神經網路的情況下,p(i)代表標籤中當前樣本屬於
i類的概率。在
mnist
的標籤中此項非1即
0,而且只有某一類對應的概率是
1,其他都是
0。例如當標籤為
l=[0,0,1,0,0,0,0,0,0,0]
時,只有
p(2)=1
,即p(i)=l[i]
。q(i)
代表**結果中當前樣本屬於
i類的概率。
但是**結果卻不能被直接當作各類對應的概率,例如**結果r=[22.5, 2.44, -2.1, 2.444, 5.6, 62.3, 4.444, -5.565, 6.454, -5.414]。這時就要用
softmax
函式,其公式如下:
其中i=r[i]。此公式把r轉換成了r』,r』如下:
其總合應為1,第6項為
1應該是其小數字太多的原因。
之後根據交叉熵的公式算出r對
l的損失loss=64.4。
結語:為什麼要用softmax而不是計算簡單的線性方法呢?例如線性轉換方法:
其中q(i)為
r[i]
,qmin為q
中最小的值,n為
q的個數,
o(i)
為轉換後的結果。
相比於這種線性轉換的方法,softmax函式的轉換結果中各類的概率之間的差別要大很多,基本達到類似標籤的「一類獨大」的效果,這也有利於後續計算等(參考:
)。關於交叉熵的意義,參考:
交叉熵與Softmax
分類問題中,交叉熵常與softmax結合使用,交叉熵能夠衡量同乙個隨機變數中的兩個不同概率分布的差異程度,在機器學習中就表示為真實概率分布與 概率分布之間的差異。交叉熵的值越小,模型 效果就越好。資訊是用來消除隨機不確定性的東西 資訊量大小與資訊發生的概率成反比,概率越大,資訊量越小 概率越小,資訊...
Softmax函式與交叉熵
在logistic regression二分類問題中,我們可以使用sigmoid函式將輸入wx b對映到 0,1 區間中,從而得到屬於某個類別的概率。將這個問題進行泛化,推廣到多分類問題中,我們可以使用softmax函式,對輸出的值歸一化為概率值 這裡假設在進入softmax函式之前,已經有模型輸出...
softmax和交叉熵
softmax用於多分類過程中,往往加在神經網路的他將多個神經元的輸出,對映到 0,1 區間內,看成概率來解,這些值的累和為1,在選取輸出節點的時候選取概率最大的節點作為我們的 目標,從而進行多分類。softmax 相關求導 當對分類的loss進行改進時,我們通過梯度下降,每次優化乙個step大小的...