https://blog.csdn.net/liujiandu101/article/details/55103831
正則化是機(jī)器學(xué)習(xí)中非常重要并且非常有效的減少泛華誤差的技術(shù)类茂,特別是在深度學(xué)習(xí)模型中,由于其模型參數(shù)非常多非常容易產(chǎn)生過(guò)擬合血筑。因此研究者也提出很多有效的技術(shù)防止過(guò)擬合,比較常用的技術(shù)包括:
參數(shù)添加約束裙士,例如L1蒿辙、L2范數(shù)等
訓(xùn)練集合擴(kuò)充院峡,例如添加噪聲、數(shù)據(jù)變換等
Dropout
該文主要介紹深度學(xué)習(xí)中比較常見(jiàn)幾類(lèi)正則化方法以及常用參數(shù)選擇疤估,并試圖解釋其原理灾常。
通過(guò)對(duì)模型參數(shù)添加懲罰參數(shù)來(lái)限制模型能力,常用的就是在損失函數(shù)基礎(chǔ)上添加范數(shù)約束铃拇。
通常情況下钞瀑,深度學(xué)習(xí)中只對(duì)仿射參數(shù)添加約束,對(duì)偏置項(xiàng)不加約束慷荔。主要原因是偏置項(xiàng)一般需要較少的數(shù)據(jù)就能精確的擬合雕什。如果添加約束常常會(huì)導(dǎo)致欠擬合。
參數(shù)約束添加L2范數(shù)懲罰項(xiàng)显晶,該技術(shù)也稱(chēng)之為Weight Decay贷岸、嶺回歸、Tikhonov regularization等磷雇。
通過(guò)最優(yōu)化技術(shù)偿警,例如梯度相關(guān)方法可以很快推導(dǎo)出,參數(shù)優(yōu)化公式為
其中為學(xué)習(xí)率唯笙,相對(duì)于正常的梯度優(yōu)化公式户敬,對(duì)參數(shù)乘上一個(gè)縮減因子落剪。
假設(shè)J是一個(gè)二次優(yōu)化問(wèn)題時(shí),模型參數(shù)可以進(jìn)一步表示為尿庐,即相當(dāng)于在原來(lái)的參數(shù)上添加了一個(gè)控制因子,其中是參數(shù)Hessian矩陣的特征值呢堰。由此可見(jiàn)?
1. 當(dāng)時(shí)抄瑟,懲罰因子作用比較小。?
2. 當(dāng)時(shí)枉疼,對(duì)應(yīng)的參數(shù)會(huì)縮減至0
對(duì)模型參數(shù)添加L1范數(shù)約束皮假,即
如果通過(guò)梯度方法進(jìn)行求解時(shí),參數(shù)梯度為
特殊情況下骂维,對(duì)于二次優(yōu)化問(wèn)題惹资,并且假設(shè)對(duì)應(yīng)的Hessian矩陣是對(duì)角矩陣,可以推導(dǎo)出參數(shù)遞推公式為航闺,從中可以看出?
當(dāng)時(shí)褪测,對(duì)應(yīng)的參數(shù)會(huì)縮減到0,這也是和L2正則不同地方潦刃。?
對(duì)比L2優(yōu)化方法侮措,L2不會(huì)直接將參數(shù)縮減為0,而是一個(gè)非常接近于0的值乖杠。
主要區(qū)別如下:
通過(guò)上面的分析分扎,L1相對(duì)于L2能夠產(chǎn)生更加稀疏的模型,即當(dāng)L1正則在參數(shù)w比較小的情況下胧洒,能夠直接縮減至0.因此可以起到特征選擇的作用畏吓,該技術(shù)也稱(chēng)之為 LASSO
如果從概率角度進(jìn)行分析,很多范數(shù)約束相當(dāng)于對(duì)參數(shù)添加先驗(yàn)分布卫漫,其中L2范數(shù)相當(dāng)于參數(shù)服從高斯先驗(yàn)分布菲饼;L1范數(shù)相當(dāng)于拉普拉斯分布。
從另外一個(gè)角度可以將范數(shù)約束看出帶有參數(shù)的約束優(yōu)化問(wèn)題汛兜。帶有參數(shù)懲罰的優(yōu)化目標(biāo)為
帶約束的最優(yōu)問(wèn)題巴粪,可以表示為
通過(guò)KKT條件進(jìn)行求解時(shí),對(duì)應(yīng)的拉格朗日函數(shù)為
從約束優(yōu)化問(wèn)題也可以進(jìn)一步看出粥谬,L1相對(duì)于L2能產(chǎn)生更稀疏的解肛根。?
從圖中可以看出,L1最優(yōu)解常常出現(xiàn)在定點(diǎn)處漏策,此時(shí)某些維度上的值肯定為0.
防止過(guò)擬合最有效的方法是增加訓(xùn)練集合派哲,訓(xùn)練集合越大過(guò)擬合概率越小。數(shù)據(jù)集合擴(kuò)充是一個(gè)省時(shí)有效的方法掺喻,但是在不同領(lǐng)域方法不太通用芭届。?
1. 在目標(biāo)識(shí)別領(lǐng)域常用的方法是將圖片進(jìn)行旋轉(zhuǎn)储矩、縮放等(圖片變換的前提是通過(guò)變換不能改變圖片所屬類(lèi)別,例如手寫(xiě)數(shù)字識(shí)別褂乍,類(lèi)別6和9進(jìn)行旋轉(zhuǎn)后容易改變類(lèi)目)?
2. 語(yǔ)音識(shí)別中對(duì)輸入數(shù)據(jù)添加隨機(jī)噪聲?
3. NLP中常用思路是進(jìn)行近義詞替換?
4. 噪聲注入持隧,可以對(duì)輸入添加噪聲,也可以對(duì)隱藏層或者輸出層添加噪聲逃片。例如對(duì)于softmax 分類(lèi)問(wèn)題可以通過(guò) Label Smoothing技術(shù)添加噪聲屡拨,對(duì)于類(lèi)目0-1添加噪聲,則對(duì)應(yīng)概率變成
Dropout是一類(lèi)通用并且計(jì)算簡(jiǎn)潔的正則化方法褥实,在2014年被提出后廣泛的使用呀狼。?
簡(jiǎn)單的說(shuō),Dropout在訓(xùn)練過(guò)程中损离,隨機(jī)的丟棄一部分輸入哥艇,此時(shí)丟棄部分對(duì)應(yīng)的參數(shù)不會(huì)更新。相當(dāng)于Dropout是一個(gè)集成方法僻澎,將所有子網(wǎng)絡(luò)結(jié)果進(jìn)行合并貌踏,通過(guò)隨機(jī)丟棄輸入可以得到各種子網(wǎng)絡(luò)。例如?
例如上圖怎棱,通過(guò)不同的輸入屏蔽相當(dāng)于學(xué)習(xí)到所有子網(wǎng)絡(luò)結(jié)構(gòu)哩俭。
因此前向傳播過(guò)程變成如下形式:?
相當(dāng)于每層輸入多了一個(gè)屏蔽向量來(lái)控制該層有哪些輸入會(huì)被屏蔽掉。
經(jīng)驗(yàn):原始輸入每一個(gè)節(jié)點(diǎn)選擇概率0.8拳恋,隱藏層選擇概率為0.5
既然Dropout過(guò)程類(lèi)似于集成方法凡资,預(yù)測(cè)時(shí)需要將所有相關(guān)模型進(jìn)行求平均,對(duì)于Dropout而言谬运,然而遍歷所有屏蔽變量不是可能的事情隙赁,因此需要一些策略進(jìn)行預(yù)測(cè)。?
1. 隨機(jī)選擇10-20個(gè)屏蔽向量就可以得到一個(gè)較好的解梆暖。?
2. 采用幾何平均然后在歸一化的思路伞访。
因此只要估計(jì)出,2012年Hinton給出一種估計(jì)方法轰驳,可以只需要一遍前向傳播計(jì)算最終估計(jì)值厚掷,模型參數(shù)乘上其對(duì)應(yīng)輸入單元被包含的概率。該方法也被稱(chēng)為“Weight scaling inference rule”?
3. 由于隱藏層節(jié)點(diǎn)drop的概率常選取0.5级解,因此模型權(quán)重常常除2即可冒黑;也可以在訓(xùn)練階段將模型參數(shù)乘上2
假設(shè)對(duì)于多分類(lèi)問(wèn)題,采用softmax進(jìn)行多分類(lèi)勤哗,假設(shè)只有一個(gè)隱藏層抡爹,輸入變量為v,輸入的屏蔽變量為 d芒划,d元素選取概率為1/2.?
則有?
d*v 代表對(duì)應(yīng)元素相乘冬竟,根據(jù)幾何平均欧穴,需要估計(jì)?
每一步推導(dǎo)基本上都是公式代入的過(guò)程,仔細(xì)一點(diǎn)看懂沒(méi)問(wèn)題泵殴。?
最后一步需要遍歷所有的屏蔽向量d涮帘,然而完全遍歷并且累加后可以得到2^n-1,在除以2^n袋狞,最后得到1/2.?
簡(jiǎn)單以二維舉例焚辅,則d可以選擇的范圍包括(0,0)(0,1)(1,0)(1,1)則每一維度都累加了2次,除以4可以得到1/2
相比于weight decay苟鸯、范數(shù)約束等,該策略更有效
計(jì)算復(fù)雜度低棚点,實(shí)現(xiàn)簡(jiǎn)單而且可以用于其他非深度學(xué)習(xí)模型
但是當(dāng)訓(xùn)練數(shù)據(jù)較少時(shí)早处,效果不好
dropout訓(xùn)練過(guò)程中的隨機(jī)過(guò)程不是充分也不是必要條件,可以構(gòu)造不變的屏蔽參數(shù)瘫析,也能夠得到足夠好的解砌梆。
通過(guò)參數(shù)共享的方法,通過(guò)共享P(x)和P(y|x)的底層參數(shù)能有效解決過(guò)擬合贬循。
多任務(wù)學(xué)習(xí)通過(guò)多個(gè)任務(wù)之間的樣本采樣來(lái)達(dá)到減少泛化誤差咸包。?
多任務(wù)學(xué)習(xí)可以將多個(gè)相關(guān)任務(wù)同時(shí)學(xué)習(xí),并且共享某些參數(shù)杖虾。多任務(wù)可以包括有監(jiān)督和無(wú)監(jiān)督學(xué)習(xí)烂瘫。?
對(duì)于深度學(xué)習(xí)而言,可以共享底層隱藏層自然支持多任務(wù)學(xué)習(xí)奇适。
在模型訓(xùn)練過(guò)程中經(jīng)常出現(xiàn)隨著不斷迭代坟比,訓(xùn)練誤差不斷減少,但是驗(yàn)證誤差減少后開(kāi)始增長(zhǎng)嚷往。?
提前停止(Early Stopping)的策略是:在驗(yàn)證誤差不在提升后葛账,提前結(jié)束訓(xùn)練;而不是一直等待驗(yàn)證誤差到最小值皮仁。
提前停止策略使用起來(lái)非常方便籍琳,不需要改變?cè)袚p失函數(shù),簡(jiǎn)單而且執(zhí)行效率高贷祈。
但是它需要一個(gè)額外的空間來(lái)備份一份參數(shù)
提前停止策略可以和其他正則化策略一起使用趋急。
提前停止策略確定訓(xùn)練迭代次數(shù)后,有兩種策略來(lái)充分利用訓(xùn)練數(shù)據(jù)付燥,一是將全量訓(xùn)練數(shù)據(jù)一起訓(xùn)練一定迭代次數(shù)宣谈;二是迭代訓(xùn)練流程直到訓(xùn)練誤差小于提前停止策略的驗(yàn)證誤差。
對(duì)于二次優(yōu)化目標(biāo)和線性模型键科,提前停止策略相當(dāng)于L2正則化闻丑。
前提假設(shè):如果兩個(gè)學(xué)習(xí)任務(wù)比較相似漩怎,我們相信兩個(gè)模型參數(shù)比較接近。因此可以加上一些約束條件嗦嗡,例如假設(shè)懲罰項(xiàng)
添加范數(shù)懲罰只是參數(shù)共享的一種策略勋锤,比較通用的策略是可以讓部分參數(shù)集合保持一致。
Bagging方法是一種通用的降低泛化誤差的方法侥祭,通過(guò)合并多個(gè)模型的結(jié)果叁执,也叫作模型平均,高級(jí)稱(chēng)呼為 集成化方法矮冬。
Bagging的策略很多谈宛,例如不同初始化方法、不同mini batch選擇方法胎署、不同的超參數(shù)選擇方法吆录。
與之對(duì)應(yīng)的集成方法是Boosting,通過(guò)改變樣本權(quán)重來(lái)訓(xùn)練不同模型琼牧。
對(duì)抗訓(xùn)練的一個(gè)主要思路是恢筝,總有些輸入變量x和x’,他們本身非常相似但是屬于不同的類(lèi)別巨坊。如果能單獨(dú)拿出來(lái)特殊對(duì)待能夠取得比較好的效果撬槽。?
主要問(wèn)題是:對(duì)抗樣本比較難搜集。
正則化是模型優(yōu)化中非常重要的降低泛化誤差的手段趾撵,在深度學(xué)習(xí)中尤其如此侄柔,當(dāng)模型效果不好時(shí),除了調(diào)節(jié)優(yōu)化算法本身外鼓寺,可以嘗試L1勋拟、L2正則、數(shù)據(jù)擴(kuò)充妈候、提前停止和dropout等策略