談一談正則化

2021-08-17 04:11:22 字數 3903 閱讀 9507

要理解正則化,首先需要了解過擬合的概念,關於過擬合,筆者在前面的博文中有專門提到,詳情可參見博文:過擬合與欠擬合簡要總結 以及 如何解決過擬合問題。

以 ng 公開課中的房價**問題為背景,展開討論。

在機器學習中,過多的變數(特徵),同時只有非常少的訓練資料,會導致出現過度擬合的問題。因此為了解決過度擬合,有以下兩個辦法:

1.儘量減少選取變數的數量

具體而言,我們可以人工檢查每一項變數,並以此來確定哪些變數更為重要,然後,保留那些更為重要的特徵變數。這類做法非常有效,但是其缺點是當你捨棄一部分特徵變數時,你也捨棄了問題中的一些資訊。例如,也許所有的特徵變數對於**房價都是有用的,我們實際上並不想捨棄一些資訊或者說捨棄這些特徵變數。

2.正則化

正則化中我們將保留所有的特徵變數,但是會減小特徵變數的數量級。這個方法非常有效,當我們有很多特徵變數時,其中每乙個變數都能對**產生一點影響。正如我們在房價**的例子中看到的那樣,我們可以有很多特徵變數,其中每乙個變數都是有用的,因此我們不希望把它們刪掉,這就導致了正則化概念的發生。

函式懲罰項

在前面的介紹中,我們看到了如果用乙個二次函式來擬合這些資料,那麼它給了我們乙個對資料很好的擬合。然而,如果我們用乙個更高次的多項式去擬合,最終我們可能會得到乙個曲線,它能很好地擬合訓練集,但卻並不是乙個好的結果,因為它過度擬合了資料,因此,一般性並不是很好。

讓我們來考慮下面的假設: mi

nθ12

m∑i=

1m(h

θ(x(

i))−

y(i)

)2我們想要加上懲罰項,從而使引數 θ3 和 θ4 足夠的小。意思就是,上圖的式子是我們的優化目標,也就是說我們需要儘量減少代價函式的均方誤差。

對於這個函式我們對它新增一些項,如下所示: mi

nθ12

m∑i=

1m(h

θ(x(

i))−

y(i)

)2+10000θ2

3+10000θ2

4 其中,10000只是我隨便寫的某個較大的數字而已,現在,如果我們要最小化這個函式,那麼為了最小化這個新的代價函式,我們要讓 θ3 和 θ4 盡可能小。因為,如果你在原有代價函式的基礎上加上 1000 乘以 θ3 這一項 ,那麼這個新的代價函式將變得很大,所以,當我們最小化這個新的代價函式時, 我們將使 θ3 的值接近於 0,同樣 θ4 的值也接近於 0,就像我們忽略了這兩個值一樣。如果我們做到這一點( θ3 和 θ4 接近 0 ),那麼我們將得到乙個近似的二次函式。

因此,我們最終恰當地擬合了資料,我們所使用的正是二次函式加上一些非常小,貢獻很小項(因為這些項的 θ3

、 θ4

非常接近於0)。顯然,相比於方法1,這是乙個更好的假設。

正則化操作

在我們上面的例子中,我們懲罰的只是 θ3

和 θ4

,使這兩個值均接近於零,從而我們得到了乙個更簡單的假設,實際上這個假設大抵上是乙個二次函式。

但更一般地說,如果我們像懲罰 θ3

和 θ4

這樣懲罰其它引數,那麼我們往往可以得到乙個相對較為簡單的假設。

實際上,這些引數的值越小,通常對應於越光滑的函式,也就是更加簡單的函式。因此就不易發生過擬合。

來讓我們看看具體的例子,對於房屋****我們可能有上百種特徵,與剛剛所講的多項式例子不同,我們並不知道 θ3 和 θ4 是高階多項式的項。所以,如果我們有一百個特徵,我們並不知道如何選擇關聯度更好的引數,如何縮小引數的數目等等。

因此在正則化裡,我們要做的事情,就是把減小我們的代價函式(例子中是線性回歸的代價函式)所有的引數值,因為我們並不知道是哪乙個或哪幾個要去縮小。

因此,我們需要修改代價函式,在這後面新增一項。當我們新增乙個額外的正則化項的時候,我們收縮了每個引數。 mi

nθ12

m[∑i

=1m(

hθ(x

(i))

−y(i

))2+

λ∑j=

1nθ2

j]按照慣例,我們沒有去懲罰 θ0

,因此 θ0

的值是大的。通常情況下我們還是只從 θ1

到 θn 進行正則化。

上式中,λ∑

nj=1

θ2j 就是乙個正則化項。

λ 在這裡我們稱做正則化引數。

為了使正則化運作良好,我們應當注意一些方面,應該去選擇乙個不錯的正則化引數 λ 。當 λ 太大的時候,會使所有引數都趨於零,如果我們這麼做,那麼就是我們的假設中相當於去掉了這些項,並且使我們只是留下了乙個簡單的假設,這個假設只能表明房屋**等於 θ0

的值,那就是類似於擬合了一條水平直線,對於資料來說這就是乙個欠擬合。當 λ 太小的時候,有時候會對引數的懲罰力度不夠,導致效果不明顯。後面我們將在講到多重選擇時討論一種方法來自動選擇正則化引數 λ 。

l1 正則化以及特徵選擇

為了簡便起見,此處的損失函式不再寫全,而是以單字母替代,當然,這對理解不會產生障礙。

假設有如下帶l1正則化的損失函式: j=

j0+λ

∑j=1

n|θj

| 其中j

0 是原始的損失函式,加號後面的一項是l1正則化項,

λ 是正則化係數。注意到l1正則化是權值的絕對值之和,

j 是帶有絕對值符號的函式,因此

j是不完全可微的。考慮二維的情況,即只有兩個權值w1

和w2 ,此時l=|w1

|+|w2

|對於梯度下降法,求解j0

的過程可以畫出等值線,同時l1正則化的函式l也可以在w1

w2的二維平面上畫出來。如下圖:

圖中等值線是j0

的等值線,黑色方形是 l 函式的圖形。在圖中,當j0

等值線與l圖形首次相交的地方就是最優解。上圖中j0

與 l 在 l 的乙個頂點處相交,這個頂點就是最優解。注意到這個頂點的值是 (w1,w2)=(0,w)。可以直觀想象,因為l函式有很多『突出的角』(二維情況下四個,多維情況下更多),j0

與這些角接觸的機率會遠大於與 l 其它部位接觸的機率,而在這些角上,會有很多權值等於0,這就是為什麼l1 正則化可以產生稀疏模型,進而可以用於特徵選擇

而正則化前面的係數

λ ,可以控制l圖形的大小。

λ 越小,l 的圖形越大(上圖中的黑色方框);

λ 越大,l 的圖形就越小,可以小到黑色方框只超出原點範圍一點點,這是最優點的值 (w1,w2)=(0,w) 中的 w 可以取到很小的值。也就是說,在一定程度上,l1 正則化也能夠防止過擬合,達到與 l2 正則化類似的效果。

l2正則化以及防止過擬合

有如下帶l2正則化的損失函式: j=

j0+λ

∑j=1

nθ2j

同樣可以畫出他們在二維平面上的圖形,如下所示:

二維平面下 l2 正則化的函式圖形是個圓,與方形相比,被磨去了稜角。因此j0

與 l 相交時使得w1

或w2 等於零的機率小了許多,這就是為什麼 l2 正則化不具有稀疏性的原因。

關於 l2 正則化能夠有效防止過擬合問題的原因,在部落格的正則化操作部分已有介紹,這裡不再贅述。

談一談教育

今晚和研究生的師兄聊了會天,突然就說到教育的問題,有點感想,就寫下來,算是我對中國教育的一點看法吧。毫無疑問,中國的教育體制存在不少問題。在高中的時候或許還不是那麼明顯 對比起大學來說 上了大學,我才看清了我們教育的一些弊端。我覺得,最大的弊端,在於價值觀的引導問題上。不知道大家有沒和我一樣覺得當今...

談一談裁員

資本寒冬,經濟不景氣,要保持公司運作,可能會涉及到裁員。另外,有些員工的價值觀已經與公司不符,再留用可能會影響團隊和公司的和諧,此時也可能會涉及到裁員。裁員,不是說想裁就能裁的,需要考慮幾個方面 為什麼要裁?是否可以不裁?裁員是否會影響業務程序?裁員是否會付出經濟代價 賠償 裁員是否會負一定的法律責...

C 談一談this指標

當你進入乙個 房子 後,你可以看見桌子 椅子 地板等,但是房子你是看不到全貌了。對於乙個類的例項來說,你可以看到它的 成員函式 成員變數 但是例項本身呢?this是乙個 指標 它時時刻刻指向你這個 例項 本身class date void printdate 結果如下 進過反彙編,我們知道了 ecx...