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