在迴歸問題中,經過目標函數來求解最優解,經常使用的是平方偏差(最小二乘線性迴歸)代價函數。假設函數圖像如圖2-4所示,當參數發生變化時,假設函數狀態也會隨着變化。
想要擬合圖中的離散點,咱們須要儘量找到最優的和來使這條直線更能表明全部數據。如何找到最優解呢,這就須要使用代價函數來求解,以平方偏差代價函數爲例,假設函數爲。 平方偏差代價函數的主要思想就是將實際數據給出的值與擬合出的線的對應值作差,求出擬合出的直線與實際的差距。在實際應用中,爲了不因個別極端數據產生的影響,採用相似方差再取二分之一的方式來減少個別數據的影響。所以,引出代價函數:html
最優解即爲代價函數的最小值。若是是1個參數,代價函數通常經過二維曲線即可直觀看出。若是是2個參數,代價函數經過三維圖像可看出效果,參數越多,越複雜。 當參數爲2個時,代價函數是三維圖像。git
目標函數存在一個下界,在優化過程中,若是優化算法可以使目標函數不斷減少,根據單調有界準則(參見優化方法),這個優化算法就能證實是收斂有效的。 只要設計的目標函數有下界,基本上均可以,代價函數非負更爲方便。算法
其中,\(J\)表示代價函數,\(x\)表示樣本,\(y\)表示實際值,\(a\)表示輸出值,\(n\)表示樣本的總數。使用一個樣本爲例簡單說明,此時二次代價函數爲:網絡
假如使用梯度降低法(Gradient descent)來調整權值參數的大小,權值\(w\)和偏置\(b\)的梯度推導以下:機器學習
其中,\(z\)表示神經元的輸入,\(a=\sigma(z)\)其中\(z=wx+b\),\(\sigma\)表示激活函數。權值\(w\)和偏置\(b\)的梯度跟激活函數的梯度成正比,激活函數的梯度越大,權值\(w\)和偏置\(b\)的大小調整得越快,訓練收斂得就越快。函數
注:神經網絡經常使用的激活函數爲sigmoid函數,該函數的曲線以下圖2-6所示:
如上圖所示,對0.88和0.98兩個點進行比較:
假設目標是收斂到1.0。0.88離目標1.0比較遠,梯度比較大,權值調整比較大。0.98離目標1.0比較近,梯度比較小,權值調整比較小。調整方案合理。
假如目標是收斂到0。0.88離目標0比較近,梯度比較大,權值調整比較大。0.98離目標0比較遠,梯度比較小,權值調整比較小。調整方案不合理。
緣由:在使用sigmoid函數的狀況下, 初始的代價(偏差)越大,致使訓練越慢。性能
公式的推導:從兩個方面考慮
大佬的推導學習
其中,\(J\)表示代價函數,\(x\)表示樣本,\(y\)表示實際值,\(a\)表示輸出值,\(a=\sigma(z)\)其中\(z=wx+b\),\(n\)表示樣本的總數。
權值\(w\)和偏置\(b\)的梯度推導以下:優化
最好本身手動推一下 加深對其的理解spa
用隱函數求導和鏈式求導法則得出:
推導公式時須要用到Sigmod函數一基本性質:\(/sigma\)函數導數的性質:\(\sigma'(z)=\sigma(z)(1-\sigma(z))\)
當偏差越大時,梯度就越大,權值\(w\)和偏置\(b\)調整就越快,訓練的速度也就越快。
這是一個使人興奮的表達式,優雅而富有深意。讓咱們注意一下這個式子中最爲關鍵的一項σ(z)−y ,它實際上是告訴咱們學習的偏差越大,你獲得的導數值越大,曲線降低的越快,你的學習速度更快,網絡收斂的更快。並且損失對於權重係數的偏導數只與偏差有關,且激活函數的導數值無
二次代價函數適合輸出神經元是線性的狀況,交叉熵代價函數適合輸出神經元是S型函數的狀況。
對數似然函數經常使用來做爲softmax迴歸的目標函數。深度學習中廣泛的作法是將softmax做爲最後一層,此時經常使用的代價函數是對數似然代價函數。
對數似然代價函數與softmax的組合和交叉熵與sigmoid函數的組合很是類似。對數似然代價函數在二分類時能夠化簡爲交叉熵代價函數的形式。
對於對數似然函數的推導:主要是Softmax函數的導數
在tensorflow中:
與sigmoid搭配使用的交叉熵函數:tf.nn.sigmoid_cross_entropy_with_logits()
。
與softmax搭配使用的交叉熵函數:tf.nn.softmax_cross_entropy_with_logits()
。
在pytorch中:
與sigmoid搭配使用的交叉熵函數:torch.nn.BCEWithLogitsLoss()
。
與softmax搭配使用的交叉熵函數:torch.nn.CrossEntropyLoss()
。
爲何用交叉熵代替二次代價函數
(1)爲何不用二次方代價函數
由上一節可知,權值\(w\)和偏置\(b\)的偏導數爲\(\frac{\partial J}{\partial w}=(a-y)\sigma'(z)x\),\(\frac{\partial J}{\partial b}=(a-y)\sigma'(z)\), 偏導數受激活函數的導數影響,sigmoid函數導數在輸出接近0和1時很是小,導數小,差值error也小,會致使一些實例在剛開始訓練時學習得很是慢。
(2)爲何要用交叉熵
交叉熵函數權值\(w\)和偏置\(b\)的梯度推導爲:
由以上公式可知,權重學習的速度受到\(\sigma{(z)}-y\)影響,更大的偏差,就有更快的學習速度,避免了二次代價函數方程中因\(\sigma'{(z)}\)致使的學習緩慢的狀況。
損失函數(Loss Function)又叫作偏差函數,用來衡量算法的運行狀況,估量模型的預測值與真實值的不一致程度,是一個非負實值函數,一般使用\( L(Y, f(x))\)來表示。損失函數越小,模型的魯棒性就越好。損失函數是經驗風險函數的核心部分,也是結構風險函數重要組成部分。
經驗風險函數和結構風險函數的解釋,見下面章節代價函數 損失函數和目標函數的區別。
機器學習經過對算法中的目標函數進行不斷求解優化,獲得最終想要的結果。分類和迴歸問題中,一般使用損失函數或代價函數做爲目標函數。
損失函數用來評價預測值和真實值不同的程度。一般損失函數越好,模型的性能也越好。
損失函數可分爲經驗風險損失函數和結構風險損失函數。經驗風險損失函數指預測結果和實際結果的差異,結構風險損失函數是在經驗風險損失函數上加上正則項。
下面介紹經常使用的損失函數:
(1)0-1損失函數
若是預測值和目標值相等,值爲0,若是不相等,值爲1。
通常的在實際使用中,相等的條件過於嚴格,可適當放寬條件:
(2)絕對值損失函數
和0-1損失函數類似,絕對值損失函數表示爲:
(3)平方損失函數
這點可從最小二乘法和歐幾里得距離角度理解。最小二乘法的原理是,最優擬合曲線應該使全部點到迴歸直線的距離和最小。
(4)對數損失函數
常見的邏輯迴歸使用的就是對數損失函數,有不少人認爲邏輯迴歸的損失函數是平方損失,其實否則。邏輯迴歸它假設樣本服從伯努利分佈(0-1分佈),進而求得知足該分佈的似然函數,接着取對數求極值等。邏輯迴歸推導出的經驗風險函數是最小化負的似然函數,從損失函數的角度看,就是對數損失函數。
(6)指數損失函數
指數損失函數的標準形式爲:
例如AdaBoost就是以指數損失函數爲損失函數。
(7)Hinge損失函數
Hinge損失函數的標準形式以下:
統一的形式:
其中y是預測值,範圍爲(-1,1),t爲目標值,其爲-1或1。
在線性支持向量機中,最優化問題可等價於
上式類似於下式
其中\(l(wx_i+by_i)\)是Hinge損失函數,\(\Vert w\Vert ^2\)可看作爲正則化項。
對於似然函數的理解:
似然則用來描述已知隨機變量輸出結果時,未知參數的可能取值。似然函數的重要性不是它的具體取值,而是當參數變化時函數到底變小仍是變大。對同一個似然函數,若是存在一個參數值,使得它的函數值達到最大的話,那麼這個值就是最爲「合理」的參數值。
最大似然函數: 是指找出一個(θ)的組合,使得\(L(θ)=L(x1,x2,…,xn;θ)=ΠP(xi;θ\)最大化,即便得樣本數據出現的機率最大化
似然函數取得最大值表示相應的參數可以使得統計模型最爲合理
從這樣一個想法出發,最大似然估計的作法是:
首先選取似然函數(通常是 機率密度函數或機率質量函數),
整理以後求最大值。實際應用中通常會取似然函數的對數做爲求最大值的函數,這樣求出的最大值和直接求最大值獲得的結果是相同的。
統計學的觀點始終是認爲樣本的出現是基於一個分佈的。那麼咱們去假設這個分佈爲f,裏面有參數theta。對於不一樣的theta,樣本的分佈不同。f(x|θ)表示的就是在給定參數theta的狀況下,x出現的可能性多大。L(θ|x)表示的是在給定樣本x的時候,哪一個參數theta使得x出現的可能性多大。
假設邏輯迴歸模型
假設邏輯迴歸模型的機率分佈是伯努利分佈0-1兩點分佈,其機率質量函數爲:
其似然函數爲:
對數似然函數爲:
對數函數在單個數據點上的定義爲:
則全局樣本損失函數爲:
由此可看出,對數損失函數與極大似然估計的對數似然函數本質上是相同的。因此邏輯迴歸直接採用對數損失函數。
例如,在高斯分佈中,咱們須要肯定均值和標準差。
如何肯定這兩個參數?最大似然估計是比較經常使用的方法。最大似然的目標是找到一些參數值,這些參數值對應的分佈能夠最大化觀測到數據的機率。
由於須要計算觀測到全部數據的全機率,即全部觀測到的數據點的聯合機率。現考慮以下簡化狀況:
(1)假設觀測到每一個數據點的機率和其餘數據點的機率是獨立的。
(2)取天然對數。
假設觀測到單個數據點\(x_i(i=1,2,...n)\)的機率爲:(正態分佈)
(3)其聯合機率爲:連乘取似然函數
對上式取天然對數,可得:
根據對數定律,上式能夠化簡爲:
而後求導爲:
上式左半部分爲對數損失函數。損失函數越小越好,所以咱們令等式左半的對數損失函數爲0,可得:
同理,可計算\(\sigma\)。