损失函数,梯度下降与牛顿法
損失函數
我們在進行機器學習任務時,使用的每一個算法都有一個目標函數,算法便是對這個目標函數進行優化,特別是在分類或者回歸任務中,便是使用損失函數(Loss Function)作為其目標函數,又稱為代價函數(Cost Function)。損失函數是用來估量模型的預測值f(x)與真實值Y的不一致程度,它是一個非負實值函數,通常使用L(Y, f(x))來表示,損失函數越小,模型的魯棒性就越好。損失函數是經驗風險函數的核心部分,也是結構風險函數重要組成部分。模型的結構風險函數包括了經驗風險項和正則項,通??梢员硎境扇缦率阶?#xff1a;
$J\left ( \mathbf{w} \right )=\sum_{i}L\left ( m_i\left (\mathbf{ w} \right ) \right )+\lambda R\left ( \mathbf{w} \right )$
其中,$L\left ( m_i\left (\mathbf{ w} \right ) \right )$為損失項,$R\left ( \mathbf{w} \right )$.$m_i$的具體形式如下:
$m_i=y^{\left ( i \right )}f_\mathbf{w}\left ( \mathbf{x}^{\left ( i \right )} \right )$
$y^{\left ( i \right )}\in \left \{ -1,\;1 \right \}$
$f_\mathbf{w}\left ( \mathbf{x}^{\left ( i \right )} \right )=\mathbf{w}^T\mathbf{x}^{(i)}$
常見的損失函數:
1.log對數損失函數(邏輯回歸)
$L(Y,P(Y|X)) = -\log P(Y|X)$
損失函數L(Y, P(Y|X))表達的是樣本X在分類Y的情況下,使概率P(Y|X)達到最大值(換言之,就是利用已知的樣本分布,找到最有可能(即最大概率)導致這種分布的參數值;或者說什么樣的參數才能使我們觀測到目前這組數據的概率最大)。這種損失函數的目的是最大化預測值為真實值的概率。
邏輯回歸的P(Y=y|x)表達式如下:
分類器可以表示為:
$p\left ( y\mid \mathbf{x}; \mathbf{w} \right )=\sigma \left ( \mathbf{w}^T\mathbf{x} \right )^y\left ( 1-\sigma \left ( \mathbf{w}^T\mathbf{x} \right ) \right )^{\left ( 1-y \right )}$
為了求解其中的參數w,通常使用極大似然估計的方法,具體的過程如下:
1.似然函數
$L\left ( \mathbf{w} \right )=\prod_{i=1}^{n}\sigma \left ( \mathbf{w}^T\mathbf{x}^{\left ( i \right )} \right )^{y^{\left ( i \right )}}\left ( 1-\sigma \left ( \mathbf{w}^T\mathbf{x}^{\left ( i \right )} \right ) \right )^{\left ( 1-y^{\left ( i \right )} \right )}$
$\sigma \left ( x \right )=\frac{1}{1+exp\left ( -x \right )}$
2.取log
$logL\left ( \mathbf{w} \right )=\sum_{i=1}^{n}y^{\left ( i \right )}log\left ( \sigma \left ( \mathbf{w}^T\mathbf{x}^{\left ( i \right )} \right ) \right )+\left ( 1-y^{\left ( i \right )} \right )log\left ( 1-\sigma \left ( \mathbf{w}^T\mathbf{x}^{\left ( i \right )} \right )\right )$
3.需要求解的是使得log似然取得最大值的w。將其改變為最小值
$\underset{\mathbf{w}}{min}\sum_{i=1}^{n}log\left \{ 1+exp\left ( -y^{\left ( i \right )}\mathbf{w}^T\mathbf{x}^{\left ( i \right )} \right ) \right \}$
邏輯回歸最后得到的目標式(不是最小二乘):
$J(\theta) = - \frac{1}{m} \sum_{i=1}^m \left [ y^{(i)} \log h_{\theta}(x^{(i)}) + (1-y^{(i)}) \log(1-h_{\theta}(x^{(i)})) \right ]$
?
2.平方損失函數(最小二乘法)
$L(Y, f(X)) = (Y - f(X))^2$
當樣本個數為n時,此時的損失函數變為:
Y-f(X)表示的是殘差,整個式子表示的是殘差的平方和.
而在實際應用中,通常會使用均方差(MSE)作為一項衡量指標:
$MSE = \frac{1}{n} \sum_{i=1} ^{n} (\tilde{Y_i} - Y_i )^2$
最小二乘法是線性回歸的一種,將問題轉化成了一個凸優化問題。在線性回歸中,它假設樣本和噪聲都服從高斯分布.
基本原則是:最優擬合直線應該是使各點到回歸直線的距離和最小的直線,即平方和最小。換言之,OLS是基于距離的,而這個距離就是我們用的最多的歐幾里得距離。
?3.指數損失函數(Adaboost)
是0/1損失的一種近似
?
在Adaboost中,經過m此迭代之后,可以得到fm(x):
Adaboost每次迭代時的目的是為了找到最小化下列式子時的參數α 和G:
而指數損失函數(exp-loss)的標準形式如下:
Adaboost的目標式子就是指數損失,在給定n個樣本的情況下,Adaboost的損失函數為:
4.Hinge損失函數(SVM:合頁損失)
Hinge損失是0-1損失函數的一種代理函數,Hinge損失的具體形式如下:
$max\left ( 0,1-m \right )$
在線性支持向量機中,最優化問題可以等價于下列式子:
下面來對式子做個變形,令:
于是,原式就變成了:
如若取λ=1/2C,式子就可以表示成:
可以看出,該式子與下式非常相似:
前半部分中的l就是hinge損失函數,而后面相當于L2正則項。
5.0-1損失函數
6.絕對值損失函數
?
梯度下降法(Gradient descent)
一個一階最優化算法,通常也稱為最速下降法。 分別有梯度下降法,批梯度下降法,增量梯度下降。本質上,都是偏導數,步長/最佳學習率,更新,收斂的問題。
目的:要使用梯度下降法找到一個函數的局部極小值,(在凸函數中局部最小解就是全局最小解)
算法流程:
1.初始化θ(隨機初始化)
2.迭代,新的θ能夠使得J(θ)更小
3.如果J(θ)無法繼續減少或者達到循環上界次數,退出
α:學習率、步長
?
?
過程:
1.xk=a,沿著負梯度方向,移動到xk+1=b,有:
2.從x0為出發點,每次沿著當前函數梯度反方向移動一定距離αk,得到序列:
?
3.對應的各點函數值序列之間的關系為:
?
4.當n 達到一定值時,函數f(x)收斂到局部最小值:
?
?
學習率:
1.固定學習率
2.線性搜索
a.二分線性搜索
b.回溯線性搜索
?
牛頓法(改變搜索方向)
若f(x)二階導連續,將f(x)在xk處Taylor展開:
牛頓法使用函數f(x)的泰勒級數的前面幾項來尋找方程f(x)=0的根。因為函數 二階導數反應了函數的凸凹性;二階導越大,一階導的變化越大。用方向導數代替一階導,用Hessian矩陣代替二階導:
?
過程:
1.首先,選擇一個接近函數f(x)零點的x0,計算相應的f(x0)和切線斜率f'(x0)(這里f'表示函數f的導數)。
2.然后我們計算穿過點 (x0,f(x0))并且斜率為 f'(x0)的直線和x軸的交點的x坐標,也就是求如下方程的解:
3.我們將新求得的點的x坐標命名為x1,通常x1會比x0更接近方程f(x)=0的解。因此我們現在可以利用x1開始下一輪迭代。迭代公式可化簡為如下所示:
圖演示:
藍線表示方程f而紅線表示切線. 可以看出xn+1比xn更靠近f所要求的根x.
牛頓法特點:
1.經典牛頓法雖然具有二次收斂性,但是要求初始點需要盡量靠近極小點,否則有可能不收斂。
2.計算過程中需要計算目標函數的二階偏導數,難度較大。
3.目標函數的Hessian矩陣無法保持正定,會導致算法
4.產生的方向不能保證是f在xk處的下降方向,從而令牛頓法失效.
5.如果Hessian矩陣奇異,牛頓方向可能根本是不存在的。
轉載于:https://www.cnblogs.com/xmeo/p/6655912.html
總結
以上是生活随笔為你收集整理的损失函数,梯度下降与牛顿法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 阴阳师12章剧情怎么过
- 下一篇: 峡谷重案组大魔王是谁