正則化

過擬合

上圖展示了不同線性回歸模型對(duì)訓(xùn)練集樣本的擬合情況,可以發(fā)現(xiàn),第一個(gè)模型是一條直線,不能很好的擬合訓(xùn)練集,這就是欠擬合(Underfitting)或者說模型是高偏差的(high bias)。第三個(gè)模型是一個(gè)高階多項(xiàng)式,雖然對(duì)訓(xùn)練集擬合的很好,但它的特征過多,如果沒有足夠的數(shù)據(jù)約束,就不會(huì)有良好的泛化能力(泛化能力是指一個(gè)模型應(yīng)用到新樣本的能力,比如這里的新樣本是指沒有出現(xiàn)在訓(xùn)練集的樣本),也就不能對(duì)新樣本做出正確的預(yù)測(cè),這就是過度擬合(Overfitting)或者說模型是高方差的(high varience)。第二個(gè)則是一個(gè)理想的模型。

過擬合問題會(huì)在特征過多的模型中出現(xiàn), 雖然訓(xùn)練出的假設(shè)函數(shù)能很好的擬合訓(xùn)練數(shù)據(jù),通過代價(jià)函數(shù)也能夠得到很小的損失,但因?yàn)樗Х桨儆?jì)地?cái)M合訓(xùn)練集,所以通常會(huì)是一個(gè)非常復(fù)雜的曲線,導(dǎo)致無法泛化到新樣本中,從而無法對(duì)新樣本做出正確的預(yù)測(cè)。不僅是線性回歸,其他機(jī)器學(xué)習(xí)算法也都有可能面臨過擬合問題,下圖展示了邏輯回歸模型中過擬合的情況:

通常來說過擬合的解決方法包括:

  • 減少特征的個(gè)數(shù)
  • 使用正則化,減少參數(shù)的權(quán)重
  • 增加數(shù)據(jù)量

正則化

通常過擬合是由于模型特征過多,過于復(fù)雜引起的,所以我們可以通過降低特征的權(quán)重來簡(jiǎn)化模型。我們嘗試將圖中較為復(fù)雜的模型(藍(lán)色): h_\theta(x)=\theta_0+\theta_1x+\theta_2x^2+\theta_3x^3+\theta_4x^4 中的 x^3x^4 的參數(shù) \theta_3\theta_4 調(diào)小來簡(jiǎn)化模型,如果使 x^3x^4 的參數(shù)調(diào)整的非常小,甚至接近于 0,那么就相當(dāng)于在原模型中去掉了這兩個(gè)高階項(xiàng),這樣模型就被簡(jiǎn)化為了二次函數(shù)(紫色): h_\theta(x)=\theta_0+\theta_1x+\theta_2x^2,從而可以避免過擬合。然而實(shí)際情況中,我們并不知道預(yù)測(cè)結(jié)果與哪個(gè)特征的相關(guān)度低,所以不知道應(yīng)該將哪個(gè)特征的參數(shù)變小,那么我們可以嘗試修改代價(jià)函數(shù),將所有參數(shù)都變小,如下所示:
J(\theta)=\frac{1}{2m}\sum_{i=1}^m(h_\theta(x^{(i)})-y^{(i)})^2+\color{red}{\lambda\sum_{i=1}^n\theta_j^2}

注意參數(shù) \theta_j 中的 j 是從 1 開始的,意味著我們只對(duì)特征的參數(shù)進(jìn)行縮小,不對(duì)偏差項(xiàng) \theta_0 進(jìn)行縮小,實(shí)際上并沒有什么差別。上式在原有代價(jià)函數(shù)的基礎(chǔ)上加入了正則化項(xiàng)(紅色),正則化參數(shù) \lambda 相當(dāng)于在兩個(gè)不同目標(biāo)之間做取舍,一方面是最小化損失值,也就是代價(jià)函數(shù)的前半部分,另一方面是最小化參數(shù),也就是代價(jià)函數(shù)的后半部分。也就是說\lambda要在更好地?cái)M合訓(xùn)練集和控制參數(shù)更小,從而使模型簡(jiǎn)單,避免過擬合之間保持平衡。所以需要選擇合適的 \lambda 參數(shù),如果過小則起不到簡(jiǎn)化模型的作用,仍然具有很高的方差及過擬合問題,如果過大的話則不能很好地?cái)M合訓(xùn)練數(shù)據(jù),具有很高的偏差,比如將 \lambda 設(shè)為 10^{10} ,那么所有特征接近于 0,相當(dāng)于模型變成了一條直線:h_\theta(x)=\theta_0,如下圖所示:

線性回歸的正則化

梯度下降

將線性回歸的代價(jià)函數(shù)加入正則化項(xiàng):
J(\theta)=\frac{1}{2m}\sum_{i=1}^m(h_\theta(x^{(i)})-y^{(i)})^2+\color{red}{\lambda\sum_{i=1}^n\theta_j^2}

優(yōu)化目標(biāo)為最小化代價(jià)函數(shù) J(\theta) 的參數(shù)\thetamin_\theta J(\theta)

對(duì) J(\theta) 求關(guān)于 \theta 的偏導(dǎo),使用梯度下降公式重復(fù)迭代更新參數(shù),注意 \theta_0\theta_j 單獨(dú)更新:
\cases{\theta_0=\theta_0-\alpha\frac{1}{m}\sum_{i=1}^m(h_\theta(x^{(i)})-y^{(i)})x_0^{(i)} &\text{if $\theta_0$}\\ \theta_j=\theta_j-\alpha\left[\frac{1}{m}\sum_{i=1}^m(h_\theta(x^{(i)})-y^{(i)})x_j^{(i)}+\color{red}{\frac{\lambda}{m}\theta_j}\right]&\text{if $\theta_{j(j\in1,n)}$} }

關(guān)于 \theta_j 的計(jì)算公式可以簡(jiǎn)化為:
\theta_j=\theta_j(1-\alpha\frac{\lambda}{m})-\alpha\frac{1}{m}\sum_{i=1}^m(h_\theta(x^{(i)})-y^{(i)})x_j^{(i)}

通常 1-\alpha\frac{\lambda}{m}<1,后半部分則和原有梯度下降一樣,可以理解為正則化項(xiàng)只是在原有梯度下降基礎(chǔ)上,讓參數(shù) \theta_j 乘以一個(gè)小于 1 的數(shù)(比如 0.99),從而使得參數(shù)值更小。

正規(guī)方程

我們可以通過正規(guī)方程直接求得最小化代價(jià)函數(shù) J(\theta) 的參數(shù) \theta
\Theta=(X^TX)^{-1}X^Ty

其中 Xm\times(n+1) 維的設(shè)計(jì)矩陣,每一行代表一個(gè)單獨(dú)的訓(xùn)練樣本。ym 維的向量,包含訓(xùn)練集所有的標(biāo)簽。正則化項(xiàng)是一個(gè) (n+1)\times(n+1) 維的矩陣,對(duì)角線第二至最后一個(gè)元素都為 1,其他元素都為 0。比如 n = 2,那么正則化項(xiàng)矩陣為:
\begin{bmatrix} 0 & 0 & 0 \\ 0 & 1 & 0\\0 & 0 & 1 \end{bmatrix}

將正規(guī)方程加入正則化項(xiàng):
\Theta=(X^T X+\color{red} { \lambda \begin{bmatrix} 0 & 0 & \cdots & 0 \\ 0 & 1 & \cdots & 0 \\ \vdots & \cdots & \ddots & \vdots \\ 0 & \cdots & 0 & 1 \end{bmatrix}})^{-1}X^Ty

正則化項(xiàng)矩陣實(shí)際上是對(duì)代價(jià)函數(shù)關(guān)于參數(shù)的求導(dǎo),我們知道如果樣本數(shù) m 小于特征數(shù) n,那么矩陣 X^TX是不可逆的,或者叫做奇異矩陣,雖然用偽逆函數(shù)(Octave:pinv)可以得到從數(shù)字上看似有意義的解,但不會(huì)得到很好的假設(shè)模型。不過,在加入正則化項(xiàng)后,只要正則化參數(shù) \lambda 大于 0,即可保證括號(hào)內(nèi)的矩陣一定是可逆的,所以正則化解決了不可逆問題,也就可以解決過擬合問題(樣本過少,特征過多)。

邏輯回歸的正則化

通常邏輯回歸模型中如果包含大量的多項(xiàng)式特征,會(huì)容易導(dǎo)致過擬合問題,如下圖所示:

假設(shè)函數(shù)為:
h_\theta(x)=g(\theta_0+\theta_1x_1+\theta_2x_1^2+\theta_3x_1^2x_2+\theta_4x_1^2x_2^2+\cdots)

代價(jià)函數(shù)為:
J(\theta)=-\left[\frac{1}{m}\sum_{i=1}^my^{(i)}log(h_\theta(x^{(i)}))+(1-y^{(i)})log(1-h_\theta(x^{(i)}))\right]

將代價(jià)函數(shù)加入正則化項(xiàng):
J(\theta)=-\left[\frac{1}{m}\sum_{i=1}^my^{(i)}log(h_\theta(x^{(i)}))+(1-y^{(i)})log(1-h_\theta(x^{(i)}))+\color{red}{\frac{\lambda}{2m}\sum_{j=1}^n\theta_j^2}\right]

這樣能減小參數(shù)的權(quán)重,即使有過多的參數(shù)也能得到平滑的決策邊界,從而避免過擬合。此時(shí),我們需要單獨(dú)更新\theta_0\theta_{j},和線性回歸梯度下降類似,將 \theta_j 的更新加入正則化,分別迭代更新:
\cases{\theta_0=\theta_0-\alpha\frac{1}{m}\sum_{i=1}^m(h_\theta(x^{(i)})-y^{(i)})x_0^{(i)} &\text{if $\theta_0$}\\ \theta_j=\theta_j-\alpha\left[\frac{1}{m}\sum_{i=1}^m(h_\theta(x^{(i)})-y^{(i)})x_j^{(i)}+\color{red}{\frac{\lambda}{m}\theta_j}\right]&\text{if $\theta_{j(j\in1,n)}$} }

參考

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容