AI瘋狂進階——正則化篇

本文作者專注于AI進階算法抑月,正在推出AI瘋狂進階之基礎(chǔ)理論進階篇句惯,如有興趣可持續(xù)關(guān)注我。

核心導(dǎo)讀:

1.神經(jīng)網(wǎng)絡(luò)中的正則化是什么?

2.神經(jīng)網(wǎng)絡(luò)的正則化技術(shù)有哪些循诉?為何能防止過擬合横辆?

3.DropOut和BatchNorm混和使用存在什么問題?

4.BatchNorm出現(xiàn)后茄猫,L2 Regularization消失了狈蚤?

1.神經(jīng)網(wǎng)絡(luò)中的正則化是什么?

神經(jīng)網(wǎng)絡(luò)參數(shù)量經(jīng)常多達幾萬甚至數(shù)十萬划纽,在訓(xùn)練數(shù)據(jù)較少的時候脆侮,常常會導(dǎo)致網(wǎng)絡(luò)過擬合。正則化方法即為向原始模型引入額外信息勇劣,以便防止過擬合和提高模型泛化性能的一類方法的統(tǒng)稱靖避。如下圖,數(shù)據(jù)的實際分布是綠色這條線比默,但訓(xùn)練數(shù)據(jù)(藍色圓圈點)只采樣了10組(稍微偏離真實分布是正常的幻捏,例如噪聲數(shù)據(jù)/錯誤標(biāo)注的數(shù)據(jù)影響等),通過網(wǎng)絡(luò)訓(xùn)練命咐,擬合出的紅色這條“想象力”過于豐富上下橫跳的曲線篡九,雖然它完美的擬合了所有訓(xùn)練數(shù)據(jù),但確并不是真實的分布醋奠,這種情況就是過擬合榛臼。過擬合的模型通常是在訓(xùn)練集表現(xiàn)很好,而測試集表現(xiàn)較差窜司。如果想要模型有更強的泛化能力沛善,那么就需要給網(wǎng)絡(luò)增加正則化。

2.神經(jīng)網(wǎng)絡(luò)的正則化技術(shù)有哪些塞祈?

神經(jīng)網(wǎng)絡(luò)的正則化技術(shù)有很多種路呜,包括數(shù)據(jù)增強,L1&L2 ,dropout胀葱,BatchNorm漠秋,earlystopping等方法,這些方法為何能防止過擬合抵屿?下面結(jié)合理論和個人的一些工程經(jīng)驗來詳細(xì)說明:

(1)數(shù)據(jù)增強

數(shù)據(jù)增強是提升模型模型泛化能力最好最直接的方法庆锦。假如說訓(xùn)練集已經(jīng)包含了所有需要測試的數(shù)據(jù),那么你只需要想方設(shè)法在訓(xùn)練數(shù)據(jù)上過擬合就行轧葛,我們在很多封閉環(huán)境的項目中就是這么干的搂抒,基本不需要模型泛化到其他開放場景,封閉環(huán)境意味著數(shù)據(jù)的變化范圍非常小尿扯,因此也很容易獲取到覆蓋幾乎所有情況下(光照/角度/大小等)的數(shù)據(jù)求晶。但在開放環(huán)境的項目中,獲取訓(xùn)練數(shù)據(jù)的成本會很高而且很難覆蓋齊全衷笋,這時候就需要我們自己來“創(chuàng)造”數(shù)據(jù)芳杏。那么,如何擴增數(shù)據(jù)辟宗?我會在后面的專題中詳細(xì)介紹爵赵。

(2)L1 Regularization

L1 Regularization表示在模型的損失函數(shù)中增加參數(shù)絕對值之和,如下圖所示:

對損失函數(shù)求導(dǎo)得到:

按照梯度下降法則泊脐,由于sgn(w)的影響空幻,當(dāng)w為正時,更新后的w變腥菘汀秕铛;當(dāng)w為負(fù)時,更新后的w變大——因此它的效果就是讓w往0靠缩挑,使網(wǎng)絡(luò)中的權(quán)重盡可能為0如捅,也就相當(dāng)于減小了網(wǎng)絡(luò)復(fù)雜度,相當(dāng)于剔除了部分較小的特征(可能是噪聲引起的)调煎,防止過擬合镜遣。

(3)L2 Regularization

L2 Regularization表示在模型的損失函數(shù)中增加參數(shù)的平方的和的開方值,如下圖所示:

對損失函數(shù)求導(dǎo)得到:

按照梯度下降法則:

在不使用L2 Regularization時士袄,求導(dǎo)結(jié)果中w前系數(shù)為1悲关,現(xiàn)在w前面系數(shù)為 1-ηλ/n ,因為η娄柳、λ寓辱、n都是正的,所以 1-ηλ/n小于1赤拒,它的效果是減小w秫筏,這也就是權(quán)重衰減(weight decay)的由來诱鞠。那么,L2 Regularization為什么能防止過擬合这敬?簡單來說航夺,L2 Regularization會使整個網(wǎng)絡(luò)的參數(shù)的數(shù)值很小,那么崔涂,如果輸入數(shù)據(jù)差異性較大的時候阳掐,數(shù)值更小的網(wǎng)絡(luò)能讓輸出的數(shù)據(jù)差異性變小,數(shù)值更大的網(wǎng)絡(luò)則會讓逐層誤差放大導(dǎo)致結(jié)果差異性很大冷蚂,所以L2 Regularization能提高網(wǎng)絡(luò)的泛化性能缭保。

(4)dropout

dropout是指在神經(jīng)網(wǎng)絡(luò)的訓(xùn)練過程中,對于神經(jīng)元按照一定的概率將其暫時從網(wǎng)絡(luò)中丟棄(數(shù)值置0)蝙茶,而在預(yù)測的過程中會保留所有的神經(jīng)元進行計算艺骂。由于神經(jīng)元代表某一類抽象的特征,dropout相當(dāng)于特征掩膜隆夯,對應(yīng)到原圖上其實就是拿一塊黑布遮擋在物體某些關(guān)鍵位置上面钳恕。那么,這種掩膜的好處是什么吮廉?如果我遮擋了一些特征或者說物體的某一部分苞尝,要想網(wǎng)絡(luò)還能識別對畸肆,就需要網(wǎng)絡(luò)讓那些未掩膜的神經(jīng)元學(xué)習(xí)到更強的表達能力宦芦。dropout通過訓(xùn)練過程中隨機drop就可以達到對特征的強化,減少噪聲或者臟樣本帶來的影響轴脐,從而提高泛化能力调卑。近些年在dropout上也有一些改進版本,如AAAI 2019上的《Weighted Channel Dropout for Regularization of Deep Convolutional Neural Network 》論文發(fā)現(xiàn)對于每張輸入圖像大咱,更高層中僅有少量通道被激活恬涧,同時其它通道中的神經(jīng)元響應(yīng)接近于零,因此該作者提出了一種根據(jù)激活的相對幅度來選擇通道的方法碴巾,簡單來說溯捆,原始的dropout是特征圖[H W C]上所有點的隨機drop,而WCD是按照SE Net的思路先計算出[C]的重要度厦瓢,再在這個基礎(chǔ)上進行[C]的隨機drop提揍,[C]中重要度高的會以更大的概率被保留,以此來進一步強化這些重要的特征煮仇。

(5)BatchNorm

BatchNorm的提出主要是為了Internal Covariate Shift問題劳跃,ICS現(xiàn)象具體來說:深度神經(jīng)網(wǎng)絡(luò)涉及到很多層的疊加,而每一層的參數(shù)更新會導(dǎo)致后面層輸入數(shù)據(jù)分布發(fā)生變化浙垫,網(wǎng)絡(luò)前面幾層發(fā)生微小的改變刨仑,那么通過層層疊加放大差異性郑诺,深層的輸入分布變化會非常劇烈,這就使得深層需要不斷去重新適應(yīng)輸入層的數(shù)據(jù)變化杉武, 在使用BN前辙诞,減小學(xué)習(xí)率、小心的權(quán)重初始化的最主要目的使其輸出的數(shù)據(jù)分布不要發(fā)生太大的變化艺智。簡單來說倘要,BatchNorm主要是為了解決不同訓(xùn)練數(shù)據(jù)通過深層網(wǎng)絡(luò)后分布差異性過大問題,它可以控制數(shù)值區(qū)間十拣,讓比較深的網(wǎng)絡(luò)訓(xùn)練起來穩(wěn)定性比較好封拧,更不容易產(chǎn)生梯度爆炸,從某種程度上來說也是一種正則化夭问。下圖左圖是沒有經(jīng)過任何處理的輸入數(shù)據(jù)泽西,曲線是sigmoid函數(shù),如果數(shù)據(jù)在梯度很小的區(qū)域缰趋,那么學(xué)習(xí)率就會很慢甚至陷入長時間的停滯捧杉。經(jīng)過BatchNorm后數(shù)據(jù)就被移到中心區(qū)域如右圖所示,對于大多數(shù)激活函數(shù)而言秘血,這個區(qū)域的梯度都是最大的或者是有梯度的(比如ReLU)味抖。BatchNorm是非常重要的一個環(huán)節(jié),下面就BatchNorm相關(guān)的細(xì)節(jié)做了一一總結(jié):

A.BatchNorm怎么做灰粮?

計算流程如下圖仔涩,需要注意的是,BatchNorm計算的維度是Channel維度粘舟,也就是說對于[B H W C]=[128, 32, 32, 64]這樣的Feature Map來說熔脂,BatchNorm得到的均值和方差的維度是[C]=[64],同時γ和β也是同樣的維度柑肴。從下面tensorflow中BatchNorm的實現(xiàn)代碼也能看出來霞揉。

B.為什么要學(xué)習(xí)γ和β?

減均值除方差得到的分布是正態(tài)分布晰骑,我們能否認(rèn)為正態(tài)分布就是最好或最能體現(xiàn)我們訓(xùn)練樣本的特征分布呢适秩?顯然是不能的,因為數(shù)據(jù)的分布是千變?nèi)f化的硕舆,這里增加γ和β的學(xué)習(xí)只是為了緩解理想分布和真實分布的差距秽荞。

C.預(yù)測時均值和方差怎么求?

在訓(xùn)練時岗宣,我們會對同一批的數(shù)據(jù)的均值和方差進行求解蚂会,進而進行歸一化操作。但是對于預(yù)測時我們的均值和方差怎么求呢耗式?比如我們預(yù)測單個樣本時胁住,那還怎么求均值和方法呀趁猴!其實是這種樣子的,對于預(yù)測階段時所使用的均值和方差彪见,其實也是來源于訓(xùn)練集儡司。比如我們在模型訓(xùn)練時我們就記錄下每個batch下的均值和方差,待訓(xùn)練完畢后余指,我們求整個訓(xùn)練樣本的均值和方差期望值捕犬,作為我們進行預(yù)測時進行BN的的均值和方差。在tensorflow中酵镜,在訓(xùn)練過程中是通過滑動平均(tf.train.ExponentialMovingAverage)跟新均值和方差碉碉,在預(yù)測的時候直接取影子變量即可,具體代碼如下:

D.BatchNorm合并到卷積層中

BatchNorm 在訓(xùn)練時起到了積極作用淮韭,但是在網(wǎng)絡(luò)前向推斷時增加了運算垢粮,目前像ResNet,MobileNet靠粪,Xception蜡吧,ShuffleNet 等都使用了BatchNorm 。由于BatchNorm是線性運算占键,并且參數(shù)在訓(xùn)練完畢后都可以確定下來昔善, 因此,我們可以將 訓(xùn)練好的模型的BatchNorm層的參數(shù)合并到卷積層畔乙,來提升模型前向推斷的速度君仆。在顯卡 GTX 1080Ti,i7 CPU配置的機器上啸澡,將Resnet50 模型的BatchNorm合并到卷積層中袖订,CPU前向提高了10%氮帐,GPU前向提高了50%嗅虏。具體合并過程如下圖:

E.BatchNorm存在哪些問題?

a.如果 Batch Size 太小上沐,則 BN 效果明顯下降

b.對于有些像素級圖片生成任務(wù)來說皮服,BN 效果不佳

c.RNN 等動態(tài)網(wǎng)絡(luò)使用 BN 效果不佳,且使用起來不方便

3.DropOut和BatchNorm混和使用存在什么問題参咙?

BatchNorm和DropOut單獨使用都能減少過擬合并加速訓(xùn)練速度龄广,但如果一起使用的話并不會產(chǎn)生1+1>2的效果,相反可能會得到比單獨使用更差的效果蕴侧≡裢《Understanding the Disharmony between Dropout and Batch Normalization by Variance Shift》指出沖突的關(guān)鍵是網(wǎng)絡(luò)狀態(tài)切換過程中存在神經(jīng)方差的(neural variance)不一致行為,因為DropOut在訓(xùn)練過程中會對神經(jīng)元產(chǎn)生隨機掩膜净宵,而預(yù)測的時候不會敲才,所以訓(xùn)練過程中統(tǒng)計的均值和方差可能與預(yù)測的相差比較大裹纳。論文采用了兩種策略來探索如何打破這種局限,一個是在所有BatchNorm層后使用 Dropout紧武,另一個就是修改 Dropout 的公式讓它對方差并不那么敏感剃氧,就是高斯Dropout。

4.BatchNorm出現(xiàn)后阻星,L2 Regularization消失了朋鞍?

BatchNorm出現(xiàn)之后,基本很少場景中看到L2 Regularization的使用了妥箕,通俗的理解是BatchNorm的出現(xiàn)就是為了解決層與層之間數(shù)據(jù)分布差異大的問題滥酥,使用BatchNorm理論上是允許每層的數(shù)據(jù)差異性可在一定的范圍內(nèi),而L2 Regularization是讓數(shù)據(jù)變小防止輸入差異大導(dǎo)致層層傳遞誤差累積過大畦幢,所以BatchNorm更像是從本質(zhì)上解決了問題恨狈,而L2 Regularization更像是一個技巧而已∏航玻《L2 Regularization versus Batch and Weight Normalization》論文中也證明了BatchNorm對參數(shù)放縮不敏感禾怠,如下圖公式推導(dǎo),而L2正則的作用就是整體地縮小參數(shù)大小贝搁,但經(jīng)過BatchNorm后吗氏,這種放縮的效果全都消失,也就是說有了BatchNorm之后雷逆,L2正則的效果對于網(wǎng)絡(luò)的輸出是沒有任何效果的弦讽。那么,L2 Regularization加BatchNorm到底影響了啥膀哲?實際上往产,L2對所有參數(shù)進行放縮,其對應(yīng)的梯度也會放縮某宪,因此L2之于BatchNorm僅僅只起到了一個learning rate動態(tài)調(diào)節(jié)的作用仿村,這個作用到底是好還是壞就得看具體的任務(wù)了。

5.小結(jié)

本文對神經(jīng)網(wǎng)絡(luò)中幾種常見的正則化技術(shù)進行了總結(jié)兴喂,對正則化技術(shù)混用帶來的一些問題進行了理論分析蔼囊。在實際工程項目中,數(shù)據(jù)增強永遠是最直接最好的手段衣迷,BatchNorm基本在目前主流的網(wǎng)絡(luò)中都有畏鼓,DropOut通常只在網(wǎng)絡(luò)的最后一層象征性的加一下試試,而L1/L2基本已經(jīng)很少用了壶谒,除了在一些需要模型壓縮的場景中云矫。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市汗菜,隨后出現(xiàn)的幾起案子让禀,更是在濱河造成了極大的恐慌贵少,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,576評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件堆缘,死亡現(xiàn)場離奇詭異滔灶,居然都是意外死亡,警方通過查閱死者的電腦和手機吼肥,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,515評論 3 399
  • 文/潘曉璐 我一進店門录平,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人缀皱,你說我怎么就攤上這事斗这。” “怎么了啤斗?”我有些...
    開封第一講書人閱讀 168,017評論 0 360
  • 文/不壞的土叔 我叫張陵表箭,是天一觀的道長。 經(jīng)常有香客問我钮莲,道長免钻,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,626評論 1 296
  • 正文 為了忘掉前任崔拥,我火速辦了婚禮极舔,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘链瓦。我一直安慰自己拆魏,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 68,625評論 6 397
  • 文/花漫 我一把揭開白布慈俯。 她就那樣靜靜地躺著渤刃,像睡著了一般。 火紅的嫁衣襯著肌膚如雪贴膘。 梳的紋絲不亂的頭發(fā)上卖子,一...
    開封第一講書人閱讀 52,255評論 1 308
  • 那天,我揣著相機與錄音步鉴,去河邊找鬼揪胃。 笑死璃哟,一個胖子當(dāng)著我的面吹牛氛琢,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播随闪,決...
    沈念sama閱讀 40,825評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼阳似,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了铐伴?” 一聲冷哼從身側(cè)響起撮奏,我...
    開封第一講書人閱讀 39,729評論 0 276
  • 序言:老撾萬榮一對情侶失蹤俏讹,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后畜吊,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體泽疆,經(jīng)...
    沈念sama閱讀 46,271評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,363評論 3 340
  • 正文 我和宋清朗相戀三年玲献,在試婚紗的時候發(fā)現(xiàn)自己被綠了殉疼。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,498評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡捌年,死狀恐怖瓢娜,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情礼预,我是刑警寧澤眠砾,帶...
    沈念sama閱讀 36,183評論 5 350
  • 正文 年R本政府宣布,位于F島的核電站托酸,受9級特大地震影響褒颈,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜励堡,卻給世界環(huán)境...
    茶點故事閱讀 41,867評論 3 333
  • 文/蒙蒙 一哈肖、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧念秧,春花似錦淤井、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,338評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至砾层,卻和暖如春漩绵,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背肛炮。 一陣腳步聲響...
    開封第一講書人閱讀 33,458評論 1 272
  • 我被黑心中介騙來泰國打工止吐, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人侨糟。 一個月前我還...
    沈念sama閱讀 48,906評論 3 376
  • 正文 我出身青樓碍扔,卻偏偏與公主長得像,于是被迫代替她去往敵國和親秕重。 傳聞我的和親對象是個殘疾皇子不同,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,507評論 2 359

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