.精品久久久麻豆国产精品,а√天堂网www在线中文,国产成人欧美一区二区三区,疯狂的欧美乱大交另类,99热都是精品久久久久久

Aug 17, 2020

在深度學(xué)習(xí)中對(duì)正則化的直觀認(rèn)識(shí)


在機(jī)器學(xué)習(xí)中,正則化是一種用來(lái)對(duì)抗高方差的方法——換句話說(shuō),就是模型學(xué)習(xí)再現(xiàn)數(shù)據(jù)的問(wèn)題,而不是關(guān)于問(wèn)題的潛在語(yǔ)義。與人類學(xué)習(xí)類似,我們的想法是構(gòu)建家庭作業(yè)問(wèn)題來(lái)測(cè)試和構(gòu)建知識(shí),而不是簡(jiǎn)單的死記硬背:例如,學(xué)習(xí)乘法表,而不是學(xué)習(xí)如何乘。

55e736d12f2eb9386b3587dd7c07a732e5dd6f36

獲得對(duì)正則化的直觀認(rèn)識(shí)

在機(jī)器學(xué)習(xí)中,正則化是一種用來(lái)對(duì)抗高方差的方法——換句話說(shuō),就是模型學(xué)習(xí)再現(xiàn)數(shù)據(jù)的問(wèn)題,而不是關(guān)于問(wèn)題的潛在語(yǔ)義。與人類學(xué)習(xí)類似,我們的想法是構(gòu)建家庭作業(yè)問(wèn)題來(lái)測(cè)試和構(gòu)建知識(shí),而不是簡(jiǎn)單的死記硬背:例如,學(xué)習(xí)乘法表,而不是學(xué)習(xí)如何乘。

這種現(xiàn)象在神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)中尤為普遍——學(xué)習(xí)能力越強(qiáng),記憶的可能性就越大,這取決于我們這些實(shí)踐者如何引導(dǎo)深度學(xué)習(xí)模型來(lái)吸收我們的問(wèn)題,而不是我們的數(shù)據(jù)。你們中的許多人在過(guò)去都曾遇到過(guò)這些方法,并且可能已經(jīng)對(duì)不同的正則化方法如何影響結(jié)果形成了自己的直觀認(rèn)識(shí)。為你們中那些不知道的人(甚至為那些知道的人?。┍疚臑檎齽t化神經(jīng)網(wǎng)絡(luò)參數(shù)的形成提供了直觀的指導(dǎo)。將這些方面可視化是很重要的,因?yàn)槿藗兒苋菀讓⒃S多概念視為理所當(dāng)然;本文中的圖形和它們的解釋將幫助你直觀地了解,當(dāng)你增加正則化時(shí),模型參數(shù)的實(shí)際情況。

在本文中,我將把 L2 和 dropouts 作為正則化的標(biāo)準(zhǔn)形式。我不會(huì)討論其他方法(例如收集更多數(shù)據(jù))如何改變模型的工作方式。

所有的圖形和模型都是用標(biāo)準(zhǔn)的科學(xué)Python堆棧制作的:numpy、matplotlib、scipy、sklearn,而神經(jīng)網(wǎng)絡(luò)模型則是用PyTorch構(gòu)建的。

開(kāi)發(fā)復(fù)雜函數(shù)

深度學(xué)習(xí)的核心原則之一是深度神經(jīng)網(wǎng)絡(luò)作為通用函數(shù)逼近的能力。無(wú)論你感興趣的是什么,疾病傳播,自動(dòng)駕駛汽車(chē),天文學(xué)等,都可以通過(guò)一個(gè)自學(xué)習(xí)模型來(lái)壓縮和表達(dá),這種想法絕對(duì)是令人驚奇的!盡管你感興趣的問(wèn)題實(shí)際上是是否可以用解析函數(shù)f來(lái)表示這些問(wèn)題,但當(dāng)你通過(guò)訓(xùn)練來(lái)調(diào)整機(jī)器學(xué)習(xí)模型時(shí),該模型采用的參數(shù)θ允許模型近似地學(xué)習(xí) f*。

出于演示的目的,我們將查看一些相對(duì)簡(jiǎn)單的數(shù)據(jù):理想情況下,一維中的某些數(shù)據(jù)足夠復(fù)雜,足以使老式曲線擬合變得痛苦,但還不足以使抽象和理解變得困難。我要?jiǎng)?chuàng)建一個(gè)復(fù)雜的函數(shù)來(lái)模擬周期信號(hào),但是要加入一些有趣的東西。下面的函數(shù)實(shí)現(xiàn)如下方程:

1

其中A,B,C是從不同高斯分布中采樣的隨機(jī)數(shù)。這些值的作用是在非常相似的函數(shù)之間加上滯后,使得它們隨機(jī)地加在一起產(chǎn)生非常不同的f值。我們還將在數(shù)據(jù)中添加白色(高斯)噪聲,以模擬所收集數(shù)據(jù)的效果。

讓我們將隨機(jī)生成的數(shù)據(jù)樣本可視化:在本文的其余部分中,我們將使用一個(gè)小的神經(jīng)網(wǎng)絡(luò)來(lái)重現(xiàn)這條曲線。

2

為了進(jìn)行我們的模型訓(xùn)練,我們將把它分成訓(xùn)練/驗(yàn)證集。為此,我將在sklearn.model_selection中使用極其方便的train_test_split功能。讓我們?cè)O(shè)計(jì)訓(xùn)練和驗(yàn)證集:

3

正如我們?cè)趫D中看到的,這兩個(gè)集合在表示整個(gè)曲線方面都做得相當(dāng)好:如果我們刪除其中一個(gè),我們可以或多或少地收集到數(shù)據(jù)表示的相同圖片。這是交叉驗(yàn)證的一個(gè)非常重要的方面!

開(kāi)發(fā)我們的模型

現(xiàn)在我們有了一個(gè)數(shù)據(jù)集,我們需要一個(gè)相對(duì)簡(jiǎn)單的模型來(lái)嘗試復(fù)制它。為了達(dá)到這個(gè)目的,我們將要處理一個(gè)四層的神經(jīng)網(wǎng)絡(luò),它包含三個(gè)隱藏層的單個(gè)輸入和輸出值,每個(gè)隱藏層64個(gè)神經(jīng)元。

4

為了方便起見(jiàn),每個(gè)隱藏層都有一個(gè)LeakyReLU激活,輸出上有ReLU激活。原則上,這些應(yīng)該不那么重要,但是在測(cè)試過(guò)程中,模型有時(shí)無(wú)法學(xué)習(xí)一些“復(fù)雜”的功能,特別是當(dāng)使用像tanh和sigmoid這樣容易飽和的激活函數(shù)時(shí)。在本文中,這個(gè)模型的細(xì)節(jié)并不重要:重要的是它是一個(gè)完全連接的神經(jīng)網(wǎng)絡(luò),它有能力學(xué)習(xí)逼近某些函數(shù)。

為了證明模型的有效性,我使用均方誤差(MSE)損失和ADAM優(yōu)化器執(zhí)行了通常的訓(xùn)練/驗(yàn)證周期,沒(méi)有任何形式的正則化,最后得到了以下結(jié)果:

5

當(dāng)我們使用此模型來(lái)預(yù)測(cè):

6

除了曲率變化很快的區(qū)域(接近x=11)之外,這個(gè)模型很好地再現(xiàn)了我們的“復(fù)雜”函數(shù)!7

現(xiàn)在,我可以聽(tīng)到你在問(wèn):如果模型運(yùn)行良好,我為什么要做任何正則化?在本演示中,我們的模型是否過(guò)擬合并不重要:我想要理解的是正則化如何影響一個(gè)模型;在我們的例子中,它甚至?xí)?duì)一個(gè)完美的工作模型產(chǎn)生不利影響。在某種意義上,你可以把這理解為一個(gè)警告:當(dāng)你遇到過(guò)度擬合時(shí)要處理它,但在此之前不要處理。用Donald Knuth的話說(shuō),“不成熟的優(yōu)化是萬(wàn)惡之源”。

正則化如何影響參數(shù)

現(xiàn)在我們已經(jīng)完成了所有的樣板文件,我們可以進(jìn)入文章的核心了!我們的重點(diǎn)是建立對(duì)正則化的直觀認(rèn)識(shí),即不同的正則化方法如何從三個(gè)角度影響我們的簡(jiǎn)單模型:

訓(xùn)練/驗(yàn)證的損失會(huì)怎樣?我們的模型性能會(huì)發(fā)生什么變化?實(shí)際的參數(shù)會(huì)怎樣呢?雖然前兩點(diǎn)很簡(jiǎn)單,但是很多人可能不熟悉如何量化第三點(diǎn)。在這個(gè)演示中,我將使用核密度評(píng)估來(lái)測(cè)量參數(shù)值的變化:對(duì)于那些熟悉Tensorboard的人來(lái)說(shuō),你將看到這些圖;對(duì)于那些不知道的人,可以把這些圖看作是復(fù)雜的直方圖。目標(biāo)是可視化我們的模型參數(shù)如何隨正則化而變化,下圖顯示了訓(xùn)練前后θ分布的差異:


藍(lán)色曲線被標(biāo)記為“均勻的”,因?yàn)樗砹宋覀冇镁鶆蚍植汲跏蓟哪P蛥?shù):你可以看到這基本上是一個(gè)頂帽函數(shù),在中心具有相等的概率。這與訓(xùn)練后的模型參數(shù)形成了鮮明的對(duì)比:經(jīng)過(guò)訓(xùn)練,模型需要不均勻的θ值才能表達(dá)我們的功能。

L2正則化

正則化最直接的方法之一是所謂的L2正則化:L2指的是使用參數(shù)矩陣的L2范數(shù)。由線性代數(shù)可知,矩陣的范數(shù)為:

8

在前神經(jīng)網(wǎng)絡(luò)機(jī)器學(xué)習(xí)中,參數(shù)通常用向量而不是矩陣/張量來(lái)表示,這就是歐幾里得范數(shù)。在深度學(xué)習(xí)中,我們通常處理的是矩陣/高維張量,而歐幾里德范數(shù)并不能很好地?cái)U(kuò)展(超越歐幾里德幾何)。L2范數(shù)實(shí)際上是上述方程的一個(gè)特例,其中p=q=2被稱為Frobenius或Hilbert-schmidt范數(shù),它可以推廣到無(wú)限維度(即Hilbert空間)。

9

在深度學(xué)習(xí)應(yīng)用中,應(yīng)用這種L2正則化的一般形式是在代價(jià)函數(shù)J的末尾附加一個(gè)“懲罰”項(xiàng):

11

很簡(jiǎn)單,這個(gè)方程定義了代價(jià)函數(shù)J為MSE損失,以及L2范數(shù)。L2范數(shù)的影響代價(jià)乘以這個(gè)前因子λ;這在許多實(shí)現(xiàn)中被稱為“權(quán)值衰減”超參數(shù),通常在0到1之間。因?yàn)樗刂屏苏齽t化的數(shù)量,所以我們需要了解這對(duì)我們的模型有什么影響!

在一系列的實(shí)驗(yàn)中,我們將重復(fù)與之前相同的訓(xùn)練/驗(yàn)證/可視化周期,但是這是在一系列的λ值上。首先,它是如何影響我們的訓(xùn)練的?

12

讓我們來(lái)分析一下。更深的紅色對(duì)應(yīng)于更大的λ值(盡管這不是一個(gè)線性映射!),將訓(xùn)練損失的痕跡顯示為MSE損失的日志。記住,在我們的非正則化模型中,這些曲線是單調(diào)遞減的。在這里,當(dāng)我們?cè)黾应说闹担罱K訓(xùn)練誤差大大增加,并且早期損失的減少也沒(méi)有那么顯著。當(dāng)我們?cè)噲D使用這些模型來(lái)預(yù)測(cè)我們的功能時(shí),會(huì)發(fā)生什么?

13

我們可以看到,當(dāng)λ值很小時(shí),函數(shù)仍然可以很好地表達(dá)。轉(zhuǎn)折點(diǎn)似乎在λ=0.01附近,在這里,曲線的定性形狀被再現(xiàn),但不是實(shí)際的數(shù)據(jù)點(diǎn)。從λ>0.01,模型只是預(yù)測(cè)整個(gè)數(shù)據(jù)集的平均值。如果我們把這些解釋為我們?cè)谟?xùn)練上的損失,那么損失就會(huì)停止,這也就不足為奇了。

那么參數(shù)的分布呢?

14

我們看到,參數(shù)值的傳播大大受阻,正如我們的 λ 從低到高。與均勻分布相比,參數(shù)值的擴(kuò)展越來(lái)越接近于零,λ=1.0時(shí),θ的分布看起來(lái)就像一個(gè)在0處的狄拉克δ函數(shù)。由此,我們可以消除L2正則化作用于約束參數(shù)空間——強(qiáng)制θ非常稀疏并且接近零。

dropouts呢?

另一種流行且成本高效的正則化方法是在模型中包含dropouts。這個(gè)想法是,每次模型通過(guò)時(shí),一些神經(jīng)元通過(guò)根據(jù)概率p將它們的權(quán)值設(shè)置為0來(lái)失活。換句話說(shuō),我們對(duì)參數(shù)應(yīng)用一個(gè)布爾掩碼,每次數(shù)據(jù)通過(guò)不同的單元時(shí)都被激活。這背后的基本原理是將模型學(xué)習(xí)分布在整個(gè)網(wǎng)絡(luò)中,而不是特定的一層或兩層/神經(jīng)元。

在我們的實(shí)驗(yàn)中,我們將在每個(gè)隱藏層之間加入dropout層,并將dropout概率p從0調(diào)整為1。在前一種情況下,我們應(yīng)該有一個(gè)非正則化的模型,而在后一種情況下,我們各自的學(xué)習(xí)能力應(yīng)該有所下降,因?yàn)槊恳粋€(gè)隱藏層都被停用了。

15

我們看到了與L2正則化非常相似的效果:總體而言,模型的學(xué)習(xí)能力下降,并且隨著dropout概率值的增大,最終損失的比例也增大。

當(dāng)我們?cè)噲D使用這些模型來(lái)預(yù)測(cè)我們的功能時(shí):

16

如圖,我們逐步增加了dropout概率。從p=0.1開(kāi)始,我們可以看到我們的模型對(duì)于它的預(yù)測(cè)開(kāi)始變得相當(dāng)不可靠:最有趣的是,它似乎近似地跟蹤了我們的數(shù)據(jù),包括噪音!

在p=0.2和0.3時(shí),這一點(diǎn)在x=11時(shí)更加明顯——回想一下,我們的非正則化模型很難得到正確的函數(shù)區(qū)域。我們看到,帶dropout的預(yù)測(cè)實(shí)際上使這一區(qū)域難以置信的模糊,這幾乎就像模型告訴我們,它是不確定的!(后面會(huì)詳細(xì)介紹)。

從p=0.4開(kāi)始,模型的能力似乎受到了極大的限制,除了第一部分之外,它幾乎無(wú)法再現(xiàn)曲線的其他部分。在p=0.6時(shí),預(yù)測(cè)結(jié)果似乎接近數(shù)據(jù)集的平均值,這似乎也發(fā)生在L2正則化的大值上。

我們的模型參數(shù)呢?

17

將此結(jié)果與我們的L2范數(shù)結(jié)果進(jìn)行比較:對(duì)于dropout,我們的參數(shù)分布更廣,這增加了我們的模型表達(dá)的能力。除p=1.0外,dropout概率的實(shí)際值對(duì)參數(shù)的分布影響不大,如果有影響的話。在p=1.0時(shí),我們的模型沒(méi)有學(xué)到任何東西,只是類似于均勻分布。在p值降低時(shí),盡管速度降低了,模型仍然能夠?qū)W習(xí)。

最后

從我們簡(jiǎn)單的實(shí)驗(yàn)中,我希望你已經(jīng)從我們探索的三個(gè)角度,對(duì)這兩種正則化方法如何影響神經(jīng)網(wǎng)絡(luò)模型形成了一些直觀認(rèn)識(shí)。

L2正則化非常簡(jiǎn)單,只需要調(diào)整一個(gè)超參數(shù)。當(dāng)我們?cè)黾覮2懲罰的權(quán)重時(shí),因?yàn)閰?shù)空間的變化,對(duì)于大的值(0.01-1),模型容量下降得非常快。對(duì)于較小的值,你甚至可能不會(huì)看到模型預(yù)測(cè)有什么變化。

Dropouts是一種更復(fù)雜的正則化方法,因?yàn)楝F(xiàn)在必須處理另一層超參數(shù)復(fù)雜性(p可以為不同的層提供不同的值)。盡管如此,這實(shí)際上可以提供模型表達(dá)的另一個(gè)維度:模型不確定性的形式。

在這兩種方法中,我們看到正則化增加了最終的訓(xùn)練損失。這些人工形式的正則化(與獲取更多的訓(xùn)練數(shù)據(jù)相反)的代價(jià)是它們會(huì)降低模型的容量: 除非你確定你的模型需要正則化,否則在這樣的結(jié)果下,你不會(huì)希望正則化。但是,通過(guò)本指南,你現(xiàn)在應(yīng)該知道這兩種形式如何影響你的模型!

如果你感興趣,可以在Binder上(https://mybinder.org/v2/gh/laserkelvin/understanding-ml/master) 運(yùn)行一些代碼。我不需要運(yùn)行torch模型(這會(huì)耗盡它們的資源),但是你可以使用它在notebook中查看代碼。



聯(lián)系我們



寬泛科技專注為人工智能、邊緣計(jì)算、影視后期、動(dòng)漫設(shè)計(jì)、商務(wù)應(yīng)用等領(lǐng)域,

提供基于人臉識(shí)別、深度學(xué)習(xí)、視覺(jué)計(jì)算、VR/AR/MR、桌面虛擬化、

數(shù)據(jù)存儲(chǔ)及數(shù)據(jù)可視化、視訊會(huì)議等信息化解決方案及服務(wù)。

如果您有合作需求或?qū)氋F建議,歡迎來(lái)信。

郵箱:hezuo@kuanfans.com

合作熱線:(021) 5415 5559


官方網(wǎng)站:www.truecolorclub.cn