一文弄懂各種損失函數(shù)(loss function)
樸素貝葉斯: 最大化后驗概率
遺傳編程: 最大化適應(yīng)度函數(shù)
強化學習: 最大化總回報/價值函數(shù)
CART決策樹分類: 最大化信息增益/最小化子節(jié)點不純度
CART,決策樹回歸,線性回歸,自適應(yīng)線性神經(jīng)元…: 最小化均方誤差成本(或損失)函數(shù)
分類模型: 最大化對數(shù)似然或最小化交叉熵損失(或代價)函數(shù)
支持向量機: 最小化hinge損失

Loss Function

損失函數(shù)是一種評估“你的算法/模型對你的數(shù)據(jù)集預估情況的好壞”的方法。如果你的預測是完全錯誤的,你的損失函數(shù)將輸出一個更高的數(shù)字。如果預估的很好,它將輸出一個較低的數(shù)字。當調(diào)整算法以嘗試改進模型時,損失函數(shù)將能反應(yīng)模型是否在改進?!皳p失”有助于我們了解預測值與實際值之間的差異。損失函數(shù)可以總結(jié)為3大類,回歸,二分類和多分類。
常用損失函數(shù):
Mean Error (ME)
Mean Squared Error (MSE)

Mean Absolute Error (MAE)

Root Mean Squared Error (RMSE)

Categorical Cross Entropy Cost Function(在只有一個結(jié)果是正確的分類問題中使用分類交叉熵)

Binary Cross Entropy Cost Function.

Hinge Loss(hinge損失不僅會懲罰錯誤的預測,也會懲罰那些正確預測但是置信度低的樣本)


Multi-class Cross Entropy Loss

這里我們要區(qū)分Multi-class和Multi-label,如下圖:

對于Multi-Label我們不能使用softmax,因為softmax總是只強制一個類變?yōu)?,其他類變?yōu)?。因此,我們可以簡單地在所有輸出節(jié)點值上用sigmoid,預測每個類的概率。
Divergence LOSS (KL-Divergence)

KL散度是一個分布與另一個分布的概率差異的度量,KL散度在功能上類似于多類交叉熵,KL散度不能用于距離函數(shù),因為它不是對稱的。
Huber loss

a為比較小的值,此函數(shù)是二次函數(shù);對于a為大值時,此函數(shù)是線性函數(shù)。變量a通常是指殘差,即觀測值和預測值之間的差值。與平方誤差損失相比,Huber損失對數(shù)據(jù)中的異常值不那么敏感。使函數(shù)二次化的小誤差值是多少取決于“超參數(shù)”,??(delta),它可以調(diào)整。

有的時候,我們的任務(wù)并不是回歸或分類,而是排序,下面介紹rank loss。

Rank Loss

排名損失用于不同的領(lǐng)域,任務(wù)和神經(jīng)網(wǎng)絡(luò)設(shè)置,如Siamese Nets或Triplet Nets。這就是為什么他們會有名稱,如Contrastive Loss, Margin Loss, Hinge Loss or Triplet Loss。
與其他損失函數(shù)(如交叉熵損失或均方誤差損失)不同,損失函數(shù)的目標是學習直接預測給定輸入的一個標簽、一個值或一組或多個值,rank loss的目標是預測輸入之間的相對距離。這個任務(wù)通常被稱為度量學習。
rank loss在訓練數(shù)據(jù)方面非常靈活:我們只需要得到數(shù)據(jù)點之間的相似性得分就可以使用它們。分數(shù)可以是二元的(相似/不同)。例如,假設(shè)一個人臉驗證數(shù)據(jù)集,我們知道哪些人臉圖像屬于同一個人(相似),哪些不屬于(不同)。利用rank loss,我們可以訓練CNN來推斷兩張人臉圖像是否屬于同一個人。
為了使用rank loss,我們首先從兩個(或三個)輸入數(shù)據(jù)點中提取特征,并得到每個特征點的嵌入表示。然后,我們定義一個度量函數(shù)來度量這些表示之間的相似性,例如歐幾里德距離。最后,我們訓練特征提取器在輸入相似的情況下為兩個輸入產(chǎn)生相似的表示,或者在兩個輸入不同的情況下為兩個輸入產(chǎn)生距離表示。
Pairwise Ranking Loss


我們從上式可以看到,當兩個人的描述的是一個人時,他們嵌入表示距離大小就是loss,當描述不是一個人時,嵌入表示距離大于margin才不會產(chǎn)生loss。我們也可以把公式改寫為:

Triplet Ranking Loss

通過使用三組訓練數(shù)據(jù)樣本(而不是成對樣本),這種設(shè)置優(yōu)于前者(同時優(yōu)化類內(nèi)距離和類間距),目標就是使得錨點與負樣本距離顯著大于(由margin決定)與正樣本的距離,loss定義如下。

我們來分析一下這種損失的三種情況:
Easy Triplets: 相對于嵌入空間中的正樣本,負樣本已經(jīng)足夠遠離錨定樣本。損失是0并且網(wǎng)絡(luò)參數(shù)不會更新。
Hard Triplets: 負樣本比正樣本更接近錨點,損失是正的。
Semi-Hard Triplets:負樣本比正樣本離錨的距離遠,但距離不大于margin,所以損失仍然是正的。

負樣本選擇:
在triplets loss訓練過程中,負樣本選擇和三元祖樣本挖掘是非常重要的。選擇的策略對訓練的效率和最終效果有很大的影響。一個很重要的點是,訓練三元祖應(yīng)避免easy triplets,因為他們所造產(chǎn)生的loss是0,不能用于優(yōu)化模型。
樣本挖掘的第一種策略離線進行三元組挖掘,這意味著三元組是在訓練開始時定義的,或者是在每個epoch前。后來又提出了online triplet loss(在線三元組挖掘),即在訓練過程中為每一個epoch定義三元組,從而提高了訓練效率和性能。
需要注意的是,選擇負樣本的最佳方法是高度依賴于任務(wù)的。

Circle loss

在理解了triplet loss之后,我們終于可以開始研究circle loss:A Unified Perspective of Pair Similarity Optimization。Circle Loss 獲得了更靈活的優(yōu)化途徑及更明確的收斂目標,從而提高所學特征的鑒別能力。它使用同一個公式,在兩種基本學習范式,三項特征學習任務(wù)(人臉識別,行人再識別,細粒度圖像檢索),十個數(shù)據(jù)集上取得了極具競爭力的表現(xiàn)。


?------------------------------------------------
雙一流高校研究生團隊創(chuàng)建,專注于計算機視覺原創(chuàng)并分享相關(guān)知識?
聞道有先后,術(shù)業(yè)有專攻,如是而已╮(╯_╰)╭
