機器學習基礎(三)
在本文中着重介紹機器學習中的目標函數(代價函數,Cost Function)以及損失函數(Loss Function),並對涉及到的一些數學概念(最大似然函數、交叉熵、最小二乘法)進行相應的闡述和辨析。
4. 目標函數
4.1 為什么要使用目標函數
- 為了得到訓練邏輯回歸模型的參數,需要一個目標函數,通過訓練目標函數來得到參數。
- 用於找到最優解的目的函數。
4.2 目標函數的作用原理
在回歸問題中,通過目標函數來求解最優解,常用的是平方誤差(最小二乘線性回歸)代價函數。假設函數圖像如圖2-4所示,當參數發生變化時,假設函數狀態也會隨着變化。
想要擬合圖中的離散點,我們需要盡可能找到最優的和來使這條直線更能代表所有數據。如何找到最優解呢,這就需要使用代價函數來求解,以平方誤差代價函數為例,假設函數為。 平方誤差代價函數的主要思想就是將實際數據給出的值與擬合出的線的對應值做差,求出擬合出的直線與實際的差距。在實際應用中,為了避免因個別極端數據產生的影響,采用類似方差再取二分之一的方式來減小個別數據的影響。因此,引出代價函數:
最優解即為代價函數的最小值。如果是1個參數,代價函數一般通過二維曲線便可直觀看出。如果是2個參數,代價函數通過三維圖像可看出效果,參數越多,越復雜。 當參數為2個時,代價函數是三維圖像。
4.3 為什么目標函數是負的
目標函數存在一個下界,在優化過程當中,如果優化算法能夠使目標函數不斷減小,根據單調有界准則(參見優化方法),這個優化算法就能證明是收斂有效的。 只要設計的目標函數有下界,基本上都可以,代價函數非負更為方便。
4.4 常見的目標函數
4.4.1 二次代價函數(quadratic cost):
其中,\(J\)表示代價函數,\(x\)表示樣本,\(y\)表示實際值,\(a\)表示輸出值,\(n\)表示樣本的總數。使用一個樣本為例簡單說明,此時二次代價函數為:
假如使用梯度下降法(Gradient descent)來調整權值參數的大小,權值\(w\)和偏置\(b\)的梯度推導如下:
其中,\(z\)表示神經元的輸入,\(a=\sigma(z)\)其中\(z=wx+b\),\(\sigma\)表示激活函數。權值\(w\)和偏置\(b\)的梯度跟激活函數的梯度成正比,激活函數的梯度越大,權值\(w\)和偏置\(b\)的大小調整得越快,訓練收斂得就越快。
注:神經網絡常用的激活函數為sigmoid函數,該函數的曲線如下圖2-6所示:
如上圖所示,對0.88和0.98兩個點進行比較:
假設目標是收斂到1.0。0.88離目標1.0比較遠,梯度比較大,權值調整比較大。0.98離目標1.0比較近,梯度比較小,權值調整比較小。調整方案合理。
假如目標是收斂到0。0.88離目標0比較近,梯度比較大,權值調整比較大。0.98離目標0比較遠,梯度比較小,權值調整比較小。調整方案不合理。
原因:在使用sigmoid函數的情況下, 初始的代價(誤差)越大,導致訓練越慢。
4.4.2 交叉熵代價函數(cross-entropy):
公式的推導:從兩個方面考慮
大佬的推導
其中,\(J\)表示代價函數,\(x\)表示樣本,\(y\)表示實際值,\(a\)表示輸出值,\(a=\sigma(z)\)其中\(z=wx+b\),\(n\)表示樣本的總數。
權值\(w\)和偏置\(b\)的梯度推導如下:
最好自己手動推一下 加深對其的理解
用隱函數求導和鏈式求導法則得出:
推導公式時需要用到Sigmod函數一基本性質:\(/sigma\)函數導數的性質:\(\sigma'(z)=\sigma(z)(1-\sigma(z))\)
當誤差越大時,梯度就越大,權值\(w\)和偏置\(b\)調整就越快,訓練的速度也就越快。
這是一個令人興奮的表達式,優雅而富有深意。讓我們注意一下這個式子中最為關鍵的一項σ(z)−y ,它其實是告訴我們學習的誤差越大,你得到的導數值越大,曲線下降的越快,你的學習速度更快,網絡收斂的更快。而且損失對於權重系數的偏導數只與誤差有關,且激活函數的導數值無
二次代價函數適合輸出神經元是線性的情況,交叉熵代價函數適合輸出神經元是S型函數的情況。
4.4.3對數似然代價函數(log-likelihood cost):
對數似然函數常用來作為softmax回歸的目標函數。深度學習中普遍的做法是將softmax作為最后一層,此時常用的代價函數是對數似然代價函數。
對數似然代價函數與softmax的組合和交叉熵與sigmoid函數的組合非常相似。對數似然代價函數在二分類時可以化簡為交叉熵代價函數的形式。
對於對數似然函數的推導:主要是Softmax函數的導數
在tensorflow中:
與sigmoid搭配使用的交叉熵函數:tf.nn.sigmoid_cross_entropy_with_logits()
。
與softmax搭配使用的交叉熵函數:tf.nn.softmax_cross_entropy_with_logits()
。
在pytorch中:
與sigmoid搭配使用的交叉熵函數:torch.nn.BCEWithLogitsLoss()
。
與softmax搭配使用的交叉熵函數:torch.nn.CrossEntropyLoss()
。
為什么用交叉熵代替二次代價函數
(1)為什么不用二次方代價函數
由上一節可知,權值\(w\)和偏置\(b\)的偏導數為\(\frac{\partial J}{\partial w}=(a-y)\sigma'(z)x\),\(\frac{\partial J}{\partial b}=(a-y)\sigma'(z)\), 偏導數受激活函數的導數影響,sigmoid函數導數在輸出接近0和1時非常小,導數小,差值error也小,會導致一些實例在剛開始訓練時學習得非常慢。
(2)為什么要用交叉熵
交叉熵函數權值\(w\)和偏置\(b\)的梯度推導為:
由以上公式可知,權重學習的速度受到\(\sigma{(z)}-y\)影響,更大的誤差,就有更快的學習速度,避免了二次代價函數方程中因\(\sigma'{(z)}\)導致的學習緩慢的情況。
5. 損失函數
5.1 什么是損失函數
損失函數(Loss Function)又叫做誤差函數,用來衡量算法的運行情況,估量模型的預測值與真實值的不一致程度,是一個非負實值函數,通常使用\( L(Y, f(x))\)來表示。損失函數越小,模型的魯棒性就越好。損失函數是經驗風險函數的核心部分,也是結構風險函數重要組成部分。
經驗風險函數和結構風險函數的解釋,見下面章節代價函數 損失函數和目標函數的區別。
5.2 常見的損失函數
機器學習通過對算法中的目標函數進行不斷求解優化,得到最終想要的結果。分類和回歸問題中,通常使用損失函數或代價函數作為目標函數。
損失函數用來評價預測值和真實值不一樣的程度。通常損失函數越好,模型的性能也越好。
損失函數可分為經驗風險損失函數和結構風險損失函數。經驗風險損失函數指預測結果和實際結果的差別,結構風險損失函數是在經驗風險損失函數上加上正則項。
下面介紹常用的損失函數:
(1)0-1損失函數
如果預測值和目標值相等,值為0,如果不相等,值為1。
一般的在實際使用中,相等的條件過於嚴格,可適當放寬條件:
(2)絕對值損失函數
和0-1損失函數相似,絕對值損失函數表示為:
(3)平方損失函數
這點可從最小二乘法和歐幾里得距離角度理解。最小二乘法的原理是,最優擬合曲線應該使所有點到回歸直線的距離和最小。
(4)對數損失函數
常見的邏輯回歸使用的就是對數損失函數,有很多人認為邏輯回歸的損失函數是平方損失,其實不然。邏輯回歸它假設樣本服從伯努利分布(0-1分布),進而求得滿足該分布的似然函數,接着取對數求極值等。邏輯回歸推導出的經驗風險函數是最小化負的似然函數,從損失函數的角度看,就是對數損失函數。
(6)指數損失函數
指數損失函數的標准形式為:
例如AdaBoost就是以指數損失函數為損失函數。
(7)Hinge損失函數
Hinge損失函數的標准形式如下:
統一的形式:
其中y是預測值,范圍為(-1,1),t為目標值,其為-1或1。
在線性支持向量機中,最優化問題可等價於
上式相似於下式
其中\(l(wx_i+by_i)\)是Hinge損失函數,\(\Vert w\Vert ^2\)可看做為正則化項。
5.3 邏輯回歸為什么使用對數損失函數
-
對於似然函數的理解:
似然則用來描述已知隨機變量輸出結果時,未知參數的可能取值。似然函數的重要性不是它的具體取值,而是當參數變化時函數到底變小還是變大。對同一個似然函數,如果存在一個參數值,使得它的函數值達到最大的話,那么這個值就是最為“合理”的參數值。
最大似然函數: 是指找出一個(θ)的組合,使得\(L(θ)=L(x1,x2,…,xn;θ)=ΠP(xi;θ\)最大化,即使得樣本數據出現的概率最大化
似然函數取得最大值表示相應的參數能夠使得統計模型最為合理
從這樣一個想法出發,最大似然估計的做法是: -
首先選取似然函數(一般是 概率密度函數或概率質量函數),
-
整理之后求最大值。實際應用中一般會取似然函數的對數作為求最大值的函數,這樣求出的最大值和直接求最大值得到的結果是相同的。
統計學的觀點始終是認為樣本的出現是基於一個分布的。那么我們去假設這個分布為f,里面有參數theta。對於不同的theta,樣本的分布不一樣。f(x|θ)表示的就是在給定參數theta的情況下,x出現的可能性多大。L(θ|x)表示的是在給定樣本x的時候,哪個參數theta使得x出現的可能性多大。
假設邏輯回歸模型
假設邏輯回歸模型的概率分布是伯努利分布0-1兩點分布,其概率質量函數為:
其似然函數為:
對數似然函數為:
對數函數在單個數據點上的定義為:
則全局樣本損失函數為:
由此可看出,對數損失函數與極大似然估計的對數似然函數本質上是相同的。所以邏輯回歸直接采用對數損失函數。
5.4 對數損失函數是如何度量損失的
例如,在高斯分布中,我們需要確定均值和標准差。
如何確定這兩個參數?最大似然估計是比較常用的方法。最大似然的目標是找到一些參數值,這些參數值對應的分布可以最大化觀測到數據的概率。
因為需要計算觀測到所有數據的全概率,即所有觀測到的數據點的聯合概率。現考慮如下簡化情況:
(1)假設觀測到每個數據點的概率和其他數據點的概率是獨立的。
(2)取自然對數。
假設觀測到單個數據點\(x_i(i=1,2,...n)\)的概率為:(正態分布)
(3)其聯合概率為:連乘取似然函數
對上式取自然對數,可得:
根據對數定律,上式可以化簡為:
然后求導為:
上式左半部分為對數損失函數。損失函數越小越好,因此我們令等式左半的對數損失函數為0,可得:
同理,可計算\(\sigma\)。