深度神經(jīng)網(wǎng)絡(luò)是否過(guò)擬合?
點(diǎn)擊上方“小白學(xué)視覺(jué)”,選擇加"星標(biāo)"或“置頂”
重磅干貨,第一時(shí)間送達(dá)
作者:Lilian Weng
編譯:ronghuaiyang
如果你和我一樣,不明白為什么深度神經(jīng)網(wǎng)絡(luò)可以推廣到樣本外的數(shù)據(jù)點(diǎn),而不會(huì)過(guò)擬合,請(qǐng)繼續(xù)閱讀。
如果你和我一樣,不明白為什么深度神經(jīng)網(wǎng)絡(luò)可以推廣到樣本外的數(shù)據(jù)點(diǎn),而不會(huì)過(guò)擬合,請(qǐng)繼續(xù)閱讀。
如果你像我一樣,有傳統(tǒng)機(jī)器學(xué)習(xí)的經(jīng)驗(yàn)進(jìn)入深度學(xué)習(xí)領(lǐng)域,你可能會(huì)經(jīng)常思考這樣一個(gè)問(wèn)題:由于一個(gè)典型的深度神經(jīng)網(wǎng)絡(luò)有這么多的參數(shù),訓(xùn)練誤差很容易達(dá)到完美,那么它一定會(huì)遭受大量的過(guò)擬合。如何將其推廣到樣本外數(shù)據(jù)點(diǎn)?
在理解為什么深層神經(jīng)網(wǎng)絡(luò)可以泛化的過(guò)程中,我想起了一篇關(guān)于系統(tǒng)生物學(xué)的有趣的論文——《生物學(xué)家能修理收音機(jī)嗎?》。如果一位生物學(xué)家打算用她在生物系統(tǒng)上工作的方法來(lái)修理一臺(tái)無(wú)線電設(shè)備的話(huà),可能會(huì)很困難。由于無(wú)線電系統(tǒng)的全部機(jī)制還沒(méi)有被揭示出來(lái),小的局部功能可能會(huì)給出一些提示,但它很難顯示系統(tǒng)內(nèi)的所有交互,更不用說(shuō)整個(gè)工作流程了。無(wú)論你是否認(rèn)為它與DL相關(guān),它都是一本非常有趣的讀物。
我想在這篇文章中討論一些關(guān)于深度學(xué)習(xí)模型的泛化性和復(fù)雜性度量的論文。希望它能幫助你理解為什么DNN可以泛化。
假設(shè)我們有一個(gè)分類(lèi)問(wèn)題和一個(gè)數(shù)據(jù)集,我們可以開(kāi)發(fā)許多模型來(lái)解決它,從擬合一個(gè)簡(jiǎn)單的線性回歸到在磁盤(pán)空間中存儲(chǔ)整個(gè)數(shù)據(jù)集。哪一個(gè)更好?如果我們只關(guān)心訓(xùn)練數(shù)據(jù)的準(zhǔn)確性(尤其是考慮到測(cè)試數(shù)據(jù)很可能是未知的),那么記憶法似乎是最好的——嗯,聽(tīng)起來(lái)不太對(duì)。
有許多經(jīng)典定理可以指導(dǎo)我們?cè)谶@種情況下決定一個(gè)好的模型應(yīng)該具有哪些類(lèi)型的屬性。
奧卡姆剃刀是14世紀(jì)奧卡姆的威廉提出的一種非正式的解決問(wèn)題的原則:
簡(jiǎn)單的解決方案比復(fù)雜的解決方案更有可能是正確的。
當(dāng)我們面對(duì)多個(gè)潛在候選理論來(lái)解釋這個(gè)世界,并且必須從中選出一個(gè)時(shí),這種說(shuō)法是非常有力的。對(duì)于一個(gè)問(wèn)題來(lái)說(shuō),太多不必要的假設(shè)似乎是合理的,但很難推廣到其他復(fù)雜的問(wèn)題中,或最終得到宇宙的基本原理。
想想看,人們花了幾百年的時(shí)間才發(fā)現(xiàn),天空在白天是藍(lán)色的,而在日落時(shí)是紅色的,原因是一樣的(瑞利散射),盡管兩種現(xiàn)象看起來(lái)非常不同。人們肯定對(duì)它們分別提出了許多其他的解釋?zhuān)y(tǒng)一而簡(jiǎn)單的版本最終勝出。
最小描述長(zhǎng)度原則
奧卡姆剃刀原理同樣適用于機(jī)器學(xué)習(xí)模型。這種概念的一個(gè)形式化版本稱(chēng)為最小描述長(zhǎng)度(MDL)原則,用于比較觀察到的數(shù)據(jù)中相互競(jìng)爭(zhēng)的模型/解釋。
“理解就是壓縮?!?/span>
MDL的基本思想是將學(xué)習(xí)視為數(shù)據(jù)壓縮。通過(guò)對(duì)數(shù)據(jù)的壓縮,我們需要發(fā)現(xiàn)數(shù)據(jù)中具有高潛力的規(guī)律性或模式,從而推廣到不可見(jiàn)的樣本。Information bottleneck理論認(rèn)為,深度神經(jīng)網(wǎng)絡(luò)首先經(jīng)過(guò)訓(xùn)練,通過(guò)最小化泛化誤差來(lái)表示數(shù)據(jù),然后通過(guò)消除噪聲來(lái)學(xué)習(xí)壓縮這種表示。
同時(shí),MDL將模型描述視為壓縮交付的一部分,因此模型不能任意大。
MDL原理的兩部分版本規(guī)定:設(shè)H(1),H(2),……H(1),H(2),……為能夠解釋數(shù)據(jù)集DD的模型列表。其中最好的假設(shè)應(yīng)該是使總和最小化的假設(shè):

L(H)為H模型的描述的長(zhǎng)度,單位為bits。
L(D|H)是用H編碼時(shí),以bits為單位來(lái)描述數(shù)據(jù)D的長(zhǎng)度。
簡(jiǎn)單地說(shuō),“最佳”模型是包含編碼數(shù)據(jù)和模型本身的“最小”模型。按照這個(gè)標(biāo)準(zhǔn),我在本節(jié)開(kāi)始時(shí)提出的記憶方法聽(tīng)起來(lái)很糟糕,不管它對(duì)訓(xùn)練數(shù)據(jù)的準(zhǔn)確性有多高。
人們可能會(huì)說(shuō)奧卡姆剃刀是錯(cuò)的,因?yàn)楝F(xiàn)實(shí)世界可能是任意復(fù)雜的,為什么我們必須找到簡(jiǎn)單的模型?MDL的一個(gè)有趣的觀點(diǎn)是將模型視為“語(yǔ)言”,而不是基本的生成定理。我們希望找到好的壓縮策略來(lái)描述一小組樣本中的規(guī)律性,它們不一定是解釋這種現(xiàn)象的“真正”生成模型。模型可能是錯(cuò)誤的,但仍然有用(想想貝葉斯先驗(yàn))。
Kolmogorov復(fù)雜度依賴(lài)于現(xiàn)代計(jì)算機(jī)的概念來(lái)定義對(duì)象的算法復(fù)雜度(描述性):描述對(duì)象的最短二進(jìn)制計(jì)算機(jī)程序的長(zhǎng)度。繼MDL之后,計(jì)算機(jī)本質(zhì)上是最通用的數(shù)據(jù)解壓器。
Kolmogorov復(fù)雜度的正式定義是:給定一個(gè)通用計(jì)算機(jī)U和一個(gè)程序p,讓我們將U(p)表示為處理程序的計(jì)算機(jī)的輸出,L(p)表示為程序的描述性長(zhǎng)度。那么一個(gè)字符串ss相對(duì)于通用計(jì)算機(jī)U的Kolmogorov復(fù)雜度KU為:

請(qǐng)注意,通用計(jì)算機(jī)可以模仿任何其他計(jì)算機(jī)的操作。所有現(xiàn)代計(jì)算機(jī)都是通用的,因?yàn)樗鼈兌伎梢院?jiǎn)化為圖靈機(jī)。無(wú)論我們使用哪臺(tái)計(jì)算機(jī),這個(gè)定義都是通用的,因?yàn)榱硪慌_(tái)通用計(jì)算機(jī)總是可以被編程來(lái)克隆U的行為,而對(duì)這個(gè)克隆程序進(jìn)行編碼只是一個(gè)常量。
Kolmogorov復(fù)雜性和Shannon信息論之間有許多聯(lián)系,兩者都與通用編碼有關(guān)。一個(gè)驚人的事實(shí)是,一個(gè)隨機(jī)變量的期望Kolmogorov復(fù)雜度大約等于它的Shannon熵。更多關(guān)于這個(gè)主題的內(nèi)容不在本文討論范圍內(nèi),但是網(wǎng)上有很多有趣的閱讀材料。
奧卡姆剃刀的另一種數(shù)學(xué)形式是Solomonoff的通用歸納推理理論(Solomonoff, 1964)。其原則是根據(jù)其Kolmogorov復(fù)雜度,選擇與生成訓(xùn)練數(shù)據(jù)的“最短程序”相對(duì)應(yīng)的模型。
深度學(xué)習(xí)模型的表達(dá)能力
與傳統(tǒng)的統(tǒng)計(jì)模型相比,深度神經(jīng)網(wǎng)絡(luò)具有非常多的參數(shù)。如果我們用MDL來(lái)度量一個(gè)深度神經(jīng)網(wǎng)絡(luò)的復(fù)雜度,并將參數(shù)的個(gè)數(shù)作為模型描述的長(zhǎng)度,這看起來(lái)會(huì)很糟糕。模型描述L(H)L(H)很容易增長(zhǎng)失控。
然而,一個(gè)神經(jīng)網(wǎng)絡(luò)要獲得高表達(dá)能力,必須有許多參數(shù)。由于深度神經(jīng)網(wǎng)絡(luò)具有捕捉任何靈活數(shù)據(jù)表示的能力,因此在許多應(yīng)用中都取得了巨大的成功。
普遍逼近定理指出一個(gè)前向網(wǎng)絡(luò)需要有:1)一個(gè)線性輸出層,2)至少有一個(gè)隱含層包含有限數(shù)量的神經(jīng)元,3)某個(gè)激活函數(shù)可以在n維實(shí)數(shù)空間的一個(gè)緊子集上近似任意連續(xù)函數(shù),達(dá)到任意精度。這個(gè)定理首先被證明為sigmoid激活函數(shù)。后來(lái)的研究表明,普遍逼近性質(zhì)并不是針對(duì)特定的激活函數(shù),而是針對(duì)多層前饋體系結(jié)構(gòu)。
盡管單層前饋網(wǎng)絡(luò)足以表示任何函數(shù),但其寬度必須呈指數(shù)級(jí)增長(zhǎng)。普遍逼近定理不能保證模型能被正確地學(xué)習(xí)或推廣。通常,添加更多的層有助于減少淺層網(wǎng)絡(luò)中所需的隱藏神經(jīng)元的數(shù)量。
為了利用普遍逼近定理,我們總是可以找到一個(gè)神經(jīng)網(wǎng)絡(luò)來(lái)表示目標(biāo)函數(shù),在任何期望的閾值下都有誤差,但是我們需要付出代價(jià)—網(wǎng)絡(luò)可能會(huì)變得非常大。
證明:兩層神經(jīng)網(wǎng)絡(luò)的有限樣本表達(dá)量
我們目前討論的普遍逼近定理不考慮有限樣本集,Zhang, et al. (2017)對(duì)兩層神經(jīng)網(wǎng)絡(luò)的有限樣本表達(dá)性給出了一個(gè)簡(jiǎn)潔的證明。
神經(jīng)網(wǎng)絡(luò)C可以表示任何函數(shù),給定樣本大小n維度為d,如果:對(duì)于每一個(gè)有限樣本集合S?Rd,|S| = n 每個(gè)函數(shù)定義在這個(gè)樣本集:f:?R,我們可以找到一組C的權(quán)重, C (x) = f (x), ?x∈S。
這篇文章提出了一個(gè)定理:
存在一個(gè)具有ReLU激活和2n+d個(gè)權(quán)值的兩層神經(jīng)網(wǎng)絡(luò),它可以表示任意d維尺寸的樣本上的函數(shù)。
證明:首先我們想構(gòu)建一個(gè)兩層神經(jīng)網(wǎng)絡(luò)C: Rd?R。輸入是一個(gè)d維向量,x∈Rd。隱含層有h個(gè)隱藏單元,權(quán)值矩陣W∈Rd×h,、偏置向量b∈Rh,使用ReLU激活函數(shù)。第二層輸出一個(gè)標(biāo)量值,權(quán)向量v∈Rh,且偏置為零。
一個(gè)輸入向量x的在網(wǎng)絡(luò)C的輸出可以表示為:

其中W(:,i),為d×h矩陣的第i列。
給定樣本組S = {x1,…, xn}和目標(biāo)值y = {y1,…, yn},我們想找到合適的權(quán)值W∈Rd×h、b、v∈Rh,使得C (xi) =yi,?i= 1,…,n。
讓我們將所有樣本點(diǎn)組合成一個(gè)批次,作為一個(gè)輸入矩陣X∈Rn×d。設(shè)h=n,則XW - b為大小為n×n的方陣。

我們可以將W簡(jiǎn)化為所有列向量相同:

讓ai=xiw,我們希望找到一個(gè)合適的w和b,使b1<a1<b2<a2??<bn<an。這總是可以實(shí)現(xiàn)的,因?yàn)槲覀冊(cè)噲D解決n+d個(gè)未知變量與n個(gè)約束,并且xi是獨(dú)立的(即隨機(jī)選擇一個(gè)w,排序xiw,然后在兩者之間設(shè)置bj值)。然后MReLU變成一個(gè)下三角矩陣:

當(dāng)det(MReLU)≠0時(shí),為非奇異方陣,所以我們總能找到合適的v來(lái)求解vMReLU=y(即MReLU的列空間全部為Rn,可以找到列向量的線性組合,得到任意y)。
正如我們所知,兩層神經(jīng)網(wǎng)絡(luò)是通用的逼近器,因此,它們能夠完美地學(xué)習(xí)非結(jié)構(gòu)化隨機(jī)噪聲也就不足為奇了。如果對(duì)圖像分類(lèi)數(shù)據(jù)集的標(biāo)簽進(jìn)行隨機(jī)變換,深度神經(jīng)網(wǎng)絡(luò)的高表達(dá)能力仍然可以使其訓(xùn)練損失接近于零。這些結(jié)果不隨正則化項(xiàng)的添加而改變。

深度學(xué)習(xí)模型是高度參數(shù)化的,常常可以在訓(xùn)練數(shù)據(jù)上得到完美的結(jié)果。在傳統(tǒng)的觀點(diǎn)中,就像偏差-方差權(quán)衡一樣,這可能是一場(chǎng)災(zāi)難,沒(méi)有任何東西可以概括為不可見(jiàn)的測(cè)試數(shù)據(jù)。然而,通常情況下,這種“過(guò)擬合”(訓(xùn)練誤差= 0)的深度學(xué)習(xí)模型在樣本外測(cè)試數(shù)據(jù)上仍然表現(xiàn)良好。嗯……有意思,為什么?
深度學(xué)習(xí)的現(xiàn)代風(fēng)險(xiǎn)曲線
傳統(tǒng)的機(jī)器學(xué)習(xí)使用下面的u型風(fēng)險(xiǎn)曲線來(lái)衡量偏差-方差權(quán)衡,并量化模型的可泛化程度。如果有人問(wèn)我如何判斷一個(gè)模型是否過(guò)擬合,我首先想到的就是這個(gè)。
隨著模型的變大(增加的參數(shù)越多),訓(xùn)練誤差減小到接近于零,但是當(dāng)模型的復(fù)雜度超過(guò)“欠擬合”和“過(guò)擬合”的閾值時(shí),測(cè)試誤差(泛化誤差)開(kāi)始增大。在某種程度上,這是與奧卡姆剃刀很好的對(duì)齊。

不幸的是,這不適用于深度學(xué)習(xí)模型。Belkin et al. (2018)調(diào)和了傳統(tǒng)的偏方差權(quán)衡,提出了一種新的用于深度神經(jīng)網(wǎng)絡(luò)的雙u型風(fēng)險(xiǎn)曲線。一旦網(wǎng)絡(luò)參數(shù)數(shù)量足夠多,風(fēng)險(xiǎn)曲線進(jìn)入另一種狀態(tài)。

該論文稱(chēng),這可能有兩個(gè)原因:
參數(shù)的數(shù)量并不能很好地衡量歸納偏差,歸納偏差定義為用于預(yù)測(cè)未知樣本的學(xué)習(xí)算法的一組假設(shè)。
使用一個(gè)更大的模型,我們可能能夠發(fā)現(xiàn)更大的函數(shù)類(lèi),并進(jìn)一步找到插值函數(shù)具有更小的范數(shù),從而“更簡(jiǎn)單”。
實(shí)驗(yàn)觀察到雙u型風(fēng)險(xiǎn)曲線,如圖所示。然而,我花了很大的力氣來(lái)重現(xiàn)這個(gè)結(jié)果。生活中存在一些跡象,但為了生成一條與定理類(lèi)似的相當(dāng)平滑的曲線,必須注意實(shí)驗(yàn)中的許多細(xì)節(jié)。

正則化不是泛化的關(guān)鍵
正則化是控制過(guò)擬合和提高模型泛化性能的常用方法。有趣的是,一些研究(Zhang, et al. 2017)表明,顯式正則化(即數(shù)據(jù)增強(qiáng)、權(quán)重衰減和dropout)對(duì)于減少泛化誤差既不是必要的,也不是充分的。
以CIFAR10上訓(xùn)練的Inception模型為例(參見(jiàn)圖5),正則化技術(shù)有助于樣本外的泛化,但作用不大。沒(méi)有一個(gè)單獨(dú)的正則化看起來(lái)是獨(dú)立于其他項(xiàng)的。因此,正則化器不太可能是泛化的“基本原因”。

在深度學(xué)習(xí)領(lǐng)域中,參數(shù)個(gè)數(shù)與模型過(guò)擬合無(wú)關(guān),說(shuō)明參數(shù)個(gè)數(shù)不能反映深度神經(jīng)網(wǎng)絡(luò)的真實(shí)復(fù)雜度。
除了參數(shù)個(gè)數(shù),研究人員還提出了許多方法來(lái)量化這些模型的復(fù)雜性,如模型的自由度(Gao & Jojic, 2016),或prequential碼(Blier & Ollivier, 2018)。
我想討論一下最近關(guān)于這個(gè)問(wèn)題的一個(gè)方法,名為intrinsic dimension (Li et al, 2018)。內(nèi)在維度直觀,易于測(cè)量,同時(shí)還揭示了不同尺寸模型的許多有趣特性。
考慮具有大量參數(shù)的神經(jīng)網(wǎng)絡(luò),形成一個(gè)高維參數(shù)空間,學(xué)習(xí)發(fā)生在這個(gè)高維的“目標(biāo)視圖”上。參數(shù)空間流形的形狀至關(guān)重要。例如,更平滑的流形有利于優(yōu)化,因?yàn)樗峁┝烁嗟念A(yù)測(cè)梯度,并允許更大的學(xué)習(xí)速率——這被認(rèn)為是batch normalization成功地穩(wěn)定訓(xùn)練的原因。
盡管參數(shù)空間很大,但幸運(yùn)的是,我們不必過(guò)多擔(dān)心優(yōu)化過(guò)程陷入局部最優(yōu),正如已經(jīng)顯示的那樣,目標(biāo)視圖中的局部最優(yōu)點(diǎn)幾乎總是位于鞍點(diǎn)而不是谷點(diǎn)。換句話(huà)說(shuō),總是有一個(gè)維度子集包含離開(kāi)局部最優(yōu)并繼續(xù)探索的路徑。

度量?jī)?nèi)在維度的一個(gè)直覺(jué)是,由于參數(shù)空間具有如此高的維數(shù),可能沒(méi)有必要利用所有維數(shù)來(lái)有效地學(xué)習(xí)。如果我們只在一片目標(biāo)視圖中游走,仍然可以學(xué)習(xí)到一個(gè)好的解決方案,那么得到的模型的復(fù)雜性很可能比通過(guò)參數(shù)個(gè)數(shù)得到的模型要低。本質(zhì)上這就是內(nèi)在維度試圖評(píng)估的東西。
比如說(shuō)模型有D個(gè)維度,及其參數(shù)表示為θ(D)。對(duì)于學(xué)習(xí)來(lái)說(shuō),一個(gè)小的d維子空間是隨機(jī)采樣得到的,其中d < D。在優(yōu)化更新的過(guò)程中,只用到了較小的子空間θ(d)來(lái)更新模型參數(shù),而不是根據(jù)所有D個(gè)維度來(lái)進(jìn)行梯度的更新。

梯度更新公式如下:

其中θ0(D)是初始化值,P是D×d的投影矩陣,在訓(xùn)練前進(jìn)行隨機(jī)采樣。θ0(D)和P是不可訓(xùn)練的,在訓(xùn)練中是固定的。θ(d)初始化為全零。
通過(guò)搜索d=1,2,…,D的值,將解出現(xiàn)時(shí)對(duì)應(yīng)的d定義為內(nèi)在維度。
事實(shí)證明,許多問(wèn)題的內(nèi)在維度比參數(shù)的數(shù)量要小得多。例如,在CIFAR10圖像分類(lèi)中,650k+參數(shù)的全連接網(wǎng)絡(luò)只有9k的固有維數(shù),而包含62k參數(shù)的卷積網(wǎng)絡(luò)的固有維數(shù)更低,只有2.9k。

對(duì)內(nèi)在維度的度量表明,深度學(xué)習(xí)模型比表面上看起來(lái)要簡(jiǎn)單得多。
Zhang等(2019)研究了參數(shù)在不同層中的作用。論文提出的基本問(wèn)題是:“所有層都是平等的嗎?”簡(jiǎn)短的回答是:不是。模型對(duì)某些層的變化更敏感,而對(duì)其他層的變化則不敏感。
本文提出了兩種類(lèi)型的操作,可應(yīng)用于第?層的參數(shù)上,?= 1,…,L,在t時(shí)刻,θt(?)用來(lái)測(cè)試他們對(duì)模型的魯棒性的影響:
重初始化 :重置參數(shù)初始值,θt(?)←θ0(?)。這層重新初始化后的網(wǎng)絡(luò)性能被稱(chēng)為重初始化?層的魯棒性。
重隨機(jī)化 :對(duì)層參數(shù)進(jìn)行隨機(jī)采樣θt(?)←θ~(?)~P(?)。相應(yīng)的網(wǎng)絡(luò)層的性能稱(chēng)為重隨機(jī)化的魯棒性。
層可以通過(guò)這兩個(gè)操作分為兩類(lèi):
魯棒層:重新初始化或隨機(jī)化層后,網(wǎng)絡(luò)沒(méi)有或只有微不足道的性能下降。
關(guān)鍵層:其他情況。
在全連接和卷積網(wǎng)絡(luò)上也觀察到類(lèi)似的模式。重新隨機(jī)化任何層完全破壞模型性能,因?yàn)轭A(yù)測(cè)立即下降到隨機(jī)猜測(cè)。更有趣和令人驚訝的是,當(dāng)應(yīng)用重新初始化時(shí),只有前幾層(最接近輸入層)是關(guān)鍵的,而重新初始化更高的層只會(huì)導(dǎo)致性能微不足道的下降

ResNet能夠使用非相鄰層之間的快捷方式跨網(wǎng)絡(luò)重新分布敏感層,而不只是在底層。在殘差塊結(jié)構(gòu)的幫助下,網(wǎng)絡(luò)對(duì)再隨機(jī)化具有均勻魯棒性。只有每個(gè)殘差塊的第一層仍然對(duì)重新初始化和重新隨機(jī)化敏感。如果我們把每個(gè)殘差塊看作一個(gè)局部子網(wǎng)絡(luò),那么健壯性模式就像上面的fc和conv網(wǎng)絡(luò)。

基于深度神經(jīng)網(wǎng)絡(luò)中很多頂層對(duì)模型重新初始化后的性能并不重要的事實(shí),本文粗略地得出結(jié)論:
Based on the fact that many top layers in deep neural networks are not critical to the model performance after re-initialization, the paper loosely concluded that:
“采用隨機(jī)梯度訓(xùn)練的超容量深度網(wǎng)絡(luò)由于其臨界層數(shù)的自限制,具有較低的復(fù)雜度?!?/span>
我們可以考慮將重初始化作為減少有效參數(shù)數(shù)量的一種方法,從而使觀察結(jié)果與所演示的內(nèi)在維度保持一致。
在看到上面所有有趣的發(fā)現(xiàn)之后,復(fù)現(xiàn)它們應(yīng)該會(huì)很有趣。有些結(jié)果比其他結(jié)果更容易復(fù)現(xiàn)。細(xì)節(jié)如下所述。我的代碼可以在github上找到:https://github.com/lilianweng/generaliz-experiment。
深度模型的新風(fēng)險(xiǎn)曲線
這是最難復(fù)現(xiàn)的。作者確實(shí)給了我很多很好的建議,我很感激。以下是他們實(shí)驗(yàn)中一些值得注意的設(shè)置:
沒(méi)有正則化項(xiàng),如權(quán)值衰減,dropout。
在圖3中,訓(xùn)練集包含4k樣本。它只采樣一次,并對(duì)所有模型進(jìn)行固定。評(píng)估使用完整的MNIST測(cè)試集。
每個(gè)網(wǎng)絡(luò)都經(jīng)過(guò)長(zhǎng)時(shí)間的訓(xùn)練,實(shí)現(xiàn)訓(xùn)練風(fēng)險(xiǎn)接近零。對(duì)于不同大小的模型,學(xué)習(xí)率的調(diào)整是不同的。
為了使模型對(duì)欠參數(shù)化區(qū)域的初始化不那么敏感,他們的實(shí)驗(yàn)采用“權(quán)值重用”方案:將訓(xùn)練較小神經(jīng)網(wǎng)絡(luò)得到的參數(shù)作為訓(xùn)練較大神經(jīng)網(wǎng)絡(luò)的初始化。
我沒(méi)有對(duì)每個(gè)模型進(jìn)行足夠長(zhǎng)的訓(xùn)練或調(diào)整,以獲得完美的訓(xùn)練性能,但評(píng)估誤差確實(shí)顯示了插值閾值周?chē)奶厥馀で?,與訓(xùn)練誤差不同。例如,對(duì)于MNIST,閾值是訓(xùn)練樣本的數(shù)量乘以類(lèi)的數(shù)量(10),即40000。
x軸是模型參數(shù)的個(gè)數(shù)取對(duì)數(shù)。

層不是生來(lái)平等的
這個(gè)很容易復(fù)制。參見(jiàn)我的實(shí)現(xiàn)此處:https://github.com/lilianweng/generalizing-ent/blob/master/layer_equality.py。
在第一個(gè)實(shí)驗(yàn)中,我使用了一個(gè)三層的fc網(wǎng)絡(luò),每層256個(gè)單元。第0層是輸入層,第3層是輸出層。該網(wǎng)絡(luò)在MNIST上訓(xùn)練了100個(gè)epochs。

在第二個(gè)實(shí)驗(yàn)中,我使用了一個(gè)四層的fc網(wǎng)絡(luò),每層128個(gè)單元。其他設(shè)置與實(shí)驗(yàn)1相同。

內(nèi)在維度測(cè)量
為了正確地將d維子空間映射到全參數(shù)空間,投影矩陣p應(yīng)該具有正交列。因?yàn)镻θ(d)是P的列的總和對(duì)應(yīng)的標(biāo)量值的向量,最好充分利用P的正交的子空間列。
我的實(shí)現(xiàn)采用了一種簡(jiǎn)單的方法,從標(biāo)準(zhǔn)正態(tài)分布中抽取一個(gè)具有獨(dú)立項(xiàng)的大矩陣作為樣本。這些列在高維空間中是獨(dú)立的,因此是正交的。當(dāng)維度不是太大時(shí),這種方法有效。在使用大型的d進(jìn)行探索時(shí),有創(chuàng)建稀疏投影矩陣的方法,這正是本文所建議的。
實(shí)驗(yàn)運(yùn)行在兩個(gè)網(wǎng)絡(luò)上:(左)一個(gè)兩層的fc網(wǎng)絡(luò),每層64個(gè)單元,(右)一個(gè)單層的fc網(wǎng)絡(luò),128個(gè)隱藏單元,訓(xùn)練在MNIST的10%。對(duì)于每個(gè)d,模型都要經(jīng)過(guò)100個(gè)epochs的訓(xùn)練。參見(jiàn)代碼。


英文原文:https://lilianweng.github.io/lil-log/2019/03/14/are-deep-neural-networks-dramatically-overfitted.html
交流群
歡迎加入公眾號(hào)讀者群一起和同行交流,目前有SLAM、三維視覺(jué)、傳感器、自動(dòng)駕駛、計(jì)算攝影、檢測(cè)、分割、識(shí)別、醫(yī)學(xué)影像、GAN、算法競(jìng)賽等微信群(以后會(huì)逐漸細(xì)分),請(qǐng)掃描下面微信號(hào)加群,備注:”昵稱(chēng)+學(xué)校/公司+研究方向“,例如:”張三 + 上海交大 + 視覺(jué)SLAM“。請(qǐng)按照格式備注,否則不予通過(guò)。添加成功后會(huì)根據(jù)研究方向邀請(qǐng)進(jìn)入相關(guān)微信群。請(qǐng)勿在群內(nèi)發(fā)送廣告,否則會(huì)請(qǐng)出群,謝謝理解~

