3、邏輯迴歸 && 正則化
Logistic 迴歸的本質是:假設資料服從Logistic分佈,然後使用極大似然估計做引數的估計。
1、Logistic 分佈
Logistic 分佈是一種連續型的概率分佈,其分佈函式和密度函式分別為:
其中, 表示位置引數, 為形狀引數。我們可以看下其影象特徵:
Logistic 分佈的形狀與正態分佈的形狀相似,但是 Logistic 分佈的尾部更長,所以我們可以使用 Logistic 分佈來建模比正態分佈具有更長尾部和更高波峰的資料分佈。在深度學習中常用到的 Sigmoid 函式就是 Logistic 的分佈函式在 的特殊形式。
2、損失函式推導
LR概率函式為:
在統計學中,常常使用極大似然估計法來求解,即找到一組引數,使得在這組引數下,我們的資料的似然度(概率)最大。
設:
似然函式:
為了更方便求解,我們對等式兩邊同取對數,寫成對數似然函式:(下方公式左側應該加上ln)
在機器學習中我們有損失函式的概念,其衡量的是模型預測錯誤的程度。如果取整個資料集上的平均對數似然損失,我們可以得到:
即在邏輯迴歸模型中,我們最大化似然函式和最小化損失函式實際上是等價的。
3、優化求解
邏輯迴歸的損失函式是:
隨機梯度下降推導:
梯度下降是通過 J(w) 對 w 的一階導數來找下降方向,並且以迭代的方式來更新引數,更新方式為 :
其中 k 為迭代次數。每次更新引數後,可以通過比較 小於閾值或者到達最大迭代次數來停止迭代。
4、正則化
正則化是一個通用的演算法和思想,所以會產生過擬合現象的演算法都可以使用正則化來避免過擬合。
在經驗風險最小化的基礎上(也就是訓練誤差最小化),儘可能採用簡單的模型,可以有效提高泛化預測精度。如果模型過於複雜,變數值稍微有點變動,就會引起預測精度問題。正則化之所以有效,就是因為其降低了特徵的權重,使得模型更為簡單。
正則化一般會採用 L1 正規化或者 L2 正規化,其形式分別為 和 。
L1 正則化增加了所有權重 w 引數的絕對值之和逼迫更多 w 為零,也就是變稀疏( L2 因為其導數也趨 0, 奔向零的速度不如 L1 給力了)。我們對稀疏規則趨之若鶩的一個關鍵原因在於它能實現特徵的自動選擇。一般來說,大部分特徵 x_i 都是和最終的輸出 y_i 沒有關係或者不提供任何資訊的。在最小化目標函式的時候考慮 x_i 這些額外的特徵,雖然可以獲得更小的訓練誤差,但在預測新的樣本時,這些沒用的特徵權重反而會被考慮,從而干擾了對正確 y_i 的預測。
L2 正則化中增加所有權重 w 引數的平方之和,逼迫所有 w 儘可能趨向零但不為零(L2 的導數趨於零)。因為在未加入 L2 正則化發生過擬合時,擬合函式需要顧忌每一個點,最終形成的擬合函式波動很大,在某些很小的區間裡,函式值的變化很劇烈,也就是某些 w 值非常大。為此,L2 正則化的加入就懲罰了權重變大的趨勢。
總結:
L1 正則化就是在 loss function 後邊所加正則項為 L1 範數,加上 L1 範數容易得到稀疏解(0 比較多)。L2 正則化就是 loss function 後邊所加正則項為 L2 範數的平方,加上 L2 正則相比於 L1 正則來說,得到的解比較平滑(不是稀疏),但是同樣能夠保證解中接近於 0(但不是等於 0,所以相對平滑)的維度比較多,降低模型的複雜度。
5、為什麼不用平方誤差
假設目標函式是 MSE,即:
這裡 Sigmoid 的導數項為:
根據 w 的初始化,導數值可能很小(想象一下 Sigmoid 函式在輸入較大時的梯度)而導致收斂變慢,而訓練途中也可能因為該值過小而提早終止訓練(梯度消失)。
另一方面,交叉熵的梯度如下,當模型輸出概率偏離於真實概率時,梯度較大,加快訓練速度,當擬合值接近於真實概率時訓練速度變緩慢,沒有 MSE 的問題。
參考:
https://zhuanlan.zhihu.com/p/74874291