常見的損失函數有哪些?(這里的損失函數嚴格來說是目標函數,一般都稱呼為損失函數)
具體見:
https://blog.csdn.net/iqqiqqiqqiqq/article/details/77413541
1)0-1損失函數
記錄分類錯誤的次數。
2)絕對值損失函數
通常用於回歸中
3)平方損失函數
即真實值與預測值之差的平方和。通常用於線性模型中,如線性回歸模型。之所以采用平方的形式,而非絕對值或三次方的形式,是因為最大似然估計(求損失函數的極小值)與最小化平方損失是等價的。
4)對數損失
5)指數損失函數
常用的優化方法有哪些?
對損失函數的優化:
當我們對分類的Loss進行改進的時候,我們要通過梯度下降,每次優化一個step大小的梯度,這個時候我們就要求Loss對每個權重矩陣的偏導,然后應用鏈式法則。
最小二乘法(主要是說線性回歸中的優化算法)梯度下降法、牛頓法、擬牛頓法、共軛梯度法
詳細說一下梯度下降法
在求解機器學習算法的模型參數,即無約束優化問題時,梯度下降(Gradient Descent)是最常采用的方法之一,梯度下降不一定能夠找到全局的最優解,有可能是一個局部最優解。當然,如果損失函數是凸函數,梯度下降法得到的解就一定是全局最優解。
1)梯度
在微積分里面,對多元函數的參數求∂偏導數,把求得的各個參數的偏導數以向量的形式寫出來,就是梯度。
那么這個梯度向量求出來有什么意義呢?他的意義從幾何意義上講,就是函數變化增加最快的地方。或者說,沿着梯度向量的方向,更加容易找到函數的最大值。反過來說,沿着梯度向量相反的方向,也就是 -(∂f/∂x0, ∂f/∂y0)T的方向,梯度減少最快,也就是更加容易找到函數的最小值。
2)梯度下降與梯度上升
在機器學習算法中,在最小化損失函數時,可以通過梯度下降法來一步步的迭代求解,通過啟發式的方式一步步迭代求解函數的最小值,得到最小化的損失函數,和模型參數值。反過來,如果我們需要求解損失函數的最大值,這時就需要用梯度上升法來迭代了。
梯度下降法和梯度上升法是可以互相轉化的。比如我們需要求解損失函數f(θ)的最小值,這時我們需要用梯度下降法來迭代求解。但是實際上,我們可以反過來求解損失函數 -f(θ)的最大值,這時梯度上升法就派上用場了。
3)梯度下降的算法調優
在使用梯度下降時,需要進行調優。
第一、算法的步長選擇。在前面的算法描述中,我提到取步長為1,但是實際上取值取決於數據樣本,可以多取一些值,從大到小,分別運行算法,看看迭代效果,如果損失函數的值在變小,說明取值有效,否則要增大步長。前面說了。步長太大,會導致迭代過快,甚至有可能錯過最優解。步長太小,迭代速度太慢,很長時間算法都不能結束。所以算法的步長需要多次運行后才能得到一個較為優的值。
第二、算法參數的初始值選擇。初始值不同,獲得的最小值也有可能不同,因此梯度下降求得的只是局部最小值;當然如果損失函數是凸函數則一定是最優解。由於有局部最優解的風險,需要多次用不同初始值運行算法,觀測損失函數的最小值,選擇損失函數最小化的初值。
第三、歸一化。由於樣本不同特征的取值范圍不一樣,可能導致迭代很慢,為了減少特征取值的影響,可以對特征數據歸一化,也就是對於每個特征x,求出它的期望x¯和標准差std(x),然后轉化為x−x¯¯¯std(x)x−x¯std(x)
這樣特征的新期望為0,新方差為1,迭代次數可以大大加快。
4)梯度下降的種類
第一、批量梯度下降法。每次對參數的更新都需要用到整個訓練數據集,能夠得到全局最優解,但是當數據量很大時訓練速度會很慢。
第二、隨機梯度下降法。他是每次 只選用一個樣本進行迭代,訓練速度固然得到很大提升,但是准確度下降了,得到的很可能不是最優解。容易陷入到局部最優解中。一直不會收斂,只是在最小值附近波動
第三、小批量(部分)梯度下降法,它是以上兩者的結合。
對於損失函數與模型訓練的理解
損失函數(loss function)是用來估量你模型的預測值f(x)與真實值Y的不一致程度,它是一個非負實值函數,通常使用L(Y, f(x))來表示,損失函數越小,模型的魯棒性就越好。損失函數是經驗風險函數的核心部分,也是結構風險函數重要組成部分。模型的結構風險函數包括了經驗風險項和正則項,通常可以表示成如下式子:
通常損失函數(嚴格來說是目標函數)由上面公式的兩部分組成,前部分就是計算算法預測的值和訓練樣本真實標簽之間的距離,不同的距離計算方式代表了不同的計算損失函數的方法。第二部分J(f)代表了正則化選項,當訓練的出函數過於復雜時,可能會導致訓練的參數過擬合了,這時需要引入正則化因子來控制模型的復雜度。防止過擬合的產生。
介紹完損失函數我們介紹一下參數學習的方式,
ωj = ωj - λ ∂L(ωj) / ∂ωj
通過計算損失函數關於w參數的梯度來逐步調整w參數,使損失函數越來越小,完成模型的訓練,參數達到收斂。