機器學習--代價函數

一、代價函數概述

機器學習的模型分爲能量模型和概率模型,知道概率分佈的可以直接用概率模型進行建模,比如貝葉斯分類器,不知道的就用能量模型,比如支持向量機。因爲一個系統穩定的過程就是能量逐漸減小的過程。

簡單理解,代價函數也就是通常建立的能量方程的一種,在機器學習中用來衡量預測值和真實值之間的誤差,越小越好。一般來說一個函數有解析解和數值解,解析解就是我們數學上可以用公式算出來的解,數值解是一種近似解,在解析解不存在或者工程實現比較複雜的時候,用例如梯度下降這些方法,迭代得到一個效果還可以接受的解。所以要求代價函數對參數可微。

代價函數、損失函數、目標函數並不一樣,這一點後邊再介紹,這篇文章就先只介紹代價函數。

  • 損失函數: 計算的是一個樣本的誤差

  • 代價函數: 是整個訓練集上所有樣本誤差的平均

  • 目標函數: 代價函數 + 正則化項

在實際中,損失函數和代價函數是同一個東西,目標函數是一個與他們相關但更廣的概念。

  • 代價函數(Cost Function): 在機器學習中,代價函數作用於整個訓練集,是整個樣本集的平均誤差,對所有損失函數值的平均。

二、代價函數的作用:

1.爲了得到訓練邏輯迴歸模型的參數,需要一個代價函數,通過訓練代價函數來得到參數。
2.用於找到最優解的目標函數。

三、代價函數的原理

在迴歸問題中,通過代價函數來求解最優解,常用的是平方誤差代價函數。有如下假設函數:
h(x)=A+Bxh(x)=A+Bx

假設函數中有A和B兩個參數,當參數發生變化時,假設函數狀態也會隨着變化。 如下圖所示
在這裏插入圖片描述
想要擬合圖中的離散點,我們需要儘可能找到最優的AAA和BBB來使這條直線更能代表所有數據。如何找到最優解呢,這就需要使用代價函數來求解,以平方誤差代價函數爲例,假設函數爲h(x)=θ0xh(x)=\theta_0x

平方誤差代價函數的主要思想就是將實際數據給出的值與擬合出的線的對應值做差,求出擬合出的直線與實際的差距。在實際應用中,爲了避免因個別極端數據產生的影響,採用類似方差再取二分之一的方式來減小個別數據的影響。因此,引出代價函數:

J(θ0,θ1)=12mi=1m(h(x(i))y(i))2J(\theta _0,\theta _1)=\frac{1}{2m}\sum_{i=1}^{m}(h(x^{(i)})-y^{(i)})^2
最優解即爲代價函數的最小值 minJ(θ0,θ1)minJ(\theta _0,\theta _1)
如果是 1 個參數,代價函數一般通過二維曲線便可直觀看出。如果是 2 個參數,代價函數通過三維圖像可看出效果,參數越多,越複雜。

四、代價函數非負:

目標函數存在一個下界,在優化過程當中,如果優化算法能夠使目標函數不斷減小,根據單調有界準則,這個優化算法就能證明是收斂有效的。
只要設計的目標函數有下界,基本上都可以,代價函數非負更爲方便。

五、代價函數分類

  1. 均方差代價函數
    在這裏插入圖片描述
    這個是來自吳恩達的機器學習課程裏面看到的損失函數,在線性迴歸模型裏面提出來的。表示模型所預測(假設)的輸出,是真實的輸出,即label。
    個人猜測,均方差應該是
    在這裏插入圖片描述
    由於對給定的數據集來說,n是確定的值,因此,可以等同於式(1)。

這個形式的代價函數計算Jacobian矩陣如下:
在這裏插入圖片描述

  1. 對數損失函數
    對數似然作爲代價函數是在RNN中看到的,公式如下:
    在這裏插入圖片描述
    表示真實目標在數據集中的條件概率的負對數。其意義在於,在很多預測目標概率的模型中,將最大概率對應的類型作爲輸出類型,因此,真實目標的預測概率越高,分類越準確,學習的目標是真實目標的預測概率最大化。而概率是小於1的,其對數值小於0,且對數是單調遞增的,因此,當負對數最小化,就等同於對數最大化,概率最大化。
    邏輯迴歸中的代價函數實際上就是對數似然的特殊表示的方式:
    在這裏插入圖片描述
    二項邏輯迴歸的輸入hθ(xi)h_{\theta}(x_i)是預測目標爲1的概率,y(t)y^{(t)}的值爲1或0.因此,1hθ(xi)1-h_{\theta}(x_i)目標爲0的概率爲,當真實的目標是1時,等式右邊第二項爲0,當真是目標爲0時,等式右邊第一項爲0,因此,對於單個樣本,L就是負對數似然。
    同理,對於softmax迴歸的概率函數爲
    在這裏插入圖片描述
    未添加權重懲罰項的代價函數爲
    在這裏插入圖片描述

3.交叉熵
交叉熵在神經網絡中基本都用交叉熵作爲代價函數。
在這裏插入圖片描述
這和邏輯迴歸的代價函數很像,y作爲真實的目標(label),不一定是二值的,且a不是預測目標的概率,而是神經網絡的輸出,
它的原理還不是很明白,據說在神經網絡中用交叉熵而不用均方差代價函數的原因是早期的神經元的激活函數是sigmoid函數,而此函數在大部分取值範圍的導數都很小,這樣使得參數的迭代很慢。
而交叉熵的產生過程網友是這樣推導的:
在這裏插入圖片描述
博客參考 吳恩達的機器學習公開課!

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