代價函式,損失函式,目標函式區別
首先給出結論:
損失函式(Loss Function )是定義在單個樣本上的,算的是一個樣本的誤差。
代價函式(Cost Function )是定義在整個訓練集上的,是所有樣本誤差的平均,也就是損失函式的平均。
目標函式(Object Function)定義為:最終需要優化的函式。等於經驗風險+結構風險(也就是Cost Function + 正則化項)。
關於目標函式和代價函式的區別還有一種通俗的區別:
目標函式是最大化或者最小化,而代價函式是最小化
舉個例子解釋一下:(圖片來自Andrew Ng Machine Learning公開課視訊)
上面三個圖的函式依次為 , , 。我們是想用這三個函式分別來擬合Price,Price的真實值記為
我們給定 ,這三個函式都會輸出一個 ,這個輸出的 與真實值 可能是相同的,也可能是不同的,為了表示我們擬合的好壞,我們就用一個函式來度量擬合的程度,比如:
,這個函式就稱為損失函式(loss function),或者叫代價函式(cost function)(有的地方將損失函式和代價函式沒有細分也就是兩者等同的)。損失函式越小,就代表模型擬合的越好。
那是不是我們的目標就只是讓loss function越小越好呢?還不是。
這個時候還有一個概念叫風險函式(risk function)。風險函式是損失函式的期望,這是由於我們輸入輸出的 遵循一個聯合分佈,但是這個聯合分佈是未知的,所以無法計算。但是我們是有歷史資料的,就是我們的訓練集,
到這裡完了嗎?還沒有。
如果到這一步就完了的話,那我們看上面的圖,那肯定是最右面的 的經驗風險函式最小了,因為它對歷史的資料擬合的最好嘛。但是我們從圖上來看肯定不是最好的,因為它過度學習歷史資料,導致它在真正預測時效果會很不好,這種情況稱為過擬合(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