wgan 不理解 损失函数_AI初识:深度学习中常用的损失函数有哪些?
加入極市專業CV交流群,與6000+來自騰訊,華為,百度,北大,清華,中科院等名企名校視覺開發者互動交流!更有機會與李開復老師等大牛群內互動!
同時提供每月大咖直播分享、真實項目需求對接、干貨資訊匯總,行業技術交流。關注?極市平臺?公眾號?,回復?加群,立刻申請入群~
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.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中就被用了。
以上就涵蓋了大部分常用的分類任務損失,多半都是對數的形式,這是由信息熵的定義,參數似然估計的本質決定的。
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層的特征圖的大小,感知損失的定義如下:
可以看出,它有與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(G(z)),即最大化判別模型對生成樣本的誤判,這個loss是對數log的形式。
原始的GAN的損失使用了JS散度,兩個分布之間越接近,它們的JS散度越小,但實際上這并不適合衡量生成數據分布和真實數據分布的距離,相關的分析已經非常的多了,本文如果展開就太長了,因此直接給解決方案。
4.2、-log D trick
Ian Goodfellow提出了-log D trick,即把生成器loss改成如下,使得生成器的損失不依賴于生成器G
這個等價最小化目標存在兩個嚴重的問題。第一是它同時要最小化生成分布與真實分布的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/,不多不多,也就幾千篇文章,我大概看了1000篇的摘要,等閑下來再跟大家搞GAN,是Generative Adversarial Networks噢。
-完-
*延伸閱讀
AI初識:深度學習模型評估,從圖像分類到生成模型
AI初識:如何增加深度學習模型的泛化能力
AI初識:深度學習中被"嫌棄”的池化到底是什么?
添加極市小助手微信(ID : cv-mart),備注:研究方向-姓名-學校/公司-城市(如:目標檢測-小極-北大-深圳),即可申請加入目標檢測、目標跟蹤、人臉、工業檢測、醫學影像、三維&SLAM、圖像分割等極市技術交流群,更有每月大咖直播分享、真實項目需求對接、干貨資訊匯總,行業技術交流,一起來讓思想之光照的更遠吧~
△長按添加極市小助手
△長按關注極市平臺
覺得有用麻煩給個在看啦~??
總結
以上是生活随笔為你收集整理的wgan 不理解 损失函数_AI初识:深度学习中常用的损失函数有哪些?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 即时与及时有什么区别_什么是即时配送它和
- 下一篇: 5怎么关闭作弊模式_相机5种主要的拍摄模