1. 程式人生 > >代價函式,損失函式,目標函式區別

代價函式,損失函式,目標函式區別

首先給出結論:

損失函式(Loss Function )是定義在單個樣本上的,算的是一個樣本的誤差。

代價函式(Cost Function )是定義在整個訓練集上的,是所有樣本誤差的平均,也就是損失函式的平均。

目標函式(Object Function)定義為:最終需要優化的函式。等於經驗風險+結構風險(也就是Cost 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) 達到了二者的良好平衡,最適合用來預測未知資料集。

二:詳解代價函式

什麼是代價函式

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

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

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

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

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

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

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

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

(1)線上性迴歸中,最常用的是均方誤差(Mean squared error),即

m:訓練樣本的個數;

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

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

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

(2)在邏輯迴歸中,最常用的是代價函式是交叉熵(Cross Entropy),交叉熵是一個常見的代價函式,在神經網路中也會用到。

回到線性迴歸模型中,訓練集和代價函式如下圖

如果我們還用J(θ)函式做為邏輯迴歸模型的代價函式,用H(x) = g(θ^T * x),曲線如下圖所示

發現J(θ)的曲線圖是"非凸函式",存在多個區域性最小值,不利於我們求解全域性最小值

因此,上述的代價函式對於邏輯迴歸是不可行的,我們需要其他形式的代價函式來保證邏輯迴歸的代價函式是凸函式。

這裡我們先對線性迴歸模型中的代價函式J(θ)進行簡單的改寫

用Cost(h(x), y) = 1/2(h(x) - y)^2 代替

在這裡我們選擇對數似然損失函式做為邏輯迴歸模型的代價函式,Cost函式可以表示如下

分析下這個代價函式

(1). 當y=1的時候,Cost(h(x), y) = -log(h(x))。h(x)的值域0~1,-log(h(x))的曲線圖,如下

從圖中可以看出

  1. h(x)的值趨近於1的時候,代價函式的值越小趨近於0,也就是說預測的值h(x)和訓練集結果y=1越接近,預測錯誤的代價越來越接近於0,分類結果為1的概率為1
  2. 當h(x)的值趨近於0的時候,代價函式的值無窮大,也就說預測的值h(x)和訓練集結果y=1越相反,預測錯誤的代價越來越趨於無窮大,分類結果為1的概率為0

(2). 當y=0的時候, Cost(h(x), y) = -log(1-h(x))。h(x)的值域0~1,-log(1-h(x))的曲線圖,如下

從圖中可以看出

  1. h(x)的值趨近於1的時候,代價函式的值趨於無窮大,也就是說預測的值h(x)和訓練集結果y=0越相反,預測錯誤的代價越來越趨於無窮大,分類結果為0的概率為1-h(x)等於0
  2. 當h(x)的值趨近於0的時候,代價函式的值越小趨近於0,也就說預測的值h(x)和訓練集結果y=0越接近,預測錯誤的代價越來越接近於0,分類結果為0的概率為1-h(x)等於1

為了統一表示,可以把Cost(h(x), y)表達成統一的式子,根據前面J(θ)的定義,J(θ)等於

特別說明: 

1. 當y=1的時候,第二項(1-y)log(1-h(x))等於0 

2. 當y=0的時候,ylog(h(x))等於0

從上面2點可以看出,J(θ)表示式符合前面定義

根據線性迴歸求代價函式的方法,可以用梯度下降演算法求解引數θ

從上圖可以看出,θj更新和線性迴歸中梯度下降演算法的θj更新一致,差別的是假設函式h(x)不同 

符號說明同上 

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

 :http://blog.csdn.net/chenguolinblog/article/details/52305257