天天看點

解析損失函數、代價函數、目标函數

一、損失函數、代價函數、目标函數定義

首先給出結論:

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

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

目标函數(Object Function)定義為:最終需要優化的函數。等于經驗風險+結構風險(也就是Cost Function + 正則化項)。

二、目标函數和代價函數的差別

        關于目标函數和代價函數的差別還有一種通俗的差別:目标函數是最大化或者最小化,而代價函數是最小化。

       舉個例子解釋一下:(圖檔來自Andrew Ng Machine Learning公開課視訊)上面三個圖的函數依次為

解析損失函數、代價函數、目标函數

,

解析損失函數、代價函數、目标函數

,

解析損失函數、代價函數、目标函數

。我們是想用這三個函數分别來拟合Price,Price的真實值記為

解析損失函數、代價函數、目标函數

        我們給定 ,這三個函數都會輸出一個

解析損失函數、代價函數、目标函數

,這個輸出的

解析損失函數、代價函數、目标函數

與真實值

解析損失函數、代價函數、目标函數

可能是相同的,也可能是不同的,為了表示我們拟合的好壞,我們就用一個函數來度量拟合的程度,比如:

解析損失函數、代價函數、目标函數

,這個函數就稱為損失函數(loss function),或者叫代價函數(cost function)(有的地方将損失函數和代價函數沒有細分也就是兩者等同的)。

       損失函數越小,就代表模型拟合的越好。那是不是我們的目标就隻是讓loss function越小越好呢?還不是。這個時候還有一個概念叫風險函數(risk function)。風險函數是損失函數的期望,這是由于我們輸入輸出的

解析損失函數、代價函數、目标函數

遵循一個聯合分布,但是這個聯合分布是未知的,是以無法計算。但是我們是有曆史資料的,就是我們的訓練集,

解析損失函數、代價函數、目标函數

關于訓練集的平均損失稱作經驗風險(empirical risk),即

解析損失函數、代價函數、目标函數

,是以我們的目标就是最小化

解析損失函數、代價函數、目标函數

,稱為經驗風險最小化。

       到這裡完了嗎?還沒有。如果到這一步就完了的話,那我們看上面的圖,那肯定是最右面的

解析損失函數、代價函數、目标函數

的經驗風險函數最小了,因為它對曆史的資料拟合的最好嘛。但是我們從圖上來看

解析損失函數、代價函數、目标函數

肯定不是最好的,因為它過度學習曆史資料,導緻它在真正預測時效果會很不好,這種情況稱為過拟合(over-fitting)。

       為什麼會造成這種結果?大白話說就是它的函數太複雜了,都有四次方了,這就引出了下面的概念,我們不僅要讓經驗風險盡量小,還要讓結構風險盡量小。。這個時候就定義了一個函數

解析損失函數、代價函數、目标函數

,這個函數專門用來度量模型的複雜度,在機器學習中也叫正則化(regularization)。常用的有

解析損失函數、代價函數、目标函數

,

解析損失函數、代價函數、目标函數

範數。到這一步我們就可以說我們最終的優化函數是:

解析損失函數、代價函數、目标函數

,即最優化經驗風險和結構風險,而這個函數就被稱為目标函數。結合上面的例子來分析:最左面的

解析損失函數、代價函數、目标函數

結構風險最小(模型結構最簡單),但是經驗風險最大(對曆史資料拟合的最差);最右面的

解析損失函數、代價函數、目标函數

經驗風險最小(對曆史資料拟合的最好),但是結構風險最大(模型結構最複雜);而

解析損失函數、代價函數、目标函數

達到了二者的良好平衡,最适合用來預測未知資料集。

三、詳解代價函數

        什麼是代價函數?

        假設有訓練樣本(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))的曲線圖,如下

解析損失函數、代價函數、目标函數

從圖中可以看出h(x)的值趨近于1的時候,代價函數的值越小趨近于0,也就是說預測的值h(x)和訓練集結果y=1越接近,預測錯誤的代價越來越接近于0,分類結果為1的機率為1當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))的曲線圖,如下

解析損失函數、代價函數、目标函數

從圖中可以看出h(x)的值趨近于1的時候,代價函數的值趨于無窮大,也就是說預測的值h(x)和訓練集結果y=0越相反,預測錯誤的代價越來越趨于無窮大,分類結果為0的機率為1-h(x)等于0當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

參考連結:

【機器學習】代價函數,損失函數,目标函數差別

繼續閱讀