機(jī)器學(xué)習(xí)中的正則化(Regularization)

文中部分圖片摘自吳恩達(dá)deeplearning課程的作業(yè)导帝,代碼及課件在我的github:
?DeepLearning 課件及作業(yè)

關(guān)于本篇正則化的具體路徑是:
?正則化作業(yè)

正則化的概念及原因

簡單來說癌刽,正則化是一種為了減小測試誤差的行為(有時(shí)候會(huì)增加訓(xùn)練誤差)穷缤。我們?cè)跇?gòu)造機(jī)器學(xué)習(xí)模型時(shí)槽片,最終目的是讓模型在面對(duì)新數(shù)據(jù)的時(shí)候灯抛,可以有很好的表現(xiàn)妇押。當(dāng)你用比較復(fù)雜的模型比如神經(jīng)網(wǎng)絡(luò),去擬合數(shù)據(jù)時(shí)跳昼,很容易出現(xiàn)過擬合現(xiàn)象(訓(xùn)練集表現(xiàn)很好般甲,測試集表現(xiàn)較差),這會(huì)導(dǎo)致模型的泛化能力下降鹅颊,這時(shí)候敷存,我們就需要使用正則化,降低模型的復(fù)雜度堪伍。

正則化的幾種常用方法

  • L1 & L2范數(shù)

首先介紹一下范數(shù)的定義锚烦,假設(shè) x 是一個(gè)向量,它的 L^p 范數(shù)定義:
||x||_p = (\sum_{i}^{}{|x_i|^p})^\frac{1}{p}
在目標(biāo)函數(shù)后面添加一個(gè)系數(shù)的“懲罰項(xiàng)”是正則化的常用方式帝雇,為了防止系數(shù)過大從而讓模型變得復(fù)雜涮俄。在加了正則化項(xiàng)之后的目標(biāo)函數(shù)為:
\bar{J}(w, b) = J(w, b) + \frac{\lambda}{2m}\Omega(w)
式中, \frac{\lambda}{2m} 是一個(gè)常數(shù)摊求, m 為樣本個(gè)數(shù)禽拔, \lambda 是一個(gè)超參數(shù)刘离,用于控制正則化程度室叉。

L^1 正則化時(shí)睹栖,對(duì)應(yīng)懲罰項(xiàng)為 L1 范數(shù) :
\Omega(w)=||w||_1 = \sum_{i}^{}{|w_i|}
L^2 正則化時(shí),對(duì)應(yīng)懲罰項(xiàng)為 L2 范數(shù):
\Omega(w)=||w||_2^2 = \sum_{i}^{}{w_i^2}
從上式可以看出茧痕,L^1 正則化通過讓原目標(biāo)函數(shù)加上了所有特征系數(shù)絕對(duì)值的和來實(shí)現(xiàn)正則化野来,而L^2 正則化通過讓原目標(biāo)函數(shù)加上了所有特征系數(shù)的平方和來實(shí)現(xiàn)正則化。

兩者都是通過加上一個(gè)和項(xiàng)來限制參數(shù)大小踪旷,卻有不同的效果:L^1 正則化更適用于特征選擇曼氛,而L^2 正則化更適用于防止模型過擬合

讓我們從梯度下降的角度入手令野,探究兩者的區(qū)別舀患。
為了方便敘述,假設(shè)數(shù)據(jù)只有兩個(gè)特征即 w_1,w_2 气破,考慮L^1 正則化的目標(biāo)函數(shù):
\bar{J} = J +\frac{ \lambda}{2m} (|w_1| +|w_2|)
在每次更新 w_1 時(shí):
w_1 :=w_1 - \alpha dw_1
=w_1-\frac{\alpha \lambda}{2m}sign(w_1)-\frac{\partial J}{\partial w_1}
w_1 為正數(shù)聊浅,則每次更新會(huì)減去一個(gè)常數(shù);若 w_1 為負(fù)數(shù)现使,則每次更新會(huì)加上一個(gè)常數(shù)低匙,所以很容易產(chǎn)生特征的系數(shù)為 0 的情況,特征系數(shù)為 0 表示該特征不會(huì)對(duì)結(jié)果有任何影響碳锈,因此L^1 正則化會(huì)讓特征變得稀疏顽冶,起到特征選擇的作用。

現(xiàn)考慮L^2 正則化的目標(biāo)函數(shù):
\bar{J} = J +\frac{ \lambda}{2m} (w_1^2 +w_2^2)
在每次更新 w_1 時(shí):
w_1 :=w_1 - \alpha dw_1
=(1-\frac{\alpha \lambda}{m})w_1-\frac{\partial J}{\partial w_1}
從上式可以看出每次更新時(shí)售碳,會(huì)對(duì)特征系數(shù)進(jìn)行一個(gè)比例的縮放而不是像L^1 正則化減去一個(gè)固定值强重,這會(huì)讓系數(shù)趨向變小而不會(huì)變?yōu)?0,因此L^2正則化會(huì)讓模型變得更簡單贸人,防止過擬合竿屹,而不會(huì)起到特征選擇的作用。
以上就是 L^1, L^2 正則化的作用以及區(qū)別灸姊。

下面來看一個(gè)課程中的例子拱燃,當(dāng)不使用正則化,發(fā)生過擬合時(shí):

overfitting

使用 正則化力惯,正常擬合
在這里插入圖片描述

在圖中可以有比較直觀的感受是碗誉,過擬合時(shí),分類邊界的起伏會(huì)更大父晶,也就是在部分點(diǎn)斜率更大哮缺,而正常擬合時(shí),分類邊界更加平緩甲喝。這也是為什么在目標(biāo)函數(shù)中加入“懲罰項(xiàng)”可以達(dá)到正則化的效果尝苇,“懲罰項(xiàng)”可以使每個(gè)參數(shù)趨向更小,在求導(dǎo)時(shí)斜率也會(huì)更小,等于變相的讓模型更加簡單了糠溜,更加簡單的模型當(dāng)然更加不容易過擬合淳玩。

訓(xùn)練集增強(qiáng)

更大數(shù)量的訓(xùn)練集是提升機(jī)器學(xué)習(xí)模型泛化能力最好的方法。做一個(gè)不可能的假設(shè)非竿,如果你的訓(xùn)練集包含了所有的你需要測試的數(shù)據(jù)蜕着,那么該模型的泛化能力將是100%(開個(gè)玩笑)。在實(shí)際項(xiàng)目中红柱,獲取訓(xùn)練數(shù)據(jù)的成本會(huì)很高承匣,這時(shí)候就需要我們自己來“創(chuàng)造”數(shù)據(jù)。希望在以后锤悄,GAN可以成功的應(yīng)用到訓(xùn)練集增強(qiáng)領(lǐng)域韧骗。
對(duì)于一些特定的場景,“創(chuàng)造”數(shù)據(jù)其實(shí)是很簡單的零聚,例如圖像識(shí)別袍暴。下面有一張6,我們可以對(duì)他采用小幅旋轉(zhuǎn)握牧,平移容诬,放大,縮小甚至給圖片加上波動(dòng)等方法沿腰,他的標(biāo)簽實(shí)際還是6览徒,但是我們已經(jīng)多了很多的訓(xùn)練數(shù)據(jù)。需要注意的是不應(yīng)做翻轉(zhuǎn)操作颂龙,因?yàn)?會(huì)翻轉(zhuǎn)成9习蓬,這會(huì)變成一個(gè)錯(cuò)誤的樣本。

6本來的樣子
旋轉(zhuǎn)20度
6翻了變成9

dropout

dropout 是一種計(jì)算方便但功能強(qiáng)大的正則化方法措嵌,適用于最近很火的神經(jīng)網(wǎng)絡(luò)躲叼。他的基本步驟是在每一次的迭代中,隨機(jī)刪除一部分節(jié)點(diǎn)企巢,只訓(xùn)練剩下的節(jié)點(diǎn)枫慷。每次迭代都會(huì)隨機(jī)刪除,每次迭代刪除的節(jié)點(diǎn)也都不一樣浪规,相當(dāng)于每次迭代訓(xùn)練的都是不一樣的網(wǎng)絡(luò)或听,通過這樣的方式降低節(jié)點(diǎn)之間的關(guān)聯(lián)性以及模型的復(fù)雜度,從而達(dá)到正則化的效果笋婿。這點(diǎn)上有點(diǎn)類似 bagging誉裆,但是遠(yuǎn)比 bagging 來的簡單。

直觀理解:


dropout之前(左)與dropout之后(右)

說dropout簡單是因?yàn)槟阒恍枰O(shè)置一個(gè)超參數(shù) keep_prob缸濒,這個(gè)參數(shù)的意義是每層節(jié)點(diǎn)隨機(jī)保留的比例足丢,比如將 keep_prob 設(shè)置為 0.7粱腻,那么就會(huì)隨機(jī)30%的節(jié)點(diǎn)消失,消失這個(gè)動(dòng)作其實(shí)很簡單斩跌,只是將這一層的參數(shù)矩陣與根據(jù) keep_prob 生成的 {0, 1} 矩陣做 逐點(diǎn)乘積绍些,當(dāng)然前向傳播與反向傳播都需要做以上的操作。

dropout的缺點(diǎn)在于滔驶,需要將訓(xùn)練集分為不同子集輸入每一次的迭代遇革,這就需要較大的訓(xùn)練集卿闹,所以在訓(xùn)練集較小的情況下揭糕,dropout的效果可能并不好。我們上面也說過锻霎,增大數(shù)據(jù)集是最好的正則化方式著角,所以在增大數(shù)據(jù)集的情況下,使用 dropout 需要使用的計(jì)算代價(jià)可能會(huì)比他帶來正則化效果更高旋恼,這需要我們?cè)趯?shí)際使用場景中做取舍吏口。

earlystopping

提前終止可能是最簡單的正則化方式,他適用于模型的表達(dá)能力很強(qiáng)的時(shí)候冰更。這種情況下产徊,一般訓(xùn)練誤差會(huì)隨著訓(xùn)練次數(shù)的增多逐漸下降,而測試誤差則會(huì)先下降而后再次上升蜀细。我們需要做的就是在測試誤差最低的點(diǎn)停止訓(xùn)練即可舟铜。
下面還是一個(gè)DL課程中的例子,分別展示了訓(xùn)練1500次與2500次時(shí)的訓(xùn)練誤差與測試誤差:

訓(xùn)練1500次奠衔,測試集上的正確率是82%
訓(xùn)練2500次谆刨,測試集上的正確率是80%

可以看出隨著訓(xùn)練次數(shù)的增加,訓(xùn)練誤差會(huì)一直下降归斤,而訓(xùn)練2500次的測試誤差要高于訓(xùn)練1500次的測試誤差痊夭,所以我們?cè)?500次的時(shí)候停止會(huì)更好。

以上就是機(jī)器學(xué)習(xí)中常用的幾種正則化方式脏里,正則化在機(jī)器學(xué)習(xí)中占了很重的地位她我,在《deep learning》中介紹了更多的正則化方法,有興趣的同學(xué)可以深入研究迫横。

如果你想用 Pytorch 做訓(xùn)練的話可以看看我的另一篇: 如何用 Pytorch 訓(xùn)練一個(gè)分類模型番舆?

最后,求贊求關(guān)注员淫,歡迎關(guān)注我的微信公眾號(hào)[MachineLearning學(xué)習(xí)之路] 合蔽,深度學(xué)習(xí) & CV 方向的童鞋不要錯(cuò)過!介返!

參考

《DeepLearning》
吳恩達(dá)-深度學(xué)習(xí)課程

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末拴事,一起剝皮案震驚了整個(gè)濱河市沃斤,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌刃宵,老刑警劉巖衡瓶,帶你破解...
    沈念sama閱讀 221,635評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異牲证,居然都是意外死亡哮针,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,543評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門坦袍,熙熙樓的掌柜王于貴愁眉苦臉地迎上來十厢,“玉大人,你說我怎么就攤上這事捂齐÷牛” “怎么了?”我有些...
    開封第一講書人閱讀 168,083評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵奠宜,是天一觀的道長包颁。 經(jīng)常有香客問我,道長压真,這世上最難降的妖魔是什么娩嚼? 我笑而不...
    開封第一講書人閱讀 59,640評(píng)論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮滴肿,結(jié)果婚禮上岳悟,老公的妹妹穿的比我還像新娘。我一直安慰自己嘴高,他們只是感情好竿音,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,640評(píng)論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著拴驮,像睡著了一般春瞬。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上套啤,一...
    開封第一講書人閱讀 52,262評(píng)論 1 308
  • 那天宽气,我揣著相機(jī)與錄音,去河邊找鬼潜沦。 笑死萄涯,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的唆鸡。 我是一名探鬼主播涝影,決...
    沈念sama閱讀 40,833評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼争占!你這毒婦竟也來了燃逻?” 一聲冷哼從身側(cè)響起序目,我...
    開封第一講書人閱讀 39,736評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎伯襟,沒想到半個(gè)月后猿涨,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,280評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡姆怪,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,369評(píng)論 3 340
  • 正文 我和宋清朗相戀三年叛赚,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片稽揭。...
    茶點(diǎn)故事閱讀 40,503評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡俺附,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出淀衣,到底是詐尸還是另有隱情昙读,我是刑警寧澤召调,帶...
    沈念sama閱讀 36,185評(píng)論 5 350
  • 正文 年R本政府宣布膨桥,位于F島的核電站,受9級(jí)特大地震影響唠叛,放射性物質(zhì)發(fā)生泄漏只嚣。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,870評(píng)論 3 333
  • 文/蒙蒙 一艺沼、第九天 我趴在偏房一處隱蔽的房頂上張望册舞。 院中可真熱鬧,春花似錦障般、人聲如沸调鲸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,340評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽藐石。三九已至,卻和暖如春定拟,著一層夾襖步出監(jiān)牢的瞬間于微,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,460評(píng)論 1 272
  • 我被黑心中介騙來泰國打工青自, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留株依,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,909評(píng)論 3 376
  • 正文 我出身青樓延窜,卻偏偏與公主長得像恋腕,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子逆瑞,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,512評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容