1 什么是損失函數
機器學習中的損失函數(loss function)是用來評估模型的預測值-f(x)與真實值-y的不一致程度,損失函數越小,代表模型的魯棒性越好,損失函數能指導模型學習。
2 分類任務損失
2.1、0-1 loss
0-1 loss是最原始的loss,它直接比較輸出值與輸入值是否相等,對於樣本i,它的loss等於:
當標簽與預測類別相等時,loss為0,否則為1。可以看出,0-1 loss無法對x進行求導,在依賴於反向傳播的深度學習任務中,無法被使用,0-1 loss更多的是啟發新的loss的產生。
2.2、熵與交叉熵loss
物理學中的熵,表示一個熱力學系統的無序程度。為了解決對信息的量化度量問題,香農在1948年提出了“信息熵”的概念,它使用對數函數表示對不確定性的測量。熵越高,表示能傳輸的信息越多,熵越少,表示傳輸的信息越少,可以直接將熵理解為信息量。
按照香農的理論,熵背后的原理是任何信息都存在冗余,並且冗余大小與信息中每個符號(數字、字母或單詞)的出現概率或者說不確定性有關。概率大,出現機會多,則不確定性小,這個關系就用對數函數來表征。
為什么選擇對數函數而不是其他函數呢?首先,不確定性必須是概率P的單調遞降函數,假設一個系統中各個離散事件互不相關,要求其總的不確定性等於各自不確定性之和,對數函數是滿足這個要求的。將不確定性f定義為log(1/p)=-log(p),其中p是概率。
對於單個的信息源,信源的平均不確定性就是單個符號不確定性-logpi的統計平均值,信息熵的定義如下:
假設有兩個概率分布p(x)和q(x),其中p是已知的分布,q是未知的分布,則其交叉熵函數是兩個分布的互信息,可以反應其相關程度。
至此,引出了分類任務中最常用的loss,即log loss,又名交叉熵loss,后統一稱為交叉熵:
n對應於樣本數量,m是類別數量,yij 表示第i個樣本屬於分類j的標簽,它是0或者1。對於單分類任務,只有一個分類的標簽非零。f(xij) 表示的是樣本i預測為j分類的概率。loss的大小完全取決於分類為正確標簽那一類的概率,當所有的樣本都分類正確時,loss=0,否則大於0。
2.3、softmax loss及其變種
假如log loss中的f(xij)的表現形式是softmax概率的形式,那么交叉熵loss就是熟知的softmax with cross-entropy loss,簡稱softmax loss,所以說softmax loss只是交叉熵的一個特例。
softmax loss被廣泛用於分類分割等任務,且發展出了很多的變種,有針對不平衡樣本問題的weighted softmax loss, focal loss,針對蒸餾學習的soft softmax loss,促進類內更加緊湊的L-softmax Loss等一系列的改進:
2.3.1、softmax loss
softmax loss實際上是由softmax和cross-entropy loss組合而成,兩者放一起數值計算更加穩定。推到過程如下:
令z是softmax層的輸入,f(z)是softmax的輸出,則
單個像素i的softmax loss等於cross-entropy error如下:
展開上式:
在caffe實現中,z即bottom blob,l(y,z)是top blob,反向傳播時,就是要根據top blob diff得到bottom blob diff,所以要得到
下面求loss對z的第k個節點的梯度
可見,傳給groundtruth label節點和非groundtruth label節點的梯度是不一樣的。
原始的softmax loss非常優雅,簡潔,被廣泛用於分類問題。它的特點就是優化類間的距離非常棒,但是優化類內距離時比較弱。
2.3.2、weighted softmax loss
假如一個二分類問題,兩類的樣本數目差距非常之大。如邊緣檢測問題,邊緣像素的重要性明顯比非邊緣像素大的重要性要大,此時可以針對性的對樣本進行加權。
wc就是這個權重, c=0代表邊緣像素,c=1代表非邊緣像素,則可以令w0=1,w1=0.001,即加大邊緣像素的權重。這個權重,還可以動態地計算讓其自適應。
2.3.3、soft softmax loss
當T=1時,就是softmax的定義,當T>1,就稱之為soft softmax,T越大,因為Zk產生的概率差異就會越小。作者提出這個是為了遷移學習,生成軟標簽,然后將軟標簽和硬標簽同時用於新網絡的學習。
為什么這么用,當訓練好一個模型之后,模型為所有的誤標簽都分配了很小的概率;然而實際上對於不同的錯誤標簽,其被分配的概率仍然可能存在數個量級的懸殊差距。這個差距,在softmax中直接就被忽略了,但這其實是一部分有用的信息。
作者先利用softmax loss訓練獲得一個大模型,然后基於大模型的softmax輸出結果獲取每一類的概率,將這個概率,作為小模型訓練時soft target的label。
2.3.4、Large-Margin Softmax Loss / L-Softmax loss
上圖顯示的是不同softmax loss和L-Softmax loss學習到的cnn特征分布。第一列就是softmax,第2列是L-Softmax loss在參數m取不同值時的分布。通過可視化特征,可知學習到的類間的特征是比較明顯的,但是類內比較散。而large-margin softmax loss則類內更加緊湊,怎么做到的呢?
loss的定義形式:
由於 zk 是全連接層的輸出,所以可以寫成形式如下:
將內積更具體的表現出來,就是:
對於二分類的情況,對於屬於第1類的樣本,希望:
若對它提出更高的要求?由於cos函數在0~PI區間是遞減函數,將其改為:
其中m>=1,
在這個條件下,原始的softmax條件仍然得到滿足。
下圖,如果W1=W2,那么滿足條件2,顯然需要θ1與θ2之間的差距變得更大,原來的softmax的decision boundary只有一個,而現在類別1和類別2的decision boundary不相同,這樣類間的距離進一步增加,類內更近緊湊。
更具體的定義如下:
L-Softmax loss中,m是一個控制距離的變量,它越大訓練會變得越困難,因為類內不可能無限緊湊。作者是通過一個LargeMargin全連接層+softmax loss來共同實現。
2.3.5、L2-constrained softmax loss
將學習的特征x歸一化。觀測到好的正面的臉,特征的L2-norm大,而特征不明顯的臉,其對應的特征L2-norm小,因此,作者提出這樣的約束來增強特征的區分度:
上面式就是將其歸一化到固定值α。實際訓練的時候都不需要修改代碼,只需要添加L2-norm層與scale層,如下圖:
為什么要加這個scale層?NormFace指出了直接歸一化權重和特征,會導致loss不能下降。因為就算是極端情況下,多類樣本,令正樣本|wx|=1取最大值,負樣本|wx|=-1取最小值,這時候分類概率也是
當類別數n=10,p=0.45;n=1000,p=0.007。當類別數增加到1000類時,正樣本最大的概率還不足0.01,而反向求導的時候,梯度=1-p,會導致一直傳回去很大的loss。所以,有必要在后面加上scale層。
2.4、KL散度
Kullback和Leibler定義了KL散度用於估計兩個分布的相似性,定義如下;
Dkl是非負的,只有當p與q處處相等時,才會等於0。上式也等價於
其中l(p,p)是分布p的熵,而l(p,q)就是p和q的交叉熵。假如p是一個已知的分布,則熵是一個常數,此時Dkl(p|q)與l(p,q)只有一個常數的差異,兩者是等價的。但是,KL散度並不是一個對稱的loss,即Dkl (p|q) != Dkl (q|p),KL散度常被用於生成式的模型。
2.5、Hinge loss
Hinge loss主要用於支持向量機中,它的稱呼來源於損失的形式,定義如下:
如果分類正確,loss=0,如果錯誤則為1-f(x),所以它是一個分段不光滑的曲線。Hinge loss被用來解SVM問題中的間距最大化問題。
2.6、Exponential loss與Logistic loss
Exponential loss是一個指數形式的loss,特點是梯度比較大,主要用於Adaboost集成學習算法中,定義如下:
logistic loss取了Exponential loss的對數形式,它的定義如下:
logistic loss 梯度相對變化更加平緩。
此外,還有sigmoid cross_entropy_loss,可以被用於多標簽分類任務或者不需要創建類間競爭機制的分類任務,在Mask RCNN中就使用了sigmoid cross_entropy_loss。
以上涵蓋了大部分常用的分類任務損失,大部分都是對數的形式,這是由信息熵的定義和參數似然估計的本質決定的。
3 回歸任務損失
在回歸任務中,回歸的結果是一些整數或者實數,並沒有先驗的概率密度分布,常使用的loss是L1 loss和L2 loss。
3.1、L1 loss
Mean absolute loss(MAE)也被稱為L1 Loss,是以絕對誤差作為距離:
由於L1 loss具有稀疏性,為了懲罰較大的值,因此常常將其作為正則項添加到其他loss中作為約束。L1 loss的最大問題是梯度在零點不平滑,會跳過極小值點。
3.2、L2 loss
Mean Squared Loss/ Quadratic Loss(MSE loss)也被稱為L2 loss,或歐氏距離,它以誤差的平方和作為距離:
L2 loss也常常作為正則項。當預測值與目標值相差很大時, 梯度容易爆炸(因為梯度里包含了x−t)。
3.3、L1 loss與L2 loss的改進
原始的L1 loss和L2 loss都有缺陷,如L1 loss的最大問題是梯度不平滑,而L2 loss的最大問題是容易梯度爆炸,所以研究者們對其提出了很多的改進。
在faster RCNN框架中,使用了smooth L1 loss來綜合L1與L2 loss的優點,定義如下:
在x比較小時,上式等價於L2 loss,保持平滑。在x比較大時,上式等價於L1 loss,可以限制數值的大小。
為了增強L2 loss對噪聲(離群點)的魯棒性,研究者提出了Huber loss,定義如下:
Huber對於離群點非常的有效,它同時結合了L1與L2的優點,不過多出來了一個delta參數需要進行訓練。除此之外還有Log-Cosh Loss等損失。
從上文可以看出,L1/L2各有優劣,設計一個通用的框架同時滿足L1/L2損失的優點是研究重點,有如下:
3.4、感知損失perceptual loss
對於圖像風格化,圖像超分辨率重建等任務來說,早期都使用了圖像像素空間的L2 loss,但是L2 loss與人眼感知的圖像質量並不匹配,恢復出來的圖像往往細節表現不好。現在的研究中,L2 loss逐步被人眼感知loss所取代。人眼感知loss也被稱為perceptual loss(感知損失),它與MSE采用圖像像素進行求差的不同之處在於所計算的空間不再是圖像空間。
研究者們常使用VGG等網絡的特征,令φ來表示損失網絡,Cj表示網絡的第j層,CjHjWj表示第j層的特征圖的大小,感知損失的定義如下:
可以看出,perceptual loss與L2 loss具有同樣的形式,只是計算的空間被轉換到了特征空間。
4 生成對抗網絡損失
生成對抗網絡即Generative Adversarial Networks,簡稱GAN,於2014年以后興起的無監督學習網絡。原始的用於生成圖片的GAN的損失函數包括了生成式模型和判別式模型兩部分,如今GAN被用於各類任務,其他的各種損失也被引入,在此僅針對GAN的基本損失進行闡述。
4.1、GAN的基本損失
GAN是在生成模型和判別模型的相互博弈中進行迭代優化,它的優化目標如下:
從上式可以看出,包含兩個部分:Ex∼pdata(x)[logD(x)]和Ez∼pz(z)[log(1−D(G(z)))],要求最大化判別模型D對真實樣本的概率估計,最小化判別模型D對生成的樣本的概率估計,生成器G則要求最大化D(G(z)),即最大化判別模型對生成樣本的誤判,這里的loss是對數log的形式。
原始的GAN的損失使用了JS散度,兩個分布之間越接近,它們的JS散度越小,但實際上這並不適合衡量生成數據分布和真實數據分布的距離,相關的分析請查閱相關文獻。
4.2、-log D trick
Ian Goodfellow提出了-log D trick,使得生成器的損失不依賴於生成器G,即把生成器loss改成如下:
最小化目標存在兩個嚴重的問題:第一是它同時要最小化生成分布與真實分布的KL散度,卻又要最大化兩者的JS散度,這是矛盾的會導致梯度不穩定。第二,因為KL散度不是對稱的,導致此時loss不對稱,對於正確樣本誤分和錯誤樣本誤分的懲罰是不一樣的。第一種錯誤對應的是“生成器沒能生成真實的樣本”,即多樣性差,懲罰微小;第二種錯誤對應的是“生成器生成了不真實的樣本”,即准確性低,懲罰巨大。這樣造成生成器生成多樣性很差的樣本,出現了常說的模式崩塌(collapse mode)問題。
4.3、Wasserstein GAN(簡稱wgan)等改進方案
wgan采用了Earth-Mover距離(EM距離)作為loss,它是在最優路徑規划下的最小消耗,計算的是在聯合分布γ下,樣本對距離的期望值:
與原始的GAN的loss形式相比,wgan的生成器和判別器的loss不取log。wessertein距離相比KL散度和JS散度的優勢在於:即使兩個分布的支撐集沒有重疊或者重疊非常少,仍然能夠反映兩個分布的遠近。而JS散度在此情況下是常量,KL散度可能無意義。wgan有一些問題,wgan-gp改進了wgan連續性限制的條件,相關最新研究請查閱文獻。
4.4、LS-GAN
LS-GAN即Least Squares Generative Adversarial Networks。它的原理部分可以一句話概括:使用了最小二乘損失函數代替了GAN的損失函數。這相當於最小化P和Q之間的Pearson卡方散度(divergence),屬於f-divergence的一種,有效地緩解了GAN訓練不穩定和生成圖像質量差多樣性不足的問題。提出者認為使用JS散度並不能拉近真實分布和生成分布之間的距離,使用最小二乘可以將圖像的分布盡可能的接近決策邊界,其損失函數定義如下:
以交叉熵作為損失,它的特點是會使得生成器不會再優化那些被判別器識別為真實圖片的生成圖片,即使這些生成圖片距離判別器的決策邊界仍然很遠,也就是距真實數據比較遠,這意味着生成器的生成圖片質量並不高。而要想最小二乘損失比較小,則在混淆判別器的前提下還得讓生成器把距離決策邊界比較遠的生成圖片拉向決策邊界,這就是LS-GAN的優勢。
4.5、Loss-sensitive-GAN
在原始的GAN的損失函數后添加了一個約束項來直接限定GAN的建模能力,它的損失函數如下:
優化將通過最小化這個目標來得到一個“損失函數" (下文稱之為L函數)。L函數在真實樣本上越小越好,在生成的樣本上越大越好。它是以真實樣本x和生成樣本的一個度量為各自L函數的目標間隔,把x和生成樣本分開。好處是如果生成的樣本和真實樣本已經很接近,就不必要求他們的L函數有個固定間隔,因為生成的樣本已經很好。這樣就可以集中力量提高那些距離真實樣本還很遠,真實度不那么高的樣本,能更合理地使用LS-GAN的建模能力,被稱為“按需分配”。
關於GAN的損失優化:
推薦GAN論文網址:https://hollobit.github.io/All-About-the-GAN/
學習來源於網絡:公眾號 有三AI