【深度学习理论】(1) 损失函数
各位同學好,最近學習了CS231N斯坦福計算機視覺公開課,講的太精彩了,和大家分享一下。
已知一張圖像屬于各個類別的分數,我們希望圖像屬于正確分類的分數是最大的,那如何定量的去衡量呢,那就是損失函數的作用了。通過比較分數與真實標簽的差距,構造損失函數,就可以定量的衡量模型的分類效果,進而進行后續的模型優化和評估。
構造損失函數之后,我們的目標就是將損失函數的值最小化,使用梯度下降的方法求得損失函數對于每個權重的偏導數。
損失函數公式如下,f 代表一張圖像屬于每個類別的分數;yi 代表真實的標簽;Li 代表每張圖像的損失;將所有數據點的損失值求平均,得到最終要優化的損失函數 L
下面介紹幾種典型的損失函數
1. 鉸鏈損失函數( hinge loss )
鉸鏈損失函數公式如下,sj 代表一張圖片屬于錯誤分類的分數,syi 代表一張圖片屬于正確類別的分數。
舉個例子,如下圖。
計算貓圖像的損失函數,先分別求出該圖片屬于汽車和青蛙兩個類別的分數,減去屬于貓的分數,再加1,和0比較,取最大值。得到貓圖片的鉸鏈損失函數值。
貓的損失函數:max[0, (5.1-3.2+1)] + max[0, (-1.7-3.2+1)] = 2.9 + 0 = 2.9
汽車的損失函數:max[0, (1.3-4.9+1)] + max[0, (2.0-4.9+1)] = 0 + 0 = 0
青蛙的損失函數:max[0, (2.2+3.1+1)] + max[0, (2.5+3.1+1)] = 6.3 + 6.6 = 12.9
將這三個樣本的鉸鏈損失值求平均,就得到了最終的損失函數值 L = (2.9 + 0 + 12.9) / 3
鉸鏈損失函數的特點
(1)以圖像car屬于汽車類別的分數等于4.9為例,圖像car屬于錯誤類別的分數都小于3.9的話,那么圖像car的損失函數值就等于0。鉸鏈損失函數只會懲罰與正確類別分數相近的錯誤類別。
(2)鉸鏈損失的最小值是0,最大值是正無窮。因為分類錯誤的分數可以是非常大的數
(3)在剛開始訓練時,所有的權重都是隨機初始化的,導致圖片屬于每個類別的分數都是相近的。此時的鉸鏈損失函數是分類錯誤的類別數。如果有三分類,L=?max[0, (score-score+1)] + max[0, (score-score+1)]=2
(4)如果鉸鏈損失函數的公式變成求平方,如下。也稱為平方損失函數,分類錯誤的值經過平方之后就會變得非常大。這時我們重點優化損失函數值特別大的。如上圖的青蛙圖片的平方損失值就變成了12.9^2
(5)同一個損失函數值對應很多組不同的權重。如果鉸鏈損失函數的值等于0,有很多組權重都能使得損失函數等于0。舉個例子,比如我們對所有的權重都乘以2,權重都為0
2. 正則化
如果現在一個損失函數值對應了多組權重,那要怎么做選擇呢。這時候就要引入正則化的概念了
在之前構造的損失函數后面再加一個正則化項,?表示正則化強度。正則化是為了讓模型更加簡單,讓參數和權重更加小。
L2正則化,計算每個權重值的平方,再求和。??
L1正則化,先給每個權重值取絕對值,再把每個權重的絕對值求和。?
彈性網絡,既考慮L1正則化又考慮L2正則化,使用參數衡量對L1和L2的關注程度。?
正則化的目的是為了防止過擬合,讓權重更簡單,讓模型有更強的泛化能力,讓模型更簡單
除了直接在損失函數后面加一個正則化項以外,還有Dropout、Batch Normalization等防止過擬合的方法
舉個例子
w有兩組權重項,x是輸入圖片,w*x 線性求和之后的結果都是1。那怎么選擇這兩組權重呢。
通過L2正則化方法,w1模型的正則化結果=1,w2模型的正則化結果=(0.25^2)x4,明顯w2的正則化結果較小。正則化就能選出每個權重元素協同工作的最好的模型。使用L1正則化的話,會發現這兩組權重的計算結果是一樣的。
3. Softmax 分類器
現在有了圖像屬于各個類別的分數,我們希望得到的是圖像屬于各個類別的概率,概率都是屬于0-1之間,并且概率和等于1。softmax步驟如下:
(1)首先對圖片屬于每個類別的分數使用指數函數,,既能將負數分數變為正數,又能保留其單調性。
(2)對指數函數的結果歸一化。得到圖片屬于每個類別的概率在0-1之間,并且概率和等于1。如下圖,圖像屬于car類別的概率是最高的,轉換成概率后它的概率值也是最高的。
Softmax 的作用是將分數變成概率,并且保留了分數之間的大小關系。softmax本身不需要任何權重,只進行數學計算。
Softmax 能將圖片屬于正確和錯誤類別的分數盡可能的放大、分開,經過softmax函數變換后,如果分數的最大值和其他分類數值之間相差很大的話,softmax就會將這種差別放大。就算相差比較小也會將這個差別放大。
4. 交叉熵損失函數
熵在物理中衡量混亂程度,熵越小,表明分類正確和分類錯誤越顯著
計算完圖像屬于每個分類的概率之后就要構建交叉熵損失函數,又稱為對數似然損失函數
公式為:Li = -log( 圖像屬于正確類別的概率 )
由公式可知,圖像屬于正確分類的概率越接近1,那么交叉熵損失函數值就越接近0
此時,交叉熵損失函數值就和圖片屬于錯誤分類的概率值就沒有關系了,只關心圖片屬于正確分類的概率
極大似然估計
極大似然估計是使得所有的圖片都被正確分類的這一事件發生的聯合概率
上面計算的 Li 是一張圖片屬于正確類別的交叉熵損失。那如果我現在有一千張圖像,將它們屬于各自正確類別的概率相乘起來,就能得到所有圖片都分類正確的概率。這個結果數是非常非常小的,為了解決這個問題我們就可以在外面求一個對數。
只需要將??? 變成??
(1)每張圖片分類正確的概率越接近1,那么最終的交叉熵損失函數結果就越接近0
(2)剛開始訓練時,圖片屬于每個分類的概率是幾乎是相同的,那么這個時候的一張圖像的交叉熵損失值是多少呢。
假設此時一共有C分類,那么該圖像的交叉熵損失為:
5. 總結
我們現在有一個訓練集,求得了每張圖像屬于各個類別的分數。
使用鉸鏈損失函數可以計算各類別的分數和真實標簽之間的距離,計算出鉸鏈損失函數值。
這個分數經過 Softmax 函數變換后,可以計算交叉熵損失函數。
為了使模型更加簡單可以在損失函數后面加一個正則化項。
總結
以上是生活随笔為你收集整理的【深度学习理论】(1) 损失函数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【神经网络】(15) Xception
- 下一篇: 【神经网络】(16) MobileNet