神經網路模型的效果以及優化的目標是通過損失函式(loss function)來定義的。下面主要介紹適用於分類問題和回歸問題的經典損失函式,並通過tensoflow實現這些損失函式。
回顧問題請參考:【回歸問題損失函式——均方誤差】
本文主要介紹分類問題下的損失函式——交叉熵,如何與softmax回歸搭配使用,和它們的使用方法,以及如何用tensorflow實現。
評判輸出向量和期望向量接近程度的常用方法就是交叉熵(cross entropy),它刻畫了兩個概率分布之間的距離,是分類問題中常用的評判方法之一。
舉個栗子,通過神經網路解決分類分類問題最常用的方法是設定n個輸出節點,其中n為類別的個數。對於每乙個樣例,神經網可以得到的乙個n維陣列作為輸出結果。陣列中的每乙個維度(也就是每乙個輸出節點)對應乙個類別的概率。
理想情況下,如果乙個樣本屬於類別k,那麼這個類別所對應的輸出節點的輸出值應該為1,而其他節點為0。以識別數字0~9中的1為例,神經網路模型輸出結果越接近[0,1,0,0,0,0,0,0,0,0]越好。交叉熵就是用來判斷輸出向量和期望向量有多接近的。
當p
pp代表正確答案,q
qq代表**值時,交叉熵可表示為:
h (p
,q)=
−∑xp
(x)l
og(q
(x))
h(p,q)=-\sum_xp(x)log (q(x))
h(p,q)
=−x∑
p(x
)log
(q(x
))舉個例子,假設某個樣例的正確答案時(1,0,0)。
① 當模型**答案時 (0.5,0.4,0.1) ,那麼它們的交叉熵為:
h ((
1,0,
0),(
0.5,
0.4,
0.1))=
−(1×
log0.5+0
×log
0.4+0×
log0.1)≈
0.3h(
(1,0
,0),
(0.5
,0.4
,0.1
))=−
(1×l
og0.
5+0×
log0
.4+0
×log
0.1)
≈0.3
② 當模型**答案時 (0.8,0.1,0.1) ,那麼它們的交叉熵為:
h ((
1,0,
0),(
0.8,
0.1,
0.1))=
−(1×
log0.8+0
×log
0.1+0×
log0.1)≈
0.1h(
(1,0
,0),
(0.8
,0.1
,0.1
))=−
(1×l
og0.
8+0×
log0
.1+0
×log
0.1)
≈0.1
很明顯,第二個模型**的結果優於第乙個,通過交叉熵得到的結果也是第二個更小,這也說明交叉熵越小代表**值越接近真實值。
通過tensorflow實現交叉熵的**如下
cross_entropy =
-tf.reduce_mean(y_ * tf.log(tf.clip_by_value(y,
0.1,
1.0)
))
函式解釋如下:
tf.reduce_mean
:所有元素的均值。【詳細參考】
tf.log
:對張量內所有元素依次求對數。
tf.clip_by_value(y, 1e-10, 1.0)
:將y的數值限定在0.1到1之間,也就是說當y<0.1時,y=0.1;當y>1時,y=1。
之後我們還需考慮乙個問題,什麼樣的模型會輸出 (0.5,0.4,0.3) 這楊的概率分布呢?這就要提到softmax回歸啦。
softmax將原始輸出成的輸出轉換成如上面的概率分布,下圖展示了加上softmax回歸的神經網路結構圖:
假設原始的神經網路輸出為 y1,
y2,y
3,..
.,yn
y_1, y_2, y_3, ..., y_n
y1,y2
,y3
,..
.,yn
,那麼經過softmax回歸處理之後的輸出為
s of
tmax
(y)i
=y′=
eyi∑
j=1n
eyisoftmax(y)_i=y'=\frac}^ne^}
softma
x(y)
i=y
′=∑j
=1n
eyie
yi這樣就把神經網路的輸出變成了乙個概率分布,從而通過交叉熵來計算**的概率分布和真是答案的概率分布之間的距離了。
因為交叉熵一般會與softmax回歸一起使用,所有tensorflow將這兩個功能封裝在一起,並提供tf.nn.softmax_cross_entropy_with_logits
,這樣通過乙個命令就可以得到使用softmax回歸之後的交叉熵。
**實現如下:
tf.nn.softmax_cross_entropy_with_logits(labels=y_, logits=y)
其中,y代表原神經網路的輸出結果,y_給出了標準答案。 交叉熵損失函式分類 交叉熵損失函式的應用
本文以二分類交叉熵損失函式為例,詳細分析了交叉熵損失函式在實際應用中遇到的問題,以及解決辦法,並給出了在深度學習中使用的交叉熵損失函式的具體形式。通過本文的敘述,相信能夠使讀者對深度學習的理解更加深入。其中y為label,為 的正類別概率,即在二分類中通過sigmoid函式得出的正類別概率大小。對於...
深度學習入門 損失函式 交叉熵誤差
交叉熵誤差 cross entropy error 07 設定乙個微小值,避免對數的引數為0導致無窮大 1 10的負7次方 return np.sum t np.log y delta 注意這個log對應的是ln t 0,0,1,0,0,0,0,0,0,0 設定 2 為正確解標籤 y 0.1,0.0...
交叉熵損失函式 交叉熵損失函式和均方差損失函式引出
交叉熵 均方差損失函式,加正則項的損失函式,線性回歸 嶺回歸 lasso回歸等回歸問題,邏輯回歸,感知機等分類問題 經驗風險 結構風險,極大似然估計 拉普拉斯平滑估計 最大後驗概率估計 貝葉斯估計,貝葉斯公式,頻率學派 貝葉斯學派,概率 統計 記錄被這些各種概念困擾的我,今天終於理出了一些頭緒。概率...