09.15 「週末AI課堂」理解損失函數(理論篇)機器學習你會遇到的“坑”


「週末AI課堂」理解損失函數(理論篇)機器學習你會遇到的“坑”



「週末AI課堂」理解損失函數(理論篇)機器學習你會遇到的“坑”


數學準備


  • 連續隨機變量的期望:假設X是連續的隨機變量,f(X)是其概率密度函數,那麼X的期望是:

「週末AI課堂」理解損失函數(理論篇)機器學習你會遇到的“坑”


  • 0-1損失函數:當f(x)=y時,等於1,當f(x)≠y時,等於0。


「週末AI課堂」理解損失函數(理論篇)機器學習你會遇到的“坑”


性能度量與損失函數

機器學習的三要素就是:表示,評估和優化。正如我們在《非參數模型》中提到的:

機器學習分為表示、評估和優化。表示指的是將樣本空間映射到一個合適的特徵空間,一般地,我們更青睞於這樣的表示是低維度的,是更加稀疏交互的,同時也希望是相互獨立的。而評估指的是模型在數據上表現的量化形式,我們選取合適的函數來表示什麼樣子的模型是好的,性能度量就是評估。在前兩步都完成了以後,最後要做的就是優化,就是對評估函數進行求解,找出最合適的解,來確定最終的模型。


所謂的性能度量(performance measure)就是關於真實值和預測值的關係,真實值與預測值越接近,或者說真實的分佈與預測分佈越接近,性能越好。對於迴歸問題,我們可以選用均方誤差(mean squared error),絕對誤差(absolute Loss),決定係數(coefficient of determination )以及Huber Loss來度量模型的性能,對於分類問題,我們可以用準確率,錯誤率,或者得到混淆矩陣,進一步得到查準率(precision)、查全率(recall)以及P-R曲線和ROC曲線。

我們可以很容易想到,損失函數(Loss function)也是這樣一回事情,真實值與預測值差別越大,Loss越大,我們的優化的目標就是減小Loss。從評估的角度來說,損失函數和性能度量所起到的作用是相同的,那麼我們為什麼既要有損失函數,也有要性能評估呢?事實上,常見的均方誤差:


「週末AI課堂」理解損失函數(理論篇)機器學習你會遇到的“坑”


既可以被當作性能度量,同時也是迴歸問題的損失函數。但在更多的問題中,我們會發現,我們往往會為了減小模型的錯誤率,並不直接優化錯誤率,而是會優化另一個函數,比如在logistic迴歸中,我們會優化對數似然,在SVM中,我們會優化hinge loss,在adaboost中會優化指數損失。

「週末AI課堂」理解損失函數(理論篇)機器學習你會遇到的“坑”


期望風險與經驗風險


以二分類問題為例,我們的錯誤率,也就是0-1損失函數,可以定義為:


「週末AI課堂」理解損失函數(理論篇)機器學習你會遇到的“坑”



如果我們的模型f攜帶參數θ,那麼我們的任務可以是找到最佳的θ:


「週末AI課堂」理解損失函數(理論篇)機器學習你會遇到的“坑”



但這樣的函數並不是連續的,因為參數的變化會反映到錯誤率上,而錯誤率的變化不可能是連續的,當我們預測對樣本每增加一個,錯誤率就會躍變1/m,如果我們採用梯度下降或者牛頓法去優化,就會利用到它的一階導數甚至二階導數,會發現導數根本不存在。

所以損失函數一定要是連續的,這是尋找損失函數的第一個條件。此外,根本性的問題在於,我們想優化的根本不是經驗風險,所謂的經驗風險,如同上式,是定義在訓練集上的樣本上損失;我們真正想優化的是期望風險,定義在全部樣本(包含測試集)的損失,用期望來表示:


「週末AI課堂」理解損失函數(理論篇)機器學習你會遇到的“坑”



將其拆開就是:


「週末AI課堂」理解損失函數(理論篇)機器學習你會遇到的“坑”



但是概率分佈P(x,y)未知的話,我們連期望風險都無法計算,更無法將其最小化。但我們使用的數據越多,根據大數定律,期望風險也就越接近於經驗風險,注意到,我們的聯合分佈還可以寫為:


「週末AI課堂」理解損失函數(理論篇)機器學習你會遇到的“坑”



聯合分佈可以被拆為先驗概率和條件概率。但是當我們可以假設模型的概率分佈時,比如線性迴歸假設了高斯分佈,logistic迴歸假設了伯努利分佈,我們就可以利用極大似然估計來逼近期望風險,這也叫做一致性(consistency ),這個是我們尋找損失的函數第二個條件。

如果是連續的凸函數,在0處可導,且導數小於零,就具備與0-1損失函數的一致性,我們把這些損失函數叫做替代損失(Surrogate loss),值得注意的是,這是我們選用凸函數的最重要的原因,雖然凸函數具備局部最小值就是全局最小值的性質,但主要是為了計算上的便利,而非本質意義上的。


「週末AI課堂」理解損失函數(理論篇)機器學習你會遇到的“坑”


如圖,除去Perceptron Loss(我們會在後續的深度學習中講解),其餘的Loss function均可以給出0-1損失的上界,也就是說,在優化替代損失的時候,也就優化了原本的損失函數。

「週末AI課堂」理解損失函數(理論篇)機器學習你會遇到的“坑”


結構風險與正則化


我們在《貝葉斯的迴歸模型》中曾經把嶺迴歸的正則化項歸結於高斯先驗,把LASSO的正則化項歸結於拉普拉斯先驗,那麼從損失函數的構造角度來看,所謂正則化項,描述的其實是模型的複雜度,模型的複雜度越高,過擬合的風險也就越大,所謂的結構風險就是指模型本身結構的複雜度。添加結構風險的Loss Function一般形式就是:


「週末AI課堂」理解損失函數(理論篇)機器學習你會遇到的“坑”



結構風險加上經驗風險,是在數據量有限的情況下,為了更好的近似期望風險的策略,這一策略的本質意義是,是希望在模型擬合數據能力和複雜度之間取得平衡,擬合數據相同的模型,我們偏向於複雜度低的模型,複雜度相同的模型,我們偏向於擬合得好的模型。雖然我們早就知道了正則化,但從這樣的思路去理解正則話會使得我們在神經網絡這樣解釋能力極差的模型中,也可以添加相應對連接權重的正則化項:


「週末AI課堂」理解損失函數(理論篇)機器學習你會遇到的“坑”



「週末AI課堂」理解損失函數(理論篇)機器學習你會遇到的“坑”


讀芯君開扒

課堂TIPS

• 有人認為,凸函數在統計學習中最好的性質就是局部最優即全局最優,這樣算法就不用擔心其會陷入局部最優而非全局最優,但在神經網絡這樣極其複雜的參數空間中,我們有充足的理由不去過分擔心全局最優的問題。從這個意義上來說,尋找一致性的連續的損失函數才是最關鍵的問題。

• 對於某些模型,結構風險天然就被包含在了模型之中,比如SVM,它的結構風險項是劃分超平面間隔的大小。

• 有的人認為,什麼模型就只能用什麼損失函數,因為其他的損失函數,書上沒有講過,這樣的看法是片面的,logistic迴歸這樣一種廣義的線性模型也可以用平方損失函數,只是平方損失並不會滿足一致性,得到的結果無法改善原來的損失。


「週末AI課堂」理解損失函數(理論篇)機器學習你會遇到的“坑”


我們一起探討AI落地的最後一公里


分享到:


相關文章: