正則化(Regularization)

一、過擬合的問題

到現(xiàn)在為止,我們已經(jīng)學(xué)習了幾種不同的學(xué)習算法,包括線性回歸和邏輯回歸,它們能夠有效地解決許多問題,但是當將它們應(yīng)用到某些特定的機器學(xué)習應(yīng)用時,會遇到過擬合(over-fitting)的問題,可能會導(dǎo)致它們效果很差。

如果我們有非常多的特征,我們通過學(xué)習得到的假設(shè)可能能夠非常好地適應(yīng)訓(xùn)練集(代價函數(shù)可能幾乎為0),但是可能會不能推廣到新的數(shù)據(jù)。


第一個模型是一個線性模型,欠擬合,不能很好地適應(yīng)我們的訓(xùn)練集;第三個模型是一個四次方的模型,過于強調(diào)擬合原始數(shù)據(jù),而丟失了算法的本質(zhì):預(yù)測新數(shù)據(jù)。我們可以看出,若給出一個新的值使之預(yù)測,它將表現(xiàn)的很差,是過擬合,雖然能非常好地適應(yīng)我們的訓(xùn)練集但在新輸入變量進行預(yù)測時可能會效果不好;而中間的模型似乎最合適。
分類問題中也存在這樣的問題:

就以多項式理解,x 的次數(shù)越高,擬合的越好,但相應(yīng)的預(yù)測的能力就可能變差。
問題是,如果我們發(fā)現(xiàn)了過擬合問題,應(yīng)該如何處理?
丟棄一些不能幫助我們正確預(yù)測的特征??梢允鞘止みx擇保留哪些特征,或者使用一些模型選擇的算法來幫忙(例如PCA)正則化。 保留所有的特征,但是減少參數(shù)的大小(magnitude)。

二、代價函數(shù)

上面的回歸問題中如果我們的模型是: {h_\theta}\left( x \right)={\theta_{0}}+{\theta_{1}}{x_{1}}+{\theta_{2}}{x_{2}^2}+{\theta_{3}}{x_{3}^3}+{\theta_{4}}{x_{4}^4} 我們可以從之前的事例中看出,正是那些高次項導(dǎo)致了過擬合的產(chǎn)生,所以如果我們能讓這些高次項的系數(shù)接近于0的話,我們就能很好的擬合了。 所以我們要做的就是在一定程度上減小這些參數(shù)\theta 的值,這就是正則化的基本方法。我們決定要減少{\theta_{3}}{\theta_{4}}的大小,我們要做的便是修改代價函數(shù),在其中{\theta_{3}}{\theta_{4}} 設(shè)置一點懲罰。這樣做的話,我們在嘗試最小化代價時也需要將這個懲罰納入考慮中,并最終導(dǎo)致選擇較小一些的{\theta_{3}}{\theta_{4}}。 修改后的代價函數(shù)如下:\underset{\theta }{\mathop{\min }},\frac{1}{2m}[\sum\limits_{i=1}^{m}{{{\left( {{h}_{\theta }}\left( {{x}^{(i)}} \right)-{{y}^{(i)}} \right)}^{2}}+1000\theta _{3}^{2}+10000\theta _{4}^{2}]}

通過這樣的代價函數(shù)選擇出的{\theta_{3}}{\theta_{4}} 對預(yù)測結(jié)果的影響就比之前要小許多。假如我們有非常多的特征,我們并不知道其中哪些特征我們要懲罰,我們將對所有的特征進行懲罰,并且讓代價函數(shù)最優(yōu)化的軟件來選擇這些懲罰的程度。這樣的結(jié)果是得到了一個較為簡單的能防止過擬合問題的假設(shè):J\left( \theta \right)=\frac{1}{2m}[\sum\limits_{i=1}^{m}{{{({h_\theta}({{x}^{(i)}})-{{y}^{(i)}})}^{2}}+\lambda \sum\limits_{j=1}^{n}{\theta_{j}^{2}}]}

其中\lambda又稱為正則化參數(shù)(Regularization Parameter)。 注:根據(jù)慣例,我們不對{\theta_{0}} 進行懲罰。經(jīng)過正則化處理的模型與原模型的可能對比如下圖所示:


如果選擇的正則化參數(shù)\lambda 過大,則會把所有的參數(shù)都最小化了,導(dǎo)致模型變成 {h_\theta}\left( x \right)={\theta_{0}},也就是上圖中紅色直線所示的情況,造成欠擬合。 那為什么增加的一項\lambda =\sum\limits_{j=1}^{n}{\theta_j^{2}} 可以使\theta的值減小呢? 因為如果我們令 \lambda 的值很大的話,為了使Cost Function 盡可能的小,所有的 \theta 的值(不包括{\theta_{0}})都會在一定程度上減小。 但若\lambda 的值太大了,那么\theta(不包括{\theta_{0}})都會趨近于0,這樣我們所得到的只能是一條平行于x軸的直線。 所以對于正則化,我們要取一個合理的 \lambda 的值,這樣才能更好的應(yīng)用正則化。 回顧一下代價函數(shù),為了使用正則化,讓我們把這些概念應(yīng)用到到線性回歸和邏輯回歸中去,那么我們就可以讓他們避免過度擬合了。

三、正則化線性回歸

正則化線性回歸的代價函數(shù)為:

J\left( \theta \right)=\frac{1}{2m}\sum\limits_{i=1}^{m}{[({{({h_\theta}({{x}^{(i)}})-{{y}^{(i)}})}^{2}}+\lambda \sum\limits_{j=1}^{n}{\theta _{j}^{2}})]}

如果我們要使用梯度下降法令這個代價函數(shù)最小化,因為我們未對\theta_0進行正則化,所以梯度下降算法將分兩種情形:

Repeat until convergence{

{\theta_0}:={\theta_0}-a\frac{1}{m}\sum\limits_{i=1}^{m}{(({h_\theta}({{x}^{(i)}})-{{y}^{(i)}})x_{0}^{(i)}})

{\theta_j}:={\theta_j}-a[\frac{1}{m}\sum\limits_{i=1}^{m}{(({h_\theta}({{x}^{(i)}})-{{y}^{(i)}})x_{j}^{\left( i \right)}}+\frac{\lambda }{m}{\theta_j}]

for j=1,2,...n

}

對上面的算法中j=1,2,...,n 時的更新式子進行調(diào)整可得:

{\theta_j}:={\theta_j}(1-a\frac{\lambda }{m})-a\frac{1}{m}\sum\limits_{i=1}^{m}{({h_\theta}({{x}^{(i)}})-{{y}^{(i)}})x_{j}^{\left( i \right)}} 可以看出,正則化線性回歸的梯度下降算法的變化在于,每次都在原有算法更新規(guī)則的基礎(chǔ)上令\theta值減少了一個額外的值。

四、正則化的邏輯回歸模型

針對邏輯回歸問題,我們在之前的課程已經(jīng)學(xué)習過兩種優(yōu)化算法:我們首先學(xué)習了使用梯度下降法來優(yōu)化代價函數(shù)J\left( \theta \right),接下來學(xué)習了更高級的優(yōu)化算法,這些高級優(yōu)化算法需要你自己設(shè)計代價函數(shù)J\left( \theta \right)。


自己計算導(dǎo)數(shù)同樣對于邏輯回歸,我們也給代價函數(shù)增加一個正則化的表達式,得到代價函數(shù):

J\left( \theta \right)=\frac{1}{m}\sum\limits_{i=1}^{m}{[-{{y}^{(i)}}\log \left( {h_\theta}\left( {{x}^{(i)}} \right) \right)-\left( 1-{{y}^{(i)}} \right)\log \left( 1-{h_\theta}\left( {{x}^{(i)}} \right) \right)]}+\frac{\lambda }{2m}\sum\limits_{j=1}^{n}{\theta _{j}^{2}}
注:看上去同線性回歸一樣,但是知道 {h_\theta}\left( x \right)=g\left( {\theta^T}X \right),所以與線性回歸不同。 Octave 中,我們依舊可以用 fminuc 函數(shù)來求解代價函數(shù)最小化的參數(shù),值得注意的是參數(shù){\theta_{0}}的更新規(guī)則與其他情況不同。 注意:

雖然正則化的邏輯回歸中的梯度下降和正則化的線性回歸中的表達式看起來一樣,但由于兩者的{h_\theta}\left( x \right)不同所以還是有很大差別。

{\theta_{0}}不參與其中的任何一個正則化。

目前大家對機器學(xué)習算法可能還只是略懂,但是一旦你精通了線性回歸、高級優(yōu)化算法和正則化技術(shù),坦率地說,你對機器學(xué)習的理解可能已經(jīng)比許多工程師深入了?,F(xiàn)在,你已經(jīng)有了豐富的機器學(xué)習知識,目測比那些硅谷工程師還厲害,或者用機器學(xué)習算法來做產(chǎn)品。

接下來的課程中,我們將學(xué)習一個非常強大的非線性分類器,無論是線性回歸問題,還是邏輯回歸問題,都可以構(gòu)造多項式來解決。你將逐漸發(fā)現(xiàn)還有更強大的非線性分類器,可以用來解決多項式回歸問題。我們接下來將將學(xué)會,比現(xiàn)在解決問題的方法強大N倍的學(xué)習算法。

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

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

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