深度学习相关概念:交叉熵损失
深度學習相關概念:交叉熵損失
- 交叉熵損失詳解
- 1.激活函數與損失函數
- 1.1激活函數:
- 1.2損失函數:
- 2.對數損失函數(常用于二分類問題):
- 3.交叉熵、熵、相對熵三者之間的關系
- 4.交叉熵損失函數(常用于多分類問題)
- 4.1交叉熵的作用:
- 5.交叉熵損失 VS 多類支撐向量機損失
??我在學習深度學習的過程中,發現交叉熵損失在分類問題里出現的非常的頻繁,但是對于交叉熵損失這個概念有非常的模糊,好像明白又好像不明白,因此對交叉熵損失進行了學習。
交叉熵損失詳解
1.激活函數與損失函數
??首先我們要知道的一點是,交叉熵損失是損失函數的一種。但是在神經網絡中,我們常常又聽到另外一種函數:激活函數,這2種函數到底有什么區別呢?他們的作用是什么?
1.1激活函數:
?? 激活函數就是將神經網絡上一層的輸入,經過神經網絡層的非線性變換轉換后,通過激活函數,得到輸出。常見的激活函數包括:Sigmoid、Tanh、 Relu等。
不同的激活函數之間有以下的區別:
1.2損失函數:
??損失函數是度量神經網絡的輸出的預測值與實際值之間的差距的一種方式。常見的損失函數包括:對數損失函數、交叉熵損失函數、回歸中的Mae(L1 Loss) Mse(L2 Loss)損失函數等。
2.對數損失函數(常用于二分類問題):
Tip:什么是二分類問題?
??即某一事件只存在是(1)或者不是(0)的現象。如果分類任務中有兩個類別,比如我們想識別一幅圖片是不是狗。我們訓練一個分類器,輸入一幅圖片,輸出是不是狗,用y=0或1表示。
對數損失函數(二分類交叉熵損失,邏輯回歸損失):
??對數損失函數的基本思想是極大似然估計,極大似然估計簡單來說,就是如果某一個事件已經發生了,那么就認為這事件發生的概率應該是最大的。似然函數就是這個概率,我們要做的就是基于現有數據確定參數從而最大化似然函數。在進行似然函數最大化時,會對多個事件的概率進行連續乘法。連續乘法中很多個小數相乘的結果非常接近0,而且任意數字發生變化,對最終結果的影響都很大。為了避免這兩種情況,可以使用對數轉換將連續乘法轉換為連續加法。對數函數是單調遞增函數,轉換后不會改變似然函數最優值的位置。前面負號,我們就將最大似然函數轉換為求解最小損失函數。二分類問題的對數損失函數如下:
?? y_i表示實際情況下某類事件是否發生(0或1),p_i表示事件發生的概率,由sigmoid函數得到概率p。
??如果樣本只有一個的話,會有如下兩種情況:
????當y=1時,損失函數為 -ln§,如果想要損失函數盡可能的小,那么概率p就要盡可能接近1。
????當y=0時,損失函數為 -ln(1-p),如果想要損失函數盡可能的小,那么概率p就要盡可能接近0。
??但是如果有m個樣本的時候,則損失函數公式如下:
??假設有三個獨立事件,1 表示事件發生,現在三個事件發生情況為(1,1,0),通過神經網絡得到三個事件發生的概率為(0.8, 0.7, 0.1),使用上面的公式計算損失值為0.69,損失值很小,說明神經網絡預測的這組概率正確的可能性很大;同樣的這組概率,三個事件發生情況為(0,0,1),計算得到的損失值5.12,損失值很大,說明神經網絡預測的這組概率正確的可能性很小。
3.交叉熵、熵、相對熵三者之間的關系
??交叉熵、相對熵、熵之間可以相互推導。具體見下圖。
相對熵用來衡量兩個分布之間的不相似性。越不相似的相對熵越大,越相似的相對熵越小。例如,狗和豬的相似 性為0.02,貓和狗的相似性可能為0.2.
??當事件分布滿足one-hot分布,即A,B,C三件事的發生概率為(1 0 0)或(0 1 0)或(0 0 1)時,交叉熵=熵,也就是說交叉熵損失函數等于對數損失函數,具體推導見下圖。
4.交叉熵損失函數(常用于多分類問題)
Tips:什么是多分類?
??多類分類(Multiclass classification): 表示分類任務中有多個類別, 比如對一堆動物圖片分類, 它們可能是貓、狗、鳥等. 多類分類是假設每個樣本都被設置了一個且僅有一個標簽: 一個動物可以是狗或者貓, 但是同時不可能是兩者。
4.1交叉熵的作用:
衡量多分類器輸出與預測值之間的關系
??交叉熵損失函數的標準形式如下:
??注意公式中 x 表示樣本, y表示實際的標簽,a 表示預測的輸出, n表示樣本總數量。
5.交叉熵損失 VS 多類支撐向量機損失
??在下面的圖中,第二行居然有一個0.23,接近0.24的損失,而多類支撐向量機損失確是零,為什么會有這樣的損失?因為你把這(10(鳥) 9(貓) 9(狗))歸一化以后是不是近似于接近于這個事情的概率是1/3,就可能是1.2/3、0.9/13、0.9/3,第一個就比第二個強了一丟丟。但是從概率的角度講,這個地方的損失是負的,接近于-log(1/3),但是雖然鳥是比貓狗和貓大了,但是鳥的概率值還很小,鳥的概率我是0.34,其他兩個都0.33,鳥是最大的。我們做分類輸出的時候,我們是會把它判斷成鳥,但是神經網絡輸出的時候你是屬于鳥,但是你的概率只有0.34,所以神經網絡不希望這樣,神經網絡希望輸出的結果訓練以后說的,我告訴你屬于鳥,其實而且鳥類的概率比較高,最好是0.9以上。但是多類支撐向量機損失在這個情況下,他會把損失判斷為0,不在優化算法,但是由于3者之間差距實在太小,你這次可能預測為鳥類是正確的,但是下次就未必正確,這就導致我們神經網絡的訓練精度不能提高。但是交叉熵損失,在這種情況下他并沒有停止訓練,這個時候他依然有很大的損失,他會要求這個分數盡量的高。而且不僅要求鳥類高,我還要求貓和狗的概率低,所以交叉商損失就是這個作用,就是我高的時候不是要壓低別人的分數,而多類支持向量機損失呢,我只要比別人高一分就行了,我不管你是多少分,我這比你高一分兒我就完事兒了。這就是這兩類損失最大區別。所以有些時候在我們有些時候訓練分類器的時候,我們會遇到這樣的情況:我這個損失函數一直沒怎么變的,但是我的預測精度acc卻在一直的增加。
??如上圖,盡管A組和B組的損失幾乎是一樣的,但是卻是預測正確和預測錯誤,在我反向傳播時權重稍微調整一下,我就能讓我預測正確,但是我的損失并沒有怎么樣的改變,這就是為什么我的總損失并沒有怎么樣變化,但是我的精度在一直在上升,就是因為我們這個概率預測的這個值略微比其他的滲出了一點點,大家還處于勢均力敵的狀態。
總結
以上是生活随笔為你收集整理的深度学习相关概念:交叉熵损失的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【计算机视觉】Histogram of
- 下一篇: 单帧图像超分辨率与深度学习