目標函數、損失函數、代價函數

http://www.cnblogs.com/Belter/p/6653773.html

注:代價函數(有的地方也叫損失函數,Loss Function)在機器學習中的每一種算法中都很重要,因爲訓練模型的過程就是優化代價函數的過程,代價函數對每個參數的偏導數就是梯度下降中提到的梯度,防止過擬合時添加的正則化項也是加在代價函數後面的。在學習相關算法的過程中,對代價函數的理解也在不斷的加深,在此做一個小結。

 

1. 什麼是代價函數?


假設有訓練樣本(x, y),模型爲h,參數爲θ。h(θ) = θTx(θT表示θ的轉置)。

(1)概況來講,任何能夠衡量模型預測出來的值h(θ)與真實值y之間的差異的函數都可以叫做代價函數C(θ),如果有多個樣本,則可以將所有代價函數的取值求均值,記做J(θ)。因此很容易就可以得出以下關於代價函數的性質:

  • 對於每種算法來說,代價函數不是唯一的;
  • 代價函數是參數θ的函數;
  • 總的代價函數J(θ)可以用來評價模型的好壞,代價函數越小說明模型和參數越符合訓練樣本(x, y);
  • J(θ)是一個標量;

(2)當我們確定了模型h,後面做的所有事情就是訓練模型的參數θ。那麼什麼時候模型的訓練才能結束呢?這時候也涉及到代價函數,由於代價函數是用來衡量模型好壞的,我們的目標當然是得到最好的模型(也就是最符合訓練樣本(x, y)的模型)。因此訓練參數的過程就是不斷改變θ,從而得到更小的J(θ)的過程。理想情況下,當我們取到代價函數J的最小值時,就得到了最優的參數θ,記爲:

 

minθJ(θ)

 

例如,J(θ) = 0,表示我們的模型完美的擬合了觀察的數據,沒有任何誤差。

(3)在優化參數θ的過程中,最常用的方法是梯度下降,這裏的梯度就是代價函數J(θ)對θ1, θ2, ..., θn的偏導數。由於需要求偏導,我們可以得到另一個關於代價函數的性質:

  • 選擇代價函數時,最好挑選對參數θ可微的函數(全微分存在,偏導數一定存在)

 

2. 代價函數的常見形式


經過上面的描述,一個好的代價函數需要滿足兩個最基本的要求:能夠評價模型的準確性,對參數θ可微。 

 

2.1 均方誤差

在線性迴歸中,最常用的是均方誤差(Mean squared error),具體形式爲:

 

J(θ0,θ1)=12m∑i=1m(y^(i)−y(i))2=12m∑i=1m(hθ(x(i))−y(i))2

 

m:訓練樣本的個數;

hθ(x):用參數θ和x預測出來的y值;

y:原訓練樣本中的y值,也就是標準答案

上角標(i):第i個樣本

 

2.2 交叉熵

在邏輯迴歸中,最常用的是代價函數是交叉熵(Cross Entropy),交叉熵是一個常見的代價函數,在神經網絡中也會用到。下面是《神經網絡與深度學習》一書對交叉熵的解釋:

交叉熵是對「出乎意料」(譯者注:原文使用suprise)的度量。神經元的目標是去計算函數y, 且y=y(x)。但是我們讓它取而代之計算函數a, 且a=a(x)。假設我們把a當作y等於1的概率,1−a是y等於0的概率。那麼,交叉熵衡量的是我們在知道y的真實值時的平均「出乎意料」程度。當輸出是我們期望的值,我們的「出乎意料」程度比較低;當輸出不是我們期望的,我們的「出乎意料」程度就比較高。

 

在1948年,克勞德·艾爾伍德·香農將熱力學的熵,引入到信息論,因此它又被稱爲香農熵(Shannon Entropy),它是香農信息量(Shannon Information Content, SIC)的期望。香農信息量用來度量不確定性的大小:一個事件的香農信息量等於0,表示該事件的發生不會給我們提供任何新的信息,例如確定性的事件,發生的概率是1,發生了也不會引起任何驚訝;當不可能事件發生時,香農信息量爲無窮大,這表示給我們提供了無窮多的新信息,並且使我們無限的驚訝。更多解釋可以看這裏

 

J(θ)=−1m[∑i=1m(y(i)log⁡hθ(x(i))+(1−y(i))log⁡(1−hθ(x(i)))]

 

符號說明同上 

 

2.3 神經網絡中的代價函數

學習過神經網絡後,發現邏輯迴歸其實是神經網絡的一種特例(沒有隱藏層的神經網絡)。因此神經網絡中的代價函數與邏輯迴歸中的代價函數非常相似:

 

J(θ)=−1m[∑i=1m∑k=1K(yk(i)log⁡hθ(x(i))+(1−yk(i))log⁡(1−(hθ(x(i)))k)]

 

這裏之所以多了一層求和項,是因爲神經網絡的輸出一般都不是單一的值,K表示在多分類中的類型數。

例如在數字識別中,K=10,表示分了10類。此時對於某一個樣本來說,輸出的結果如下:

複製代碼
複製代碼
  1.1266e-004
  1.7413e-003
  2.5270e-003
  1.8403e-005
  9.3626e-003
  3.9927e-003
  5.5152e-003
  4.0147e-004
  6.4807e-003
  9.9573e-001
複製代碼
複製代碼

一個10維的列向量,預測的結果表示輸入的數字是0~9中的某一個的概率,概率最大的就被當做是預測結果。例如上面的預測結果是9。理想情況下的預測結果應該如下(9的概率是1,其他都是0):

複製代碼
複製代碼
   0
   0
   0
   0
   0
   0
   0
   0
   0
   1
複製代碼
複製代碼

比較預測結果和理想情況下的結果,可以看到這兩個向量的對應元素之間都存在差異,共有10組,這裏的10就表示代價函數裏的K,相當於把每一種類型的差異都累加起來了。

 

3. 代價函數與參數


代價函數衡量的是模型預測值h(θ) 與標準答案y之間的差異,所以總的代價函數J是h(θ)和y的函數,即J=f(h(θ), y)。又因爲y都是訓練樣本中給定的,h(θ)由θ決定,所以,最終還是模型參數θ的改變導致了J的改變。對於不同的θ,對應不同的預測值h(θ),也就對應着不同的代價函數J的取值。變化過程爲:

 

θ−−>h(θ)−−>J(θ)

 

θ引起了h(θ)的改變,進而改變了J(θ)的取值。爲了更直觀的看到參數對代價函數的影響,舉個簡單的例子:

有訓練樣本{(0, 0), (1, 1), (2, 2), (4, 4)},即4對訓練樣本,每個樣本對中第1個數表示x的值,第2個數表示y的值。這幾個點很明顯都是y=x這條直線上的點。如下圖:

abc

                                                                                                             圖1:不同參數可以擬合出不同的直線

 View Code

常數項爲0,所以可以取θ0=0,然後取不同的θ1,可以得到不同的擬合直線。當θ1=0時,擬合的直線是y=0,即藍色線段,此時距離樣本點最遠,代價函數的值(誤差)也最大;當θ1=1時,擬合的直線是y=x,即綠色線段,此時擬合的直線經過每一個樣本點,代價函數的值爲0。

通過下圖可以查看隨着θ1的變化,J(θ)的變化情況:

                                                                                                        圖2:代價函數J(θ)隨參數的變化而變化

 View Code

從圖中可以很直觀的看到θ對代價函數的影響,當θ1=1時,代價函數J(θ)取到最小值。因爲線性迴歸模型的代價函數(均方誤差)的性質非常好,因此也可以直接使用代數的方法,求J(θ)的一階導數爲0的點,就可以直接求出最優的θ值(正規方程法)。

 

4. 代價函數與梯度


 梯度下降中的梯度指的是代價函數對各個參數的偏導數,偏導數的方向決定了在學習過程中參數下降的方向,學習率(通常用α表示)決定了每步變化的步長,有了導數和學習率就可以使用梯度下降算法(Gradient Descent Algorithm)更新參數了。下圖中展示了只有兩個參數的模型運用梯度下降算法的過程。

 

 

 

下圖可以看做是代價函數J(θ)與參數θ做出的圖,曲面上的一個點(θ0, θ1, J(θ)),有無數條切線,在這些切線中與x-y平面(底面,相當於θ0, θ1)夾角最大的那條切線就是該點梯度的方向,沿該方向移動,會產生最大的高度變化(相對於z軸,這裏的z軸相當於代價函數J(θ))。

 

4.1 線性迴歸模型的代價函數對參數的偏導數

 

 還是以兩個參數爲例,每個參數都有一個偏導數,且綜合了所有樣本的信息。

 

4.2 邏輯迴歸模型的代價函數對參數的偏導數

根據邏輯迴歸模型的代價函數以及sigmoid函數

 

hθ(x)=g(θTx)

 

 

g(z)=11+e−z

 

得到對每個參數的偏導數爲

 

∂∂θjJ(θ)=∑i=1m(hθ(xi)−yi)xji

 

 詳細推導過程可以看這裏-邏輯迴歸代價函數的導數

作者:zzanswer
鏈接:https://www.zhihu.com/question/52398145/answer/209358209
來源:知乎
著作權歸作者所有。商業轉載請聯繫作者獲得授權,非商業轉載請註明出處。

首先給出結論:損失函數和代價函數是同一個東西,目標函數是一個與他們相關但更廣的概念,對於目標函數來說在有約束條件下的最小化就是損失函數(loss function)。

舉個例子解釋一下:(圖片來自Andrew Ng Machine Learning公開課視頻)

 

上面三個圖的函數依次爲 f_{1}(x) , f_{2}(x) , f_{3}(x) 。我們是想用這三個函數分別來擬合Price,Price的真實值記爲 Y 。

我們給定 x ,這三個函數都會輸出一個 f(X) ,這個輸出的 f(X) 與真實值 Y 可能是相同的,也可能是不同的,爲了表示我們擬合的好壞,我們就用一個函數來度量擬合的程度,比如:

L(Y,f(X)) = (Y-f(X))^2 ,這個函數就稱爲損失函數(loss function),或者叫代價函數(cost function)。損失函數越小,就代表模型擬合的越好

那是不是我們的目標就只是讓loss function越小越好呢?還不是。

這個時候還有一個概念叫風險函數(risk function)。風險函數是損失函數的期望,這是由於我們輸入輸出的 (X,Y) 遵循一個聯合分佈,但是這個聯合分佈是未知的,所以無法計算。但是我們是有歷史數據的,就是我們的訓練集, f(X) 關於訓練集的平均損失稱作經驗風險(empirical risk),即 \frac{1}{N}\sum_{i=1}^{N}L(y_{i},f(x_{i})) ,所以我們的目標就是最小化 \frac{1}{N}\sum_{i=1}^{N}L(y_{i},f(x_{i})) ,稱爲經驗風險最小化

到這裏完了嗎?還沒有。

如果到這一步就完了的話,那我們看上面的圖,那肯定是最右面的 f_3(x) 的經驗風險函數最小了,因爲它對歷史的數據擬合的最好嘛。但是我們從圖上來看 f_3(x)肯定不是最好的,因爲它過度學習歷史數據,導致它在真正預測時效果會很不好,這種情況稱爲過擬合(over-fitting)。

爲什麼會造成這種結果?大白話說就是它的函數太複雜了,都有四次方了,這就引出了下面的概念,我們不僅要讓經驗風險最小化,還要讓結構風險最小化。這個時候就定義了一個函數 J(f) ,這個函數專門用來度量模型的複雜度,在機器學習中也叫正則化(regularization)。常用的有 L_1 , L_2 範數。

到這一步我們就可以說我們最終的優化函數是:min\frac{1}{N}\sum_{i=1}^{N}L(y_{i},f(x_{i}))+\lambda J(f) ,即最優化經驗風險和結構風險,而這個函數就被稱爲目標函數

結合上面的例子來分析:最左面的 f_1(x) 結構風險最小(模型結構最簡單),但是經驗風險最大(對歷史數據擬合的最差);最右面的 f_3(x) 經驗風險最小(對歷史數據擬合的最好),但是結構風險最大(模型結構最複雜);而 f_2(x) 達到了二者的良好平衡,最適合用來預測未知數據集。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章