? ? ? ?在機器學(xué)習(xí)的過程中,我們會在很多地方遇到有關(guān)模型建立復(fù)雜度控制的問題,對模型復(fù)雜度控制的目的就在于,可以讓我們的模型擁有更好的泛化能力,而不會在實際測試集中得到與訓(xùn)練集完全不一致的誤差表現(xiàn)。于是,這個問題就變成了機器學(xué)習(xí)中經(jīng)常提到的防止模型過擬合的問題。
? ? ? ? 如果我們從一個宏觀的角度,去分析所有有關(guān)分類回歸這類機器學(xué)習(xí)的問題,其中用到最多最有普遍意義的一個做法,就是對模型進(jìn)行范數(shù)正則化方面的改進(jìn)。事實上,這個方法也幾乎加入到了所有經(jīng)典機器學(xué)習(xí)方法的模型本身的建立過程中,這里我們就從常見正則化的優(yōu)點和使用方法,來談?wù)剻C器學(xué)習(xí)的本質(zhì)目的,以及如何用范數(shù)正則化方法來幫助解決其中的監(jiān)督學(xué)習(xí)問題。
1.監(jiān)督學(xué)習(xí)的過程與其本質(zhì)目的
? ? ? ?機器學(xué)習(xí)本身應(yīng)該劃分為監(jiān)督學(xué)習(xí)與無監(jiān)督學(xué)習(xí)兩大類,前者以分類/回歸進(jìn)行預(yù)測為主要目的,后者以聚類為主要目的。而監(jiān)督學(xué)習(xí)本身最大的目的在于對未知數(shù)據(jù)進(jìn)行預(yù)測,而待預(yù)測的數(shù)據(jù)的模型情況可能會很復(fù)雜,因此才會對模型的泛化能力提出很高的要求。
? ? ? ?我們說,對于監(jiān)督學(xué)習(xí)來講,其完成的任務(wù),就是要在訓(xùn)練集中,規(guī)定一個誤差函數(shù)(Loss Function),然后再去找一個數(shù)學(xué)模型,而我們的目的就是要想法設(shè)法讓這個數(shù)學(xué)模型在訓(xùn)練集中得到的結(jié)果與實際結(jié)果,帶入到我們先前定義的誤差函數(shù)中,讓這個誤差函數(shù)的值越小,那就可以說在這個訓(xùn)練集中得到了一個很好的模型。
? ? ? ?但僅僅這樣是不夠的,我們要考慮到這個模型不僅在這個訓(xùn)練集中效果很好,還要考慮我們喂給這個模型任意可能的一個測試集,依然有很出的效果,因此,無腦的讓模型在訓(xùn)練集上最小化誤差函數(shù)這樣的做法不可取,它可能會導(dǎo)致嚴(yán)重的過擬合而讓模型在測試集中產(chǎn)生很糟糕的效果,因此,我們需要對誤差函數(shù)進(jìn)行修正,讓這個誤差函數(shù)可以控制好數(shù)學(xué)模型本身的復(fù)雜度,以提高它的泛化能力。
? ? ? ?因此一句話總結(jié)監(jiān)督學(xué)習(xí)就是:“minimizeyour error while regularizing your parameters”,也就是在規(guī)則化模型參數(shù)復(fù)雜度的同時,來對誤差進(jìn)行最小化。這就是機器學(xué)習(xí)迭代訓(xùn)練的本質(zhì)目的。我們認(rèn)為,模型復(fù)雜度對于模型對未知數(shù)據(jù)進(jìn)行擬合的泛化能力具有很大的影響,這個說法是很合理很科學(xué)的,異常復(fù)雜的模型會考慮到訓(xùn)練集中的所有可能因素,包括那些可能是由于噪聲產(chǎn)生的數(shù)據(jù)波動,而這些因素本身是隨機的,絕對不能保證這些噪聲也會一致的出現(xiàn)在任何給定的測試集中(否則就不應(yīng)該叫做噪聲了)
? ? ? ?因此,通過這樣一個對監(jiān)督學(xué)習(xí)過程本質(zhì)的概括,我們可以把監(jiān)督學(xué)習(xí)的目標(biāo)表示如下:
? ? ? ?其中,第一項表示我們所定義的一個誤差函數(shù)(loss function),誤差函數(shù)有很多很多,比如均方誤差,指數(shù)誤差,等等。但僅僅有誤差函數(shù)作為目標(biāo)函數(shù)是不夠的,因此加入的第二項就是正則項,它是一個和訓(xùn)練模型參量相關(guān)的一個函數(shù),如果模型訓(xùn)練的參量個數(shù)特別多,或者這些參量的選值都特別大,那么我們就可以認(rèn)為這樣的一個模型可能太復(fù)雜了,我們要控制這樣的情況,因而以此作為正則化項,起到一個對模型復(fù)雜度懲罰的作用。同時我們也要控制這個懲罰程度對模型建立的“輕重”,所以前面的λ就代表了正則項的影響因子,λ取值越大,模型復(fù)雜度對最終代價函數(shù)的懲罰力度就越大。很明顯,如果這個λ取的太大,以至于我們實際的誤差函數(shù)的影響力明顯減弱,這樣的模型就明顯沒有意義了,導(dǎo)致了適得其反的效果,因此根據(jù)實際問題,要對λ進(jìn)行合適的調(diào)整。
? ? ? 而這一項,才是我們真正要最終作為標(biāo)準(zhǔn)的目標(biāo)函數(shù),稱作“代價函數(shù)”(cost function)。監(jiān)督學(xué)習(xí)的目的,也正是為了找到某個模型在某個問題中,如何使得這個代價函數(shù)達(dá)到最小的算法過程。
2.監(jiān)督學(xué)習(xí)方法中的誤差函數(shù)(Loss Function)
既然我們在上面對監(jiān)督學(xué)習(xí)過程進(jìn)行了一個本質(zhì)的概括,那我們就先來談?wù)劊鷥r函數(shù)組成的第一部分——誤差函數(shù)。
在監(jiān)督學(xué)習(xí)的問題中,我們通過一個模型在訓(xùn)練集中進(jìn)行擬合,得到了一組在訓(xùn)練集上的預(yù)測結(jié)果,我們當(dāng)然希望這個預(yù)測結(jié)果和訓(xùn)練集中的實際結(jié)果越接近越好(這樣才有意義嘛)。誤差函數(shù)就是來量化的描述你的預(yù)測結(jié)果與真實結(jié)果的偏差值。我們回頭思考我們學(xué)習(xí)過的經(jīng)典的學(xué)習(xí)模型:線性回歸,邏輯斯蒂回歸,支持向量機,boosting集成學(xué)習(xí),人工神經(jīng)網(wǎng)絡(luò)等等,也都是基于這樣的思路圍繞展開模型訓(xùn)練的,我們可以舉幾個例子來說明。
2.1簡單的線性回歸問題
線性回歸是我們接觸過的最簡單的監(jiān)督學(xué)習(xí)方法,而它的模型建立顯然是基于這樣一個原則建立的——我們的訓(xùn)練模型就是一個線性模型:假如我們是在二維空間中進(jìn)行訓(xùn)練,模型形式就是y=ax+b,如果是多維空間那就把a和x替換成向量,我們訓(xùn)練的參數(shù)的個數(shù)就是|a|+1,而模型的誤差,則應(yīng)該就是均方誤差,即便預(yù)測結(jié)果與實際結(jié)果的差的平方和。我們從機器學(xué)習(xí)的角度來考慮,這樣做顯然是有問題的。如果我們的數(shù)據(jù)維度非常高,我們無法保證所有變量對我們的線性分析都是有用有意義的,這些變量的一部分可能與因變量不應(yīng)該有關(guān),另一方面,多變量也可能會產(chǎn)生多重共線性現(xiàn)象:即多個預(yù)測變量之間有強相關(guān)關(guān)系,這樣的情況可能會增加模型的復(fù)雜度,削弱模型的解釋能力。
另一方面,當(dāng)X列滿秩的時候,使用線性回歸有解析解
,如果n和m比較接近,則容易產(chǎn)生過擬合;
如果
是奇異的,最小二乘回歸得不到有意義的結(jié)果。因此線性回歸缺少穩(wěn)定性與可靠性。
? ? 因此,我們應(yīng)該考慮給均方誤差
加入一個防止過擬合的正則項,如果加入的正則項為L1正則項,即代價函數(shù)為:
? ? 基于這樣的代價函數(shù)我們繼續(xù)進(jìn)行線性模型分析,來最小化上述的J(θ),這樣的回歸問題我們稱為Lasso回歸模型。它在特征稀疏篩選問題中有著非常重要的應(yīng)用。
? ? 如果我們加入的正則項策為L2正則項,則代價函數(shù)為:
即把上式的L1正則項直接替換為L2正則項,依然采用線性模型,但得到的模型特點會與上述模型產(chǎn)生不同的效果,這樣的回歸模型稱作Ridge Regression(嶺回歸或脊回歸)。這樣做的另一個好處是可以保證在任何條件下,模型參數(shù)均有解析解,保證了模型的穩(wěn)定性。
? ? 當(dāng)然,我們還可以將L1以及L2正則項都加入到線性回歸模型中,這樣做是有意義的:
?依然采用線性回歸模型,這個回歸方法稱為Elastic net模型。
? ? ?以上便是對于線性回歸學(xué)校方法的正則化解釋,以后會分別對比這幾種正則化模型方法各自的特點與應(yīng)用范圍。
2.2線性不可分支持向量機
其實這個結(jié)論可以推廣到高維線性不可分支持向量機(即考慮使用核函數(shù)方法將原空間映射到高維空間),這里我們通過線性不可分支持向量機來進(jìn)行解釋。
回憶我們學(xué)習(xí)支持向量機方法的經(jīng)典學(xué)習(xí)路線:先是線性可分支持向量機,使用的是最大間隔法,并且定義了一個最小的間隔閾值,位于閾值線上的數(shù)據(jù)點即支持向量,線性可分支持向量機的目的就是要保證兩類樣本的點都位于間隔閾值的外側(cè)——即支持向量的兩側(cè)。最后我們通過了一系列的推導(dǎo)運算,得到了以下我們都喜聞樂見的結(jié)果:
并且再轉(zhuǎn)化為以下問題:
這個式子大家都很熟悉了,這是比較理想的線性可分支持向量機模型,然而在實際問題中即便是在很低的維度,兩類樣本點都可以在最小間隔兩邊(即找到可以讓所有數(shù)據(jù)的滿足yi(Wx+b)≥1)的訓(xùn)練模型不存在,所以我們要引入一個松弛變量——目的就是為了,允許我們的最大間隔小于1,但這個差值又不能太小,我們記做,于是便轉(zhuǎn)換成我們又喜聞樂見的這個式子:
我們把yi(Wx+b)≥1這個條件“放寬”到y(tǒng)i(Wx+b)≥1-上,之后再通過一系列的代數(shù)求解得到我們想要的最優(yōu)解,這邊是我們導(dǎo)出的線性不可分支持向量機。
我們經(jīng)典的SVM學(xué)習(xí)過程就回憶到此,我們接下來換一個角度來考慮我們最后得到的線性不可分支持向量機模型。
我們將這個模型結(jié)合之前我們對監(jiān)督學(xué)習(xí)目標(biāo)的定義,我們是否可以將這個問題也轉(zhuǎn)化成一個誤差函數(shù)加一個正則化項的形式呢?答案當(dāng)然是可以的,我們直接給出這個表達(dá)式的“誤差函數(shù)+正則化項”的表達(dá)形式:
誤差函數(shù)為:
其中[z]+={z,(z>0);0,(z≤0)
正則化項就是經(jīng)典的L2正則化項,即||w||^2
合并加起來即:
接下來我們來證明這個式子與線性不可分支持向量機等價:
令
當(dāng)
則應(yīng)該有:
當(dāng)
又應(yīng)該有:
因此
所以這個式子
總成立。
所以
與
等價。
我們再令λ=1/2C。
則又轉(zhuǎn)化為:
就此完成證明。
而我們再來看這個損失函數(shù):
這個損失函數(shù)被稱為合頁損失函數(shù)(Hinge Loss),這個函數(shù)也可以寫成以下的形式
即每一個樣本的預(yù)測結(jié)果與實際結(jié)果對比產(chǎn)生的誤差認(rèn)為,如果該點的預(yù)測結(jié)果位于支持向量邊界外,則認(rèn)為誤差為0,;如果該點的預(yù)測結(jié)果位于支持向量邊界內(nèi),則認(rèn)為誤差是該點到最近的支持向量邊界的距離。
因此,線性不可分支持向量機的實質(zhì),可以認(rèn)為是線性回歸模型使得L2正則化的合頁損失函數(shù)最小化的分類學(xué)習(xí)方法。
2.3對數(shù)損失函數(shù)與Logistics回歸模型
對單個變量的對數(shù)損失函數(shù)定義為
如果y取值只有0和1,也可以寫成如下形式:
把這個損失函數(shù)作為訓(xùn)練模型想要最小化的損失函數(shù),則在整個訓(xùn)練集中的損失函數(shù)和:
對這個損失函數(shù)進(jìn)行L2正則化,防止其過擬合:
于是就得到了Logistics回歸模型的代價函數(shù)。即一個經(jīng)過L2正則化之后的對數(shù)損失函數(shù)。
? ? 當(dāng)然,Logistics回歸使用的回歸模型是將一個線性回歸式嵌套到一個Sigmoid函數(shù),sigmoid函數(shù)可以講輸入的結(jié)果約束在0~1范圍內(nèi),另外,通過sigmoid函數(shù)輸出的結(jié)果只可能在0,1之間,但不可能取到0和1,因此也給進(jìn)行對數(shù)損孫函數(shù)計算帶來了方便:我們要把樣本實際的類標(biāo)(即0或1)放在log的外側(cè),即上式中的y(i),而將模型訓(xùn)練出來的結(jié)果放到log內(nèi),即hθ(x(i)),這樣可以保證log內(nèi)的取值肯定大于0.
? ? 除去以上幾種監(jiān)督學(xué)習(xí)方法之外,其它的監(jiān)督學(xué)習(xí)方法也都包括各自特有的損失函數(shù)以及其常用的正則化項,共同組成各個模型算法的代價函數(shù),以代價函數(shù)最小化為目的進(jìn)行數(shù)學(xué)建模。
? ? ?例如,Adaboost的損失函數(shù)為指數(shù)損失函數(shù);運用了SoftMax多分類模型的人工神經(jīng)網(wǎng)絡(luò)使用的損失函數(shù)為交叉熵?fù)p失函數(shù)(若為二分類,再變?yōu)檫壿嬎沟倩貧w所使用的對數(shù)損失函數(shù))。