機器學習之經常使用損失函數和優化方法

常見的損失函數有哪些?(這裏的損失函數嚴格來講是目標函數,通常都稱呼爲損失函數)算法

具體見:app

https://blog.csdn.net/iqqiqqiqqiqq/article/details/77413541機器學習

1)0-1損失函數函數

記錄分類錯誤的次數。學習

2)絕對值損失函數優化

一般用於迴歸中spa

3)平方損失函數.net

即真實值與預測值之差的平方和。一般用於線性模型中,如線性迴歸模型。之因此採用平方的形式,而非絕對值或三次方的形式,是由於最大似然估計(求損失函數的極小值)與最小化平方損失是等價的。blog

4)對數損失數學

5)指數損失函數

經常使用的優化方法有哪些?

對損失函數的優化:

當咱們對分類的Loss進行改進的時候,咱們要經過梯度降低,每次優化一個step大小的梯度,這個時候咱們就要求Loss對每一個權重矩陣的偏導,而後應用鏈式法則。

最小二乘法(主要是說線性迴歸中的優化算法)梯度降低法、牛頓法、擬牛頓法、共軛梯度法

詳細說一下梯度降低法

在求解機器學習算法的模型參數,即無約束優化問題時,梯度降低(Gradient Descent)是最常採用的方法之一,梯度降低不必定可以找到全局的最優解,有多是一個局部最優解。固然,若是損失函數是凸函數,梯度降低法獲得的解就必定是全局最優解。

1)梯度

在微積分裏面,對多元函數的參數求∂偏導數,把求得的各個參數的偏導數以向量的形式寫出來,就是梯度。

那麼這個梯度向量求出來有什麼意義呢?他的意義從幾何意義上講,就是函數變化增長最快的地方。或者說,沿着梯度向量的方向,更加容易找到函數的最大值。反過來講,沿着梯度向量相反的方向,也就是 -(∂f/∂x0, ∂f/∂y0)T的方向,梯度減小最快,也就是更加容易找到函數的最小值。

2)梯度降低與梯度上升

在機器學習算法中,在最小化損失函數時,能夠經過梯度降低法來一步步的迭代求解,經過啓發式的方式一步步迭代求解函數的最小值,獲得最小化的損失函數,和模型參數值。反過來,若是咱們須要求解損失函數的最大值,這時就須要用梯度上升法來迭代了。

  梯度降低法和梯度上升法是能夠互相轉化的。好比咱們須要求解損失函數f(θ)的最小值,這時咱們須要用梯度降低法來迭代求解。可是實際上,咱們能夠反過來求解損失函數 -f(θ)的最大值,這時梯度上升法就派上用場了。

3)梯度降低的算法調優

在使用梯度降低時,須要進行調優。

第1、算法的步長選擇。在前面的算法描述中,我提到取步長爲1,可是實際上取值取決於數據樣本,能夠多取一些值,從大到小,分別運行算法,看看迭代效果,若是損失函數的值在變小,說明取值有效,不然要增大步長。前面說了。步長太大,會致使迭代過快,甚至有可能錯過最優解。步長過小,迭代速度太慢,很長時間算法都不能結束。因此算法的步長鬚要屢次運行後才能獲得一個較爲優的值。

第2、算法參數的初始值選擇。初始值不一樣,得到的最小值也有可能不一樣,所以梯度降低求得的只是局部最小值;固然若是損失函數是凸函數則必定是最優解。因爲有局部最優解的風險,須要屢次用不一樣初始值運行算法,觀測損失函數的最小值,選擇損失函數最小化的初值。

第3、歸一化。因爲樣本不一樣特徵的取值範圍不同,可能致使迭代很慢,爲了減小特徵取值的影響,能夠對特徵數據歸一化,也就是對於每一個特徵x,求出它的指望x¯和標準差std(x),而後轉化爲x−x¯¯¯std(x)x−x¯std(x)

這樣特徵的新指望爲0,新方差爲1,迭代次數能夠大大加快。

4)梯度降低的種類

第1、批量梯度降低法。每次對參數的更新都須要用到整個訓練數據集,可以獲得全局最優解,可是當數據量很大時訓練速度會很慢。

第2、隨機梯度降低法。他是每次 只選用一個樣本進行迭代,訓練速度當然獲得很大提高,可是準確度降低了,獲得的極可能不是最優解。容易陷入到局部最優解中。一直不會收斂,只是在最小值附近波動

第3、小批量(部分)梯度降低法,它是以上二者的結合。

對於損失函數與模型訓練的理解

損失函數(loss function)是用來估量你模型的預測值f(x)與真實值Y的不一致程度,它是一個非負實值函數,一般使用L(Y, f(x))來表示,損失函數越小,模型的魯棒性就越好。損失函數是經驗風險函數的核心部分,也是結構風險函數重要組成部分。模型的結構風險函數包括了經驗風險項和正則項,一般能夠表示成以下式子:

                    

  一般損失函數(嚴格來講是目標函數)由上面公式的兩部分組成,前部分就是計算算法預測的值和訓練樣本真實標籤之間的距離,不一樣的距離計算方式表明了不一樣的計算損失函數的方法。第二部分J(f)表明了正則化選項,當訓練的出函數過於複雜時,可能會致使訓練的參數過擬合了,這時須要引入正則化因子來控制模型的複雜度。防止過擬合的產生。

 介紹完損失函數咱們介紹一下參數學習的方式,

        ωj = ωj - λ ∂L(ωj) / ∂ωj

經過計算損失函數關於w參數的梯度來逐步調整w參數,使損失函數愈來愈小,完成模型的訓練,參數達到收斂。

相關文章
相關標籤/搜索