作者丨Thomas Viehmann
編譯丨錢磊 ?
今天我想要與大家分享的是深度神經(jīng)網(wǎng)絡(luò)的工作方式,以及深度神經(jīng)與“傳統(tǒng)”機器學(xué)習(xí)模型的不同之處。我的計劃具體如下:
首先簡單地思考一下如何將問題設(shè)置成分類的形式;
接下來回顧偏差-方差分解,并在偏差-方差權(quán)衡的背景下,在VC-維數(shù)和非參數(shù)上進(jìn)行探討;
研究一些關(guān)于插值神經(jīng)網(wǎng)絡(luò)和雙下降的文獻(xiàn);
在文末做一個非常簡單的實驗,用圖形直觀地講解為什么雙下降現(xiàn)象會發(fā)生。
1 ? 正式設(shè)置一個機器學(xué)習(xí)問題 為了有些趣味,讓我們先設(shè)置一個問題。 首先從數(shù)據(jù)開始。假設(shè)我們標(biāo)記了數(shù)據(jù),即是滿足Px,y分布的輸入數(shù)據(jù)x(比如圖片)和標(biāo)簽y。 如此一來我們得到:
分布Px,y固定且未知。對于i = 1……N來說,可獲得樣本,。
數(shù)學(xué)分析通常假設(shè)樣本是獨立的。
通常來說,我們需要假設(shè)標(biāo)簽y和輸入x間有y=?的函數(shù)關(guān)系,即是說,標(biāo)簽是精確的、沒有歧義的,但并非總是如此。
我們想要“訓(xùn)練”的是某些函數(shù)f:x?y?,或者說是更普遍地估計條件分布P(y∣x)。我們的候選函數(shù)來自于參數(shù)集F={fθ∣θ∈Θ},在這里θ?代表參數(shù)。 為了達(dá)成目標(biāo),我們設(shè)定了損失函數(shù)(或風(fēng)險函數(shù)),從概念上講,我們希望將預(yù)期損失最小化。 第一次嘗試通常是將經(jīng)驗風(fēng)險或者經(jīng)驗損失
最小化。如果我們的損失函數(shù)是負(fù)對數(shù)似然,將最最小化就意味著計算最大相似估計。
對偏差-方差分解和偏差-方差平衡的簡單介紹??
對于最小二乘損失L=(f(x)?y)2(最基本的回歸估計量)來說,把預(yù)期損失分解成幾個部分是很容易的。其訣竅在于,我們需要意識到我們的訓(xùn)練數(shù)據(jù)本身是一個從n次乘積分布
中采得的隨機變量,且我們訓(xùn)練的模型?f依賴于D,記作。通過巧妙地添加并利用??(x,y)?和D的獨立性,我們可以將預(yù)測的期望平方誤差分解為:
最后一項噪音并不依賴于我們的模型。 現(xiàn)在為了得到我們預(yù)測的良好的預(yù)期平方誤差,我們必須注意到模型輸出的偏差(第一項)和方差(第二項)的和很小。注意這里所有的項都是非負(fù)的。 針對二元分類器的預(yù)期精度,其實存在著類似但更復(fù)雜的分解,但其他損失函數(shù)通常很難分解,盡管我們可以想象那樣的模型選擇的工作也是類似的。 因為讓偏差/方差等于0或非常接近0都相對容易,這樣分解會讓我們在偏差和方差間做出權(quán)衡:通過使用D中每個數(shù)據(jù)點的樣本均值作為估計,偏差可以非常小,且能巧妙地給出正則性論證來假設(shè)函數(shù)是Lipschitz函數(shù)或至少是一致連續(xù)。這就是極端的過擬合。通過預(yù)測不依賴于D的函數(shù),比如,我們可以讓方差為0,這樣則是極端的欠擬合。 請注意,均方誤差的偏差-方差分解是一個根據(jù)數(shù)學(xué)定理(或至少一個引理)成立的方程,所以是普遍適用的,不需要任何條件。
2 ? 從僵化中解脫出來,帶來自由的結(jié)構(gòu) 從某種程度上說,從上述極端情況轉(zhuǎn)向更溫和的條件也表明了我們在實踐中可以做些什么。
增加候選函數(shù)的集合
一種方法是,以一組非常嚴(yán)格的函數(shù)作為候選函數(shù),然后有意義地擴(kuò)大候選函數(shù)的空間,以獲得(假設(shè)是嵌套的)序列F0?F1?…. 關(guān)鍵想法是,進(jìn)一步研究可以讓模型更好地適應(yīng)數(shù)據(jù),而我們則須知道何時停止這種深入。Vapnik和Chervonenkis 的結(jié)構(gòu)風(fēng)險最小化原理就是這么做的,盡管該原理沒有使用偏差-方差分解,而是使用了預(yù)期損失(風(fēng)險)與D上的觀察損失(經(jīng)驗風(fēng)險)的邊界,和一個依賴于訓(xùn)練數(shù)據(jù)集大小N?和函數(shù)集的大小或其VC維的項。此處的典型情況是,一個人想要N≥VC-dim個樣本,卻可能有N≤20VC-dim個樣本。但請注意,這里參數(shù)的數(shù)量不是標(biāo)準(zhǔn)的一部分(但可能會影響VC維)。 最后,傳統(tǒng)標(biāo)準(zhǔn)比如赤池信息量準(zhǔn)則嘗試告訴你應(yīng)該“投資”多少參數(shù)來達(dá)到低的負(fù)對數(shù)可能性。但是Bishop在其引言中發(fā)現(xiàn),這些方法并不是很有效。
非參數(shù)估計:正則化
經(jīng)典的非參數(shù)估計從另一個極端開始。如果我們?nèi)∧硞€函數(shù)空間,如在里有弱導(dǎo)數(shù)的索伯列夫函數(shù)空間?(無論采用何種測度,是x的分布抑或是包含輸入的的勒貝格測度),我們可以匹配任意有限樣本D上每一點的樣本均值,從而可以獲得0點態(tài)偏差, 但是最小化經(jīng)驗風(fēng)險是病態(tài)的,有無限多的解。 接下來要做的就是正則化。最著名的例子可能是增加一個規(guī)范項從而導(dǎo)致Tikhonov正則化,所以我們的損失看起來會是這樣
如果我們從偏差-方差的角度來看,我們能夠平衡偏差(當(dāng)λ→0沒有偏差,但會導(dǎo)致病態(tài))與方差(當(dāng)λ→∞,我們處于?
。我們并不想讓方差為0,因為我們的正則化項僅僅是一個半范數(shù))。當(dāng)然了,Grace Wahba有關(guān)正則化回歸的研究尤其與保持偏差-方差間的良好平衡相關(guān),特別是與如何尋找到一個合適的λ值相關(guān)。 通過觀察給定的λ,的極小值會有半范數(shù)值,該值必然能在
中將經(jīng)驗最小二乘損失(第一項) 最小化,就可以將前一節(jié)中的ansatz函數(shù)與嵌套空間Fi聯(lián)系起來。因此來自遞增權(quán)重序列的遞減范數(shù)序列就給到了我們嵌套的Ansatz空間。 許多流行的正則回歸方法(例如Lasso)適合這種類型的框架。
贊美VC界
讓我們講回VC 界,正式一點以便增強直覺。關(guān)鍵的概率界限是為了準(zhǔn)確性(或者說0-1的風(fēng)險)
我們來分析一下。外面部分稱“概率大于等于1?η”(我們還得更精確一點),此處我們覺得概率η太小了,這意味著我們所有的只是一個概率界限,而不是一個“幾乎肯定”的保證。 內(nèi)部的部分基本上是說,在全概率分布上的精度非常接近于在訓(xùn)練集上的精度,也就是說在N變得非常大的時候,我們有一個差值趨于零的精確邊界。 從表面上看,這告訴了我們關(guān)于風(fēng)險或準(zhǔn)確性的信息,但是關(guān)于模型又說明了什么呢? 在我看來,關(guān)鍵的信息是,我們的模型是如此嚴(yán)格,以至于我們可以看到測試集上發(fā)生的一切(或者更精確地說,在完整的Px,y分布上發(fā)生的一切)已經(jīng)在訓(xùn)練集中發(fā)生了。
貝葉斯放一邊
在貝葉斯環(huán)境下,正則化可以被解釋為最大后驗(MAP)估計,或者——如果我們經(jīng)歷了定義先驗的麻煩——我們也可以對所有f∈F的估計進(jìn)行積分。
3 ? 這告訴了我們深度學(xué)習(xí)的什么? 當(dāng)我們將model.parameters()(這里我用的是PyTorch)傳遞給優(yōu)化器時,深度學(xué)習(xí)看起來好像是參數(shù)化的。但其實它不是! 看起來這種正則化方法正是深度學(xué)習(xí)運作的理論框架——有時人們對此知之甚少。我們的模型足夠大,從“道德上看來”足以成為非參數(shù),盡管我們還沒有完全理解,但我們所做的大多數(shù)事情(比如augmentation, norm layers和 dropout)其實都是正則化。 這也是M. Belkin等人所寫的《協(xié)調(diào)現(xiàn)代機器學(xué)習(xí)實踐和偏差-方差權(quán)衡》(Reconciling modern machine learning practice and the bias-variance trade-off)的主題和他們早期研究的主題,即泛化性能的關(guān)鍵是由某個特定函數(shù)空間范數(shù)衡量的函數(shù)的規(guī)律性或平滑性。? 我們有必要仔細(xì)看看M. Belkin等人(我認(rèn)為這是首次)對雙下降現(xiàn)象的描述:
這里有幾點需要注意:
M. Belkin等人把條件中的“傳統(tǒng)(classical)”和“現(xiàn)代(modern)”等限定詞用引號括了起來。“現(xiàn)代”條件是一種十分之非參數(shù)的學(xué)習(xí),具有一種我們還需要更加深入理解的正則化。
在多參數(shù)的條件下,偏差-方差思維似乎仍然是完全適用的,但非參數(shù)回歸可能是比“限制容量”的候選集更好的參考框架。
對于雙重下降現(xiàn)象的普遍理解似乎都是基于P. Nakkiran等人的文章:《雙重下降》(Deep Double Descent),這證明了這篇論文的優(yōu)秀,也證明了OpenAI能夠?qū)⑦@些選題推介給更廣泛的受眾。他們用更真實的網(wǎng)絡(luò)進(jìn)行了系統(tǒng)的實驗(M. Belkin等人則引用了更淺層的網(wǎng)絡(luò))。對我來說,一個重要的結(jié)論是,雙重下降現(xiàn)象在標(biāo)簽損壞的兩種實驗條件中存在“凹凸”,他們的報告稱,在標(biāo)簽干凈的實驗中,所得到的結(jié)果則要平緩得多,沒有那么“凹凸”。 他們給出了一張圖,這張圖顯示了對于固定次數(shù)的epoch,用損壞標(biāo)簽將一個修改過的ResNet18訓(xùn)練成CIFAR10這個過程中的測試錯誤。修改是指信道數(shù)量降到原數(shù)量的k分之一(k在64到1這個范圍)(意思是他們會從原ResNet18的64分之一開始做實驗,逐漸增加,最后達(dá)到原數(shù)量)。標(biāo)簽損壞發(fā)生在數(shù)據(jù)集中(在某一次epoch,而不是每個epoch中),15%的標(biāo)簽被切換到一個隨機錯誤的類。這被解釋為一種概略的誤設(shè)。
4 ? VC理論對于用噪聲標(biāo)簽擬合模型有什么啟示? 通過上面的討論,我們了解到當(dāng)一個模型處于VC界有用的限定條件中(比如當(dāng)小模型處于“傳統(tǒng)”條件中),如果訓(xùn)練數(shù)據(jù)?D來自與原始數(shù)據(jù)相同的分布?Px,y,測試集的測試精度(很可能)接近訓(xùn)練精度。換句話說,這個條件意味著我們假設(shè)Px,y有相同的損壞程度(和損壞種類)。但這意味著如果模型學(xué)習(xí)了,且學(xué)會了不被損壞的訓(xùn)練數(shù)據(jù)分散太多注意力,也就是說,在訓(xùn)練數(shù)據(jù)上,正確標(biāo)簽會擠出損壞標(biāo)簽。
5 ? 特征和學(xué)習(xí) 讓對深度學(xué)習(xí)的直覺化變得困難的原因之一是Ansatz領(lǐng)域的自適應(yīng)特性。我這么說的意思是,我們沒有一個固定的特征提取器(由手動構(gòu)造,并由核機中使用的核家族給出)將學(xué)習(xí)應(yīng)用到特征上。通常,我們將最后一層的輸入視為特征(通過word2vet式損失、原型網(wǎng)絡(luò)、基準(zhǔn)無監(jiān)督學(xué)習(xí)等方式學(xué)習(xí)的向量表示方法),或者我們可能在MLP分類器頭之前的卷積層末尾分割卷積網(wǎng)絡(luò)。 傳統(tǒng)的做法是將學(xué)習(xí)后的分類器放在固定的特征提取器上,E. Hoffer等人的想法卻相反,他們甚至建議對分類器進(jìn)行固定,即只對特征提取器進(jìn)行訓(xùn)練。 因此,我們可能會試圖通過假裝提取特征來簡化我們的直覺。在P. Nakkiran等人的標(biāo)題圖片實驗中,當(dāng)使用t-SNE等降維機制將通過無噪聲數(shù)據(jù)學(xué)習(xí)到的特征可視化時,添加標(biāo)簽噪聲相當(dāng)于在每個類對應(yīng)的點的blob上添加噪聲。考慮到這一點,我們可以進(jìn)行一個類似的實驗,這個實驗甚至比M. Belkin等人的人工數(shù)據(jù)實驗更簡單,那就是:理解深度學(xué)習(xí)。
6 ? 對標(biāo)簽噪聲、容量、雙下降和實驗測試誤差的直覺
撇開統(tǒng)計數(shù)據(jù)不談:下文推測了一些可能發(fā)生的情況,通過想象我們可以在原型網(wǎng)絡(luò)中得到與P. Nakkiran等人圖中所描述的相同的現(xiàn)象,且容量由我們所能擁有的原型數(shù)量來表示:
在最左邊width(參數(shù))值1到5附近,我們的原型比類少,模型擬合程度不高(欠擬合),因為模型不能代表所有的類。
在width5附近,我們有10個(或者適當(dāng)?shù)馗啵┰危牵诿恳粋€原型的訓(xùn)練中損壞標(biāo)簽都被擠出了,所以這些損壞標(biāo)簽沒有發(fā)揮作用。
在width5到10這個范圍,原型收集損壞的標(biāo)簽。由于每個原型都有一個用在推斷階段的“影響范圍”,所以存在一個相當(dāng)大的空間,在這個空間中損壞原型與測試是非常相關(guān)的。
在width10以外的范圍,我們增加了更多的原形。原型之間變得更近,在推斷階段中損壞的標(biāo)簽原型也被“擠出”,因此它們的“影響范圍”就會變得更小(因為比起擁有3個損壞原形,同一個類擁有5個非損壞原型中的3個的概率更大)。
這對偏差-方差分解意味著什么? 回想一下,分解在空間上是逐點的,并像之前一樣要對各種訓(xùn)練數(shù)據(jù)集進(jìn)行方差和偏差處理。假設(shè)你只有兩個類,那么預(yù)測和標(biāo)簽要么是0要么是1。接下來原型收集已損壞的標(biāo)簽,就會產(chǎn)生偏差(因為你將以某種概率預(yù)測錯誤的事情)和方差(因為糟糕預(yù)測的區(qū)域取決于哪些標(biāo)簽已損壞,也就是取決于我們在哪個數(shù)據(jù)集D上繪制),并使錯誤預(yù)測的區(qū)域更小,從而減少方差和偏差。 在這種直覺中,早期停止的作用是檢測模型何時開始收集已損壞的標(biāo)簽。 所以看起來現(xiàn)代神經(jīng)網(wǎng)絡(luò)本質(zhì)上是非參數(shù)的,其工作方式依賴于各種正則化。為了使用M. Belkin等人的公式,我們希望更加了解,我們對于各種技術(shù)如何對某些函數(shù)空間范數(shù)作用的理解到了什么程度。似乎很難得出“傳統(tǒng)”統(tǒng)計數(shù)據(jù)表明現(xiàn)代學(xué)習(xí)不起作用的結(jié)論。 Hastie等人的《高維無脊最小二乘插值中的驚喜》(Surprises in High-Dimensional Ridgeless Least Squares Interpolation)一文將最小二乘作為模型問題,提供了非常全面的分析,這也可能為深度學(xué)習(xí)現(xiàn)象提供直覺。
在插值條件中擠出錯誤標(biāo)記的數(shù)據(jù)??
我們可以做一個非常簡單的插值條件的模擬。我們來思考一個由2d標(biāo)準(zhǔn)單位法線提取并沿著水平軸移動±2的點的二分類問題,并從每個類別的分配中抽取25%的點。 為了得到一個插值條件,我們使用一個具有明顯峰值的核。為了有一個易分析處理的質(zhì)量并將其標(biāo)準(zhǔn)化為1,我們使用核 ?
這個核有單位質(zhì)量,在x=0時趨于無窮,且從原點衰減:
這意味著,如果我們將每一類的密度表示為樣本處核的均值,即:
假設(shè)不同類別的點不重合(幾乎肯定如此),我們可以根據(jù)更大的點對每個點進(jìn)行分類,或者說,如果我們想通過標(biāo)準(zhǔn)化每個點的概率密度來獲取概率
這給了我們一個插值解——在每個訓(xùn)練點,標(biāo)簽類有無限密度,所以它被歸類為屬于這個類。 那么標(biāo)簽錯誤發(fā)生了什么呢? 標(biāo)簽錯誤會導(dǎo)致?lián)p壞的訓(xùn)練點附近的某些區(qū)域被分配給錯誤的類。然而,附近正確類的點越多,錯誤分類的區(qū)域就越小。我們可以交互地嘗試。隨著點數(shù)的增加,測試誤差會減少。
這意味著什么呢??這說明對于插值解,在測試時間內(nèi),良好的訓(xùn)練點會擠出標(biāo)記糟糕的點。?
對抗示例
但是,隨著數(shù)據(jù)的增加,當(dāng)壞分類的區(qū)域和被隨機抽樣的數(shù)據(jù)點擊中的概率減小時,隨機抽樣點到下一個壞樣本的距離也減小了。這意味著除了利用模型的不良連續(xù)性(即輸入的小變化會導(dǎo)致提取的特征發(fā)生大的變化),插值條件也能使對抗例子更容易產(chǎn)生,因為我們只需要特征的小變化。
特征噪聲類似于標(biāo)簽噪聲
但是,雙重下降不是也發(fā)生在沒有損壞標(biāo)簽的情況下嗎? 我們“僅僅”需要格外小心地處理我們的訓(xùn)練數(shù)據(jù)嗎? 好吧,沒這么簡單。高維特征在本質(zhì)上可能比低維特征噪聲更多:想象一下在高維空間(比如d)中有一個兩類線性分類。我們有了有向量和偏差的分類器。給定輸入,當(dāng)x?v+b≥0時,類為1;否則,類為0。如果我們預(yù)先知道輸入是有界的,我們可以找到類原型?,并使用距離進(jìn)行分類。但隨后的線性分類器的d?1維零空間(null-space)中的向量,比如我們可以添加到輸入中而不改變結(jié)果的向量空間
,可能對這個距離有很大幫助,從而使得成為對更相關(guān)的投影距離
的一個噪聲估計。 如果我們想保持在二維空間,我們可以放大噪聲維度。這就將我們引入第二個實驗。我們來繪制獨立的隨機二維點,其在“特征維度”中的標(biāo)準(zhǔn)偏差為0.5,在“噪聲維度”中的標(biāo)準(zhǔn)偏差為5。這兩個類用±1分開。我們使用EM算法來將每個維度的標(biāo)準(zhǔn)偏差為1的K高斯函數(shù)的混合值擬合到每個類中。通過比較兩個擬合密度進(jìn)行分類。我們使用5000個訓(xùn)練點和1000個測試點。
如果我們以不同的K值運行200次,并記錄其準(zhǔn)確性,我們可以看到雙重下降中的凹凸:
關(guān)于這些實驗的一個問題是:誤差分布是傾斜的:我們得到的很多測試誤差在2-3左右出現(xiàn),可誤差在10左右還出現(xiàn)了一個尾巴。這條差擬合的曲線尾部的質(zhì)量隨分量K的數(shù)量而變化,似乎是造成中間K的平均誤差出現(xiàn)凹凸的主要原因。
7 ? 結(jié)論 綜上,我們學(xué)到了什么呢?
在我看來,噪音需要在推斷階段而不是在訓(xùn)練階段擠出特征,由此我們看出深度學(xué)習(xí)模型的本質(zhì)是非參數(shù)的。這與KDE實驗非常接近。
即使我們有很好的標(biāo)簽(你有的,對吧?),深度學(xué)習(xí)中的高特征維度會導(dǎo)致特征中的噪音,而這些噪音的行為與標(biāo)簽中的噪音類似。
編輯:黃飛
?
評論
查看更多