以色列理工暑期學習-機器學習中Loss函數的小結

2021-02-19 智能算法

機器學習作為一種優化方法,最重要的一點是找到優化的目標函數——損失函數和正則項的組合;有了目標函數的「正確的打開方式」,才能通過合適的機器學習算法求解優化。

通俗來講Loss函數是一種關於fitness的測度(關於數據是否合適模型的匹配度),或者是對於預測是否準確的一種判斷,如果預測和判斷沒有錯誤,則損失函數的值為0;如果有錯誤則會進行一些「懲罰」措施,也可以稱之為代價(風險)函數。藉助文獻中的原話:「the loss function measures 「how bad」 the mistake is. The loss can be interpreted as a penalty or error measure.」回到最開始的機器學習的問題上,對於機器學習一般會包含以下五個部分:

假設空間:如在線性回歸、邏輯回歸以及SVM中的參數

測度函數:最大似然或最小損失

是否有偏和方差的權衡:正則項或MAP最大後驗估計

在假設空間中找到一個好的假設模型:優化模型、全局凸模型等

驗證模型:在測試數據上實現預測,進行交叉驗證

通常我們定義Loss function如下:

圖1 優化目標:損失函數+正則項

通常我們的誤差函數包含以下五種:

黃金標準損失即 0-1 loss(在理想狀態下的判別:下圖中藍色線)

鉸鏈函數即 hinge loss(用於SVM中soft margin情況:下圖中紅色線)

對數函數即 log loss(用於邏輯回歸、交叉熵損失:下圖中黃色線)

平方損失即 square loss(用於線性回歸:下圖中黑色線)

指數損失即 exponential loss(用於boost情況:下圖中綠色線)


下面我們來一一解釋這些loss函數:

1. 0-1 Loss作為最為基本的分類器的評價函數,對於錯誤分類結果的一種計數,比較好理解:


這裡需要引用參考文獻的原文說明一點:

「The cost function induced by the 0-1-loss is the average misclassification error and the cost function induced by the squared loss is the mean squared error (MSE).

However, there are cost functions which cannot be decomposed using a loss function. For example, the area under the curve (AUC). In other words, all loss functions generate a cost function, but not all cost functions must be based on a loss function.「

cost函數可以歸結為0-1Loss平均誤分類的誤差或由square損失的均方誤差(最小二乘法推演);可能在一些問題上有所區分。

2. Hinge Loss作為SVM推導的損失函數去逼近0-1 Loss;很明顯可以看出0-1是理想情況下的損失函數顯式表達,SVM在感知機(Perceptron)的基礎上,通過最大化分類邊界(max margin)去進行分類;

然而對於不可分的情況下,引入soft margin,加入鬆弛,允許分類數據存在異常點:


所以SVM參數中,最重要的就是求解C和hinge loss,不同的情況下soft margin是不一樣的,有待優化。所以最終的hinge loss的形式才會變成:

這樣的近似對於優化來講,就可以用一些凸優化的方法,第一項正則項為凸,hinge loss也是凸函數:

3. Log Loss看形式我們基本可以猜測是從概率的方向得到的;看過經典斯坦福的ML課程的同學都知道,先是講 linear regression 然後引出最小二乘誤差,之後概率角度高斯分布解釋最小誤差。然後講邏輯回歸,使用MLE來引出優化目標是使得所見到的訓練數據出現概率最大。

如果我們在邏輯回歸模型中,利用邏輯回歸sigma函數,帶入判別參數,求出最大似然估計式,其對應的就是我們的最小化的交叉熵函數。關於交叉熵與KL divergence關係,讀者可以自行查找資料驗證。

4. Square Loss就是這裡大家最為熟知的最小二乘法在線性回歸中的推導,最小二乘法是線性回歸的一種,OLS將問題轉化為一個凸優化的問題,假設樣本和噪聲滿足高斯分布,最後通過極大似然推導出最小二乘,將樣本點到擬合最優的回歸線的距離最小,即殘差最小化。

5. Exponential Loss 指數損失可能會有些陌生,形式如下:

用在boosting機制中,本公眾號的經典算法文章中有關於boosting的介紹。可以作為補充閱讀。


其實簡明來講就是通過弱分類器投票進行強分類器的合成,優勢有很多,比如,序列性迭代決策,分類函數線介於square和log,對於過擬合的情況不必擔心,但是計算量會較大。在學習boosting的過程中,會發現通過弱分類器發現的錯誤的會被逐漸削弱,弱分類器在已有分類器分出的錯誤空間上不斷切割(分類空間),如圖:

上圖中,關於迭代停止條件,因為弱分類器的定義就是分類判別概率小於0.5,就像一枚硬幣一樣。大家應該會比較疑惑,關於參數是怎麼得到的,然後去更新每一個弱分類器的權重,下圖會根據定理求出上邊界

參數a表示分類誤差率越小的基本分類器在最終分類器中的作用越大。參考文獻【5】中,July在博文中推導了,作為加法模型的指數損失函數的原型:向前分步學習算法的損失函數證明為指數形式,下圖中,在做相關公式推導的過程中,也是比較直接的通過已經在算法中設定好的指數形式loss函數,根據最小化函數目標,求導得出a的參數值。

當然,現實情景中的損失函數可以進行自定義,但是需要考慮數據本身和未來通過什麼優化的方法去求解更為方便。而且在真正的優化函數中會涉及到正則項,對於特徵篩選和防止過擬合問題也是十分關鍵。需要各位讀者認真領會Loss函數和正則項的意義才能更好地設計出符合實際的優化目標函數。

參考文獻:

【1】https://www.youtube.com/watch?v=BsqqMVjzxCY

【2】https://github.com/JohnLangford/vowpal_wabbit/wiki/Loss-functions

【3】http://image.diku.dk/shark/sphinx_pages/build/html/rest_sources/tutorials/concepts/library_design/losses.html

【4】http://www.cs.cmu.edu/~yandongl/loss.html

【5】http://blog.csdn.net/v_july_v/article/details/40718799

相關焦點

  • 【深度學習】一文讀懂機器學習常用損失函數(Loss Function)
    >>文章轉載博客園郭耀華's Blog>>http://www.guoyaohua.com並做少量的補充損失函數(loss function)是用來估量模型的預測值f(x)與真實值Y的不一致程度,它是一個非負實值函數,通常使用L(Y, f(x))來表示,損失函數越小,模型的魯棒性就越好。
  • 常見的損失函數(loss function)總結
    指數損失函數(exponential loss)指數損失函數的標準形式如下:特點:(1)對離群點、噪聲非常敏感。經常用在AdaBoost算法中。(1)本質上也是一種對數似然函數,可用於二分類和多分類任務中。
  • 入門| 機器學習中常用的損失函數你知多少?
    損失函數和優化機器通過損失函數進行學習。這是一種評估特定算法對給定數據建模程度的方法。如果預測值與實際結果偏離較遠,損失函數會得到一個非常大的值。在一些優化函數的輔助下,損失函數逐漸學會減少預測值的誤差。本文將介紹幾種損失函數及其在機器學習和深度學習領域的應用。沒有一個適合所有機器學習算法的損失函數。
  • 【損失函數】常見的損失函數(loss function)總結
    特點:(1)對離群點、噪聲非常敏感。經常用在AdaBoost算法中。6. 它比Hinge loss簡單,因為不是max-margin boundary,所以模型的泛化能力沒 hinge loss強。8. 交叉熵損失函數 (Cross-entropy loss function)交叉熵損失函數的標準形式如下:
  • 機器學習常用損失函數小結
    轉載自:https://zhuanlan.zhihu.com/p/77686118機器學習中的監督學習本質上是給定一系列訓練樣本  ,嘗試學習
  • 深度學習中的損失函數總結以及Center Loss函數筆記
    北京 上海巡迴站 | NVIDIA DLI深度學習培訓NVIDIA 深度學習學院 帶你快速進入火熱的DL領域正文共5481個字,19張圖,預計閱讀時間14分鐘。損失函數度量的是預測值與真實值之間的差異.損失函數通常寫做L(y_,y).y_代表了預測值,y代表了真實值.
  • 多任務學習中各loss權重應該如何設計?
    但並沒有對不同的任務使用不同的優化算法,除非最後一個選項 optimizer=opt 改成,optimizers=[opt, opt, opt, opt]根據 Keras 文檔中對 compile 函數的描述,optimizer 表示一個優化函數,而不是一個列表。
  • 人工智慧系列 - 不枯燥 損失函數篇 Loss Function
    聽了Kcol的通俗介紹,我們來看下官方對損失函數的介紹,相信現在理解起來就很簡單了。損失函數(loss function)是用來估量模型的預測值f(x)與真實值Y的不一致程度,它是一個非負實值函數,通常使用L(Y, f(x))來表示,損失函數越小,模型的魯棒性就越好。
  • 機器學習從業者必知的5種回歸損失函數
    機器學習中的所有算法都依靠最小化或最大化函數,我們將其稱為「目標函數」。被最小化的函數就被稱為「損失函數」。
  • Tensorflow 的 NCE-Loss 的實現和 word2vec
    nce_loss的實現邏輯如下:_compute_sampled_logits: 通過這個函數計算出正樣本和採樣出的負樣本對應的output和labelsigmoid_cross_entropy_with_logits: 通過 sigmoid cross entropy來計算output和label的loss,從而進行反向傳播。
  • 機器學習中的目標函數總結
    關注「SIGAI公眾號」,選擇「星標」或「置頂」原創技術文章,第一時間獲取機器學習中的目標函數總結SIGAI幾乎所有的機器學習算法都歸結為求解最優化問題。有監督學習算法在訓練時通過優化一個目標函數而得到模型,然後用模型進行預測。無監督學習算法通常通過優化一個目標函數完成數據降維或聚類。
  • 機器學習算法中的7個損失函數的詳細指南
    介紹想像一下-你已經在給定的數據集上訓練了機器學習模型,並準備好將它交付給客戶。但是,你如何確定該模型能夠提供最佳結果?是否有指標或技術可以幫助你快速評估數據集上的模型?當然是有的,簡而言之,機器學習中損失函數可以解決以上問題。
  • 度量學習中的pair-based loss
    知乎專欄:計算機視覺隨便記未經作者允許,請勿二次轉載度量學習度量學習(Metric Learning)是一種空間映射的方法,其能夠學習到一種特徵(Embedding)空間,在此空間中,所有的數據都被轉換成一個特徵向量,並且相似樣本的特徵向量之間距離小
  • ArcFace,CosFace,SphereFace,三種人臉識別算法的損失函數(Loss Function)的設計
    比如太陽從東邊升起,這個事件如果發生了,我們可以從這個事件中獲得的信息是幾乎沒有的。但是,如果哪天太陽從西邊升起了,那麼我們從這個事件中獲得的信息量是極大的,一定發生了什麼,或者即將發生什麼,才造成了這個事件發生。    假設X是一個離散型隨機變量,概率分布函數為:
  • 百度機器學習課程 ②:機器學習如何做?
    因此,我們可以構造一個微分方程,對 loss 函數求導,f'(w)=0 時,參數 w 的值就是 loss 達到極值點最小值時參數的取值。這時我們就可以確定 a 和 F 之間究竟是怎樣的關係。▌學習過程中隱藏了什麼?
  • Python機器學習算法中的7個損失函數的詳細指南
    介紹想像一下-你已經在給定的數據集上訓練了機器學習模型,並準備好將它交付給客戶。但是,你如何確定該模型能夠提供最佳結果?是否有指標或技術可以幫助你快速評估數據集上的模型?當然是有的,簡而言之,機器學習中損失函數可以解決以上問題。
  • 我的機器學習算法之路
    一、引言二、機器學習的概念三、機器學習的「三板斧」方法論四、機器學習的推薦學習路線學習準備學習路線(1年)學習寶典編程建議五、掌握人工智慧技術,需要從基礎的機器學習算法開始學習,逐漸建立機器學習知識體系。本篇文章 :1.帶大家克服心理上對於機器學習的敬畏,繞開彎路(本人入過很多坑),進入機器學習領域。2.從基本概念和機器學習的應用領域入手,幫助大家建立機器學習的概念模型。3.用最基本的線性回歸和邏輯回歸算法,讓大家掌握機器學習神秘的「三板斧」方法論。
  • 【損失函數合集】Yann Lecun的Contrastive Loss 和 Google的Triplet Loss
    而Triplet Loss是在FaceNet論文中的提出來的,原文名字為:FaceNet: A Unified Embedding for Face Recognition and Clustering,是對Contrastive Loss的改進。接下來就一起來看看這兩個損失函數。論文原文均見附錄。
  • 機器學習初學者都應該知道的5類回歸損失函數
    -4fb140e9d4b0翻譯:石頭機器學習中的所有算法都依賴於最小化或最大化一個函數,我們稱之為「目標函數」。最小化的函數稱為「損失函數」,損失函數衡量的是模型預測預期結果的能力,最常用的最小化損失函數的方法是「梯度下降法」,把損失函數想像成起伏的山脈,梯度下降法就像從山上滑下來到達最低點。沒有一個損失函數適用於所有類型的數據,它取決於許多因素,包括異常值的存在,機器學習算法的選擇,梯度下降法的時間效率和預測的置信度等。本文的目的是了解不同的損失函數以及它們是如何幫助數據科學家。
  • pytorch模型訓練之 loss function選擇
    二分類用的交叉熵,需要在該層前面加上 Sigmoid 函數。 size averagr很多的 loss 函數都有 size_average 和 reduce 兩個布爾類型的參數。因為一般損失函數都是直接計算 batch 的數據,因此返回的 loss 結果都是維度為 (batch_size, ) 的向量。