深度學習 分類問題損失函式 交叉熵

2021-09-30 01:46:17 字數 3032 閱讀 7447

神經網路模型的效果以及優化的目標是通過損失函式(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回歸等回歸問題,邏輯回歸,感知機等分類問題 經驗風險 結構風險,極大似然估計 拉普拉斯平滑估計 最大後驗概率估計 貝葉斯估計,貝葉斯公式,頻率學派 貝葉斯學派,概率 統計 記錄被這些各種概念困擾的我,今天終於理出了一些頭緒。概率...