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