淺談代價函數

本身學了一段時間的機器學習和深度學習了,對於代價函數有些本身的淺顯認識,現總結以下:機器學習

1.代價函數的由來

對於機器學習而言,首先就是找到模型,創建好模型後,這時候須要作的就是找到該模型的解,有了模型如何求解呢,確定須要找到你要求解的函數吧,這個函數就是目標函數,也就是你要優化的代價函數。當我剛開始接觸的時候,產生這樣的疑惑,模型是不少方程的組合,直接求解不就好了麼,後來我發現有時候沒法直接對這些方程求解,須要找到另外的一個函數去對該方程求解。函數

可能上面我說的不夠明白,舉個例子解釋一下,對於線性迴歸而言,當你的模型是y=wX+b,此時你有的數據是X,y,此時你要獲得w和b,有了w,b後,你再給我x,我就能夠給你計算出y來吧。那麼該怎麼去求解w和b呢,當有一個x和一個y數據時,此時解就不少了,你能夠隨便擬合,可是當x,y有不少組數據時,怎麼才能更好的擬合呢,此時就須要咱們去尋找目標函數了,對於線性迴歸,咱們能夠把偏差平方的平均值看成目標函數即: (m/1)*($y$-y)^2^,通常咱們再乘1/2,$y$指的是經過擬合獲得的值。對於全部的x,y,只要當這個函數取得的值最小時,此時的w,b就是咱們要求的參數,此時擬合效果最好,因此目標函數就是代價函數。學習

代價意思就是去評估該擬合的效果是怎樣的,也就是偏差,也叫損失,損失函數指的是一組數據(即單個樣本)產生的偏差,而代價函數指的是全部樣本的損失和的平均值。優化

而在機器學習中要作的就是對代價函數進行優化,尋找使代價最小的方法,包括基於梯度的優化。這就是我對模型,目標函數,代價函數以及優化目標函數的理解。若是有說的不對的地方,但願能夠評論出來,我立刻進行修改。debug

2.代價函數的選擇

2.一、線性迴歸代價函數

通常咱們用預測值和實際值的平方差或者他們平方差的一半做爲損失函數深度學習

2.二、邏輯迴歸代價函數

可是在作邏輯迴歸的時候用到的損失函數不用這個,由於在學習線性迴歸的參數時,優化目標是凸優化,而邏輯迴歸的不是凸優化,梯度降低法極可能找不到全局最優值。邏輯迴歸的損失函數是
cost=-ylog$y$-(1-y)log(1-$y$)it

==推導過程:最大似然,即負的對數似然==
此時當y=0時,cost=-log(1-$y$),cost儘量小,那麼$y$就要儘量小,由於邏輯迴歸中$y$的範圍[0,1],因此此時$y$就會無限接近於0,當y等於1時,一樣能夠發現,此時$y$會無限接近於1。
那麼這個損失函數是怎麼求的呢?class

邏輯迴歸的$y$指的是p(y=1|x),即在x的條件y取1的機率。那麼y取0的機率就是1-$y$.因此換句話說就是(以二分類爲例,y只能爲0,1):
若是y=1,p(y|x)=$y$
若是y=0,p(y|x)=1-$y$

能夠把這兩個條件機率公式進行合併:神經網絡

p(y|x)=$y$^y^(1-$y$)^(1-y)^ (該公式的推導能夠本身推導證實下其正確性)

對於邏輯迴歸咱們的目標:以最大的機率去預測這個值(也就是預測能夠達到y值的機率)
因此咱們要作的就是去優化 $y$^y^(1-$y$)^(1-y)^ 達到最大值,在這取下log,由於log是單調遞增的函數

因此變爲了求 log($y$^y^(1-$y$)^(1-y)^) 的最大值

轉化一下變爲ylog$y$+(1-y)log(1-$y$)

這時候發現這就是上面提到的代價函數的負值,由於咱們是要使代價最小,因此給該函數加個負號就變成了損失函數即

cost=-ylog$y$-(1-y)log(1-$y$)

這僅僅是在一個樣本的條件下,在m個樣本時呢,當全部的樣本服從同一分佈而且相互獨立(能夠理解爲參數相同,各個樣本間不相互影響),那麼這些樣本的聯合機率(全部樣本同時發生的機率即p{y1|x1,y2|x2....})就是每一個樣本機率的乘積:

$\prod_{i=0}^m$ p(y^(i)^|x^(i)^)

此時咱們的目標就轉化成求該式的最大值,而後進行取log獲得
log $\prod_{i=0}^m$ p(y^(i)^|x^(i)^)

此時轉變爲求該式最大值,該式能夠轉變成以下形式

$\sum_{i=0}^m$ log (p(y^(i)^|x^(i)^))

根據上面對單個樣本損失函數的推導結果,使其轉化變爲代價函數的形式,最終變爲了

$\sum_{i=0}^m$ - (y^(i)^log$y$^(i)^+(1-y^(i)^)log(1-$y$^(i)^))
(由於訓練模型時,目標是讓代價函數最小化,因此間接使用最大似然,加了一個負號)
一般最後對成本函數進行適當的放縮,即最終的代價函數爲:

J=(1/m)$\sum_{i=0}^m$ - (y^(i)^log$y$^(i)^+(1-y^(i)^)log(1-$y$^(i)^))

注:
最大似然估計:即求出一組參數,使某個式子取得最大值。

2.三、神經網絡代價函數

其實神經網絡代價函數通常和上面的兩個代價函數相同,取決於你的模型,若是作迴歸就採用線性迴歸形式的代價函數,若是作分類就選擇邏輯迴歸形式的代價函數。

3.正則化的代價函數

對於採起了正則化的代價函數,實際上就是在未正則化的代價函數後面加上一個正則項,使權重衰減。對於該正則項能夠選擇L1範數,L2範數等,此處再也不深刻討論。

又到一點半了,程序還沒debug,但願看到這的你留下一個贊,您的點贊就是我前行的最大動力。

相關文章
相關標籤/搜索