這是專欄《AI初識境》的第11篇文章。所謂初識,就是對相關(guān)技術(shù)有基本了解,掌握了基本的使用方法。 今天來說說深度學(xué)習中常見的損失函數(shù)(loss),覆蓋分類,回歸任務(wù)以及生成對抗網(wǎng)絡(luò),有了目標才能去優(yōu)化一個模型。 作者&編輯 | 言有三 1 什么是損失函數(shù) 在機器學(xué)習中,損失函數(shù)(loss function)是用來估量模型的預(yù)測值f(x)與真實值Y的不一致程度,損失函數(shù)越小,一般就代表模型的魯棒性越好,正是損失函數(shù)指導(dǎo)了模型的學(xué)習。 機器學(xué)習的任務(wù)本質(zhì)上是兩大類,分類問題與回歸問題,再加上綜合了判別模型和生成模型后在各類圖像任務(wù)中大展拳腳的生成對抗網(wǎng)絡(luò),這一次我們就重點講述這些內(nèi)容。 2 分類任務(wù)損失 2.1、0-1 loss 0-1 loss是最原始的loss,它直接比較輸出值與輸入值是否相等,對于樣本i,它的loss等于: 當標簽與預(yù)測類別相等時,loss為0,否則為1??梢钥闯?,0-1 loss無法對x進行求導(dǎo),這在依賴于反向傳播的深度學(xué)習任務(wù)中,無法被使用,0-1 loss更多的是啟發(fā)新的loss的產(chǎn)生。 2.2、熵與交叉熵loss 在物理學(xué)有一個概念,就是熵,它表示一個熱力學(xué)系統(tǒng)的無序程度。為了解決對信息的量化度量問題,香農(nóng)在1948年提出了“信息熵”的概念,它使用對數(shù)函數(shù)表示對不確定性的測量。熵越高,表示能傳輸?shù)男畔⒃蕉?,熵越少,表示傳輸?shù)男畔⒃缴?,我?strong>可以直接將熵理解為信息量。 按照香農(nóng)的理論,熵背后的原理是任何信息都存在冗余,并且冗余大小與信息中每個符號(數(shù)字、字母或單詞)的出現(xiàn)概率或者說不確定性有關(guān)。概率大,出現(xiàn)機會多,則不確定性小,這個關(guān)系就用對數(shù)函數(shù)來表征。 為什么選擇對數(shù)函數(shù)而不是其他函數(shù)呢?首先,不確定性必須是概率P的單調(diào)遞降函數(shù),假設(shè)一個系統(tǒng)中各個離散事件互不相關(guān),要求其總的不確定性等于各自不確定性之和,對數(shù)函數(shù)是滿足這個要求的。將不確定性f定義為log(1/p)=-log(p),其中p是概率。 對于單個的信息源,信源的平均不確定性就是單個符號不確定性-logpi的統(tǒng)計平均值,信息熵的定義如下。 假設(shè)有兩個概率分布p(x)和q(x),其中p是已知的分布,q是未知的分布,則其交叉熵函數(shù)是兩個分布的互信息,可以反應(yīng)其相關(guān)程度。 從這里,就引出了分類任務(wù)中最常用的loss,即log loss,又名交叉熵loss,后面我們統(tǒng)一稱為交叉熵: n對應(yīng)于樣本數(shù)量,m是類別數(shù)量,yij 表示第i個樣本屬于分類j的標簽,它是0或者1。對于單分類任務(wù),只有一個分類的標簽非零。f(xij) 表示的是樣本i預(yù)測為j分類的概率。loss的大小完全取決于分類為正確標簽?zāi)且活惖母怕?,當所有的樣本都分類正確時,loss=0,否則大于0。 2.3、softmax loss及其變種 假如log loss中的f(xij)的表現(xiàn)形式是softmax概率的形式,那么交叉熵loss就是我們熟知的softmax with cross-entropy loss,簡稱softmax loss,所以說softmax loss只是交叉熵的一個特例。 softmax loss被廣泛用于分類分割等任務(wù),而且發(fā)展出了很多的變種,有針對不平衡樣本問題的weighted softmax loss, focal loss,針對蒸餾學(xué)習的soft softmax loss,促進類內(nèi)更加緊湊的L-softmax Loss等一系列改進,公眾號早在一年前就撰寫過綜述如下: 【技術(shù)綜述】一文道盡softmax loss及其變種 2.4、KL散度 Kullback和Leibler定義了KL散度用于估計兩個分布的相似性,定義如下; Dkl是非負的,只有當p與q處處相等時,才會等于0。上面的式子也等價于 其中l(wèi)(p,p)是分布p的熵,而l(p,q)就是p和q的交叉熵。假如p是一個已知的分布,則熵是一個常數(shù),此時dkl(p|q)與l(p,q)也就是交叉熵只有一個常數(shù)的差異,兩者是等價的。 同時值得注意的是,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是一個指數(shù)形式的loss,它的特點就是梯度比較大,主要用于Adaboost集成學(xué)習算法中,定義如下: logistic loss取了Exponential loss的對數(shù)形式,它的定義如下: logistic loss 梯度相對變化更加平緩。 此外還有sigmoid cross_entropy_loss,可以被用于多標簽分類任務(wù)或者不需要創(chuàng)建類間競爭機制的分類任務(wù),在Mask RCNN中就被用了。 以上就涵蓋了大部分常用的分類任務(wù)損失,多半都是對數(shù)的形式,這是由信息熵的定義,參數(shù)似然估計的本質(zhì)決定的。 3 回歸任務(wù)損失 在回歸任務(wù)中,回歸的結(jié)果是一些整數(shù)或者實數(shù),并沒有先驗的概率密度分布,常使用的loss是L1 loss和L2 loss。 3.1、L1 loss Mean absolute loss(MAE)也被稱為L1 Loss,是以絕對誤差作為距離: 由于L1 loss具有稀疏性,為了懲罰較大的值,因此常常將其作為正則項添加到其他loss中作為約束。L1 loss的最大問題是梯度在零點不平滑,導(dǎo)致會跳過極小值。 3.2、L2 loss Mean Squared Loss/ Quadratic Loss(MSE loss)也被稱為L2 loss,或歐氏距離,它以誤差的平方和作為距離: L2 loss也常常作為正則項。當預(yù)測值與目標值相差很大時, 梯度容易爆炸,因為梯度里包含了x?t。 3.3、L1 loss與L2 loss的改進 原始的L1 loss和L2 loss都有缺陷,比如L1 loss的最大問題是梯度不平滑,而L2 loss的最大問題是容易梯度爆炸,所以研究者們對其提出了很多的改進。 在faster rcnn框架中,使用了smooth L1 loss來綜合L1與L2 loss的優(yōu)點,定義如下: 在x比較小時,上式等價于L2 loss,保持平滑。在x比較大時,上式等價于L1 loss,可以限制數(shù)值的大小。 為了增強L2 loss對噪聲(離群點)的魯棒性,研究者提出了Huber loss,定義如下: Huber對于離群點非常的有效,它同時結(jié)合了L1與L2的優(yōu)點,不過多出來了一個delta參數(shù)需要進行訓(xùn)練。 除此之外還有Log-Cosh Loss等損失,大家可以自己了解,也歡迎補充。 從上面可以看出,L1/L2各有優(yōu)劣,設(shè)計一個通用的框架同時滿足L1/L2損失的優(yōu)點是研究重點,我見過的最夸張的是這樣的。 3.4、perceptual loss 對于圖像風格化,圖像超分辨率重建等任務(wù)來說,早期都使用了圖像像素空間的L2 loss,但是L2 loss與人眼感知的圖像質(zhì)量并不匹配,恢復(fù)出來的圖像往往細節(jié)表現(xiàn)不好。 現(xiàn)在的研究中,L2 loss逐步被人眼感知loss所取代。人眼感知loss也被稱為perceptual loss(感知損失),它與MSE采用圖像像素進行求差的不同之處在于所計算的空間不再是圖像空間。 研究者們常使用VGG等網(wǎng)絡(luò)的特征,令φ來表示損失網(wǎng)絡(luò),Cj表示網(wǎng)絡(luò)的第j層,CjHjWj表示第j層的特征圖的大小,感知損失的定義如下: 可以看出,它有與L2 loss同樣的形式,只是計算的空間被轉(zhuǎn)換到了特征空間。 4 生成對抗網(wǎng)絡(luò)損失 生成對抗網(wǎng)絡(luò)即Generative Adversarial Networks,簡稱GAN,它是2014年以后興起的無監(jiān)督學(xué)習網(wǎng)絡(luò),現(xiàn)在有非常多的解讀了,我們一年前也解讀過,歡迎移步,適合初學(xué)者。 原始的用于生成圖片的GAN的損失函數(shù)包括了生成式模型和判別式模型兩部分,如今GAN被用于各類任務(wù),其他的各種損失也加入了進來,不過我們這里還是專門針對GAN的基本損失進行講述。 4.1、GAN的基本損失 GAN是在生成模型和判別模型的相互博弈中進行迭代優(yōu)化,它的優(yōu)化目標如下: 從中可以看出,包括兩個部分,Ex~pdata(x)[logD(x)]和Ez~pz(z)[log(1?D(G(z)))]要求最大化判別模型對真實樣本的概率估計,最小化判別模型對生成的樣本的概率估計,生成器則要求最大化D(G(z)),即最大化判別模型對生成樣本的誤判,這個loss是對數(shù)log的形式。 原始的GAN的損失使用了JS散度,兩個分布之間越接近,它們的JS散度越小,但實際上這并不適合衡量生成數(shù)據(jù)分布和真實數(shù)據(jù)分布的距離,相關(guān)的分析已經(jīng)非常的多了,本文如果展開就太長了,因此直接給解決方案。 4.2、-log D trick Ian Goodfellow提出了-log D trick,即把生成器loss改成如下,使得生成器的損失不依賴于生成器G 這個等價最小化目標存在兩個嚴重的問題。第一是它同時要最小化生成分布與真實分布的KL散度,卻又要最大化兩者的JS散度,這是矛盾的會導(dǎo)致梯度不穩(wěn)定。第二,因為KL散度不是對稱的,導(dǎo)致此時loss不對稱,對于正確樣本誤分和錯誤樣本誤分的懲罰是不一樣的。第一種錯誤對應(yīng)的是“生成器沒能生成真實的樣本”,即多樣性差,懲罰微小;第二種錯誤對應(yīng)的是“生成器生成了不真實的樣本”,即準確性低,懲罰巨大。這樣造成生成器生成多樣性很差的樣本,出現(xiàn)了常說的模式崩塌(collapse mode)問題。 4.3、Wasserstein GAN(簡稱wgan)等改進方案 wgan采用了Earth-Mover距離(EM距離)作為loss,它是在最優(yōu)路徑規(guī)劃下的最小消耗,計算的是在聯(lián)合分布γ下,樣本對距離的期望值: 與原始的GAN的loss形式相比,其實wgan就是生成器和判別器的loss不取log。wessertein距離相比KL散度和JS散度的優(yōu)勢在于,即使兩個分布的支撐集沒有重疊或者重疊非常少,仍然能反映兩個分布的遠近。而JS散度在此情況下是常量,KL散度可能無意義。 wgan有一些問題,wgan-gp改進了wgan連續(xù)性限制的條件,后面還有一些研究,大家可以自行跟進,我們后面也會講述。 4.4、LS-GAN LS-GAN即Least Squares Generative Adversarial Networks。它的原理部分可以一句話概括,即使用了最小二乘損失函數(shù)代替了GAN的損失函數(shù),相當于最小化P和Q之間的Pearson卡方散度(divergence),這屬于f-divergence的一種,有效地緩解了GAN訓(xùn)練不穩(wěn)定和生成圖像質(zhì)量差多樣性不足的問題。作者認為使用JS散度并不能拉近真實分布和生成分布之間的距離,使用最小二乘可以將圖像的分布盡可能的接近決策邊界,其損失函數(shù)定義如下: 以交叉熵作為損失,它的特點是會使得生成器不會再優(yōu)化那些被判別器識別為真實圖片的生成圖片,即使這些生成圖片距離判別器的決策邊界仍然很遠,也就是距真實數(shù)據(jù)比較遠,這意味著生成器的生成圖片質(zhì)量并不高。而要想最小二乘損失比較小,則在混淆判別器的前提下還得讓生成器把距離決策邊界比較遠的生成圖片拉向決策邊界,這就是LS-GAN的優(yōu)勢。 4.5、Loss-sensitive-GAN 在原始的GAN的損失函數(shù)后添加了一個約束項來直接限定GAN的建模能力,它的損失函數(shù)如下: 優(yōu)化將通過最小化這個目標來得到一個“損失函數(shù)" (下文稱之為L函數(shù))。L函數(shù)在真實樣本上越小越好,在生成的樣本上越大越好。它是以真實樣本x和生成樣本的一個度量為各自L函數(shù)的目標間隔,把x和生成樣本分開。好處是如果生成的樣本和真實樣本已經(jīng)很接近,就不必要求他們的L函數(shù)有個固定間隔,因為生成的樣本已經(jīng)很好。這樣就可以集中力量提高那些距離真實樣本還很遠,真實度不那么高的樣本,能更合理地使用LS-GAN的建模能力,被稱為“按需分配”。 關(guān)于GAN的損失優(yōu)化,這是一個不小的研究領(lǐng)域,下面是一個簡單的匯總。 如果你對GAN還有更多興趣,那就看這個參考網(wǎng)址吧,https://hollobit./All-About-the-GAN/,不多不多,也就幾千篇文章,我大概看了1000篇的摘要,等閑下來再跟大家搞GAN,是Generative Adversarial Networks噢。 本文講述了深度學(xué)習領(lǐng)域中常見的損失,學(xué)習靈活運用和設(shè)計損失本來不是初識境界的要求,不過還是讓大家先有個基本感知吧。 下一期預(yù)告:如何晉級為合格的初階深度學(xué)習模型訓(xùn)練師。 |
|