當前位置:
首頁 > 知識 > 模型的泛化能力僅和Hessian譜有關嗎?

模型的泛化能力僅和Hessian譜有關嗎?

選自einstein

作者:Huan Wang 等

機器之心編譯

參與:Geek AI、劉曉坤

Salesforce 近日提出了一篇探究模型泛化能力的論文,他們在 PAC-Bayes 框架下將解的平滑性和模型的泛化能力聯繫在了一起,並從理論上證明了模型的泛化能力不僅和 Hessian 譜有關,和解的平滑性、參數的尺度以及訓練樣本的數量也有關。

經驗表明,通過訓練深度神經網路得到的不同局部最優值往往並不能以相同的方式泛化到未知數據集上,即使取得了相同的訓練損失。近年來,這一問題日益受到經驗和理論深度學習研究社區的關注。從理論的角度來看,大多數用來解釋這種現象的泛化邊界只考慮了最差的情況,因此忽略了不同解的泛化能力。在本文中,我們將重點探討下面的問題:

解的局部「平滑性」和模型的泛化能力有何關係?

對 Hessian 二階導數和泛化能力的經驗觀測結果

從較早的 Hochreiter 和 Schmidhuber 等人的論文《FLAT MINIMA》到最近的 Chaudhari《Entropy-SGD: Biasing Gradient Descent Into Wide Valleys》和 Keskar《On Large-Batch Training for Deep Learning: Generalization Gap and Sharp Minima》等人的研究都認為,深度學習收斂解的局部曲率(或稱「銳度」)與由此得到的分類器的泛化性質密切相關。「尖銳」的最小值(二階導很大)會導致模型缺乏泛化能力,我們通過大量的中的大和正的特徵值來刻畫它,在這一點損失函數最小。

Neyshabur 等人《Exploring Generalization in Deep Learning》指出,銳度本身可能並不足以決定泛化能力。他們認為,解的尺度(如 norm、margin)和銳度會同時影響泛化能力。為此,他們提出了一個基於 PAC-貝葉斯邊界的「期望銳度」:

如下圖所示,如果局部最小值是「平滑的」,那麼對模型的干擾不會導致目標函數發生太大的變化。因此,它提供了一種測量局部最小值平滑度的方法。

如何擾動模型?

眾所周知,在訓練中給模型添加雜訊有助於提高模型的泛化能力。然而,如何設置合適的雜訊水平仍然是個有待解決的問題。目前大多數最先進的方法假設在所有的方向上都有相同程度的擾動,但是直覺告訴我們這樣做可能並不合適。

舉一個簡單的例子來看,我們用 k=3 的高斯混合模型構建了一個小的二維樣本集,並通過將標籤以中值為閾值二值化。然後採用 5 層僅僅帶有 w_1、w_2 兩個參數的多層感知機進行預測,使用交叉熵作為損失函數。不同層的變數會被共享。在這裡我們採用 sigmoid 作為激勵函數。下圖為使用 100 個樣本訓練出的模型的損失函數的變化情況示意圖:

我們不妨觀察一下示意圖中用右側豎條的橙色表示的最優點,我們會發現沿不同方向損失函數表面的平滑度完全不同。那麼我們是否應該在各個方向上施加同樣的干擾?也許不是。

我們認為需要沿著「扁平」的方向添加更多的雜訊。具體而言,我們建議添加的均勻高斯雜訊或截斷的高斯雜訊,它在每個坐標方向上的水平大致與下面的公式成正比

其中 ρ 是 Hessian和的 局部 Lipschitz 常數

模型的泛化性能度量

正如 Dinh 等人《Sharp Minima Can Generalize For Deep Nets》和 Neyshabur《Exploring Generalization in Deep Learning》等人討論的那樣,Hessian 譜本身可能並不足以確定模型的泛化能力。特別是對於使用 RELU 作為激勵函數的多層感知機模型來說,我們可以重新設置模型的參數並且任意對 Hessian 譜進行放縮而不影響模型的預測性能和泛化能力。

通過使用一些近似方法,我們提出了一種名為「PACGen」的對於模型泛化能力的度量。該度量方法涉及到參數的尺度、Hessian 矩陣,以及通過 Hessian 的 Lipschitz 常數刻畫的高階平滑項。

其中,我們假設 L_hat(w) 在 w? 周圍為局部的凸函數。

即使假設我們的度量方法中存在局部的保凸性,在實際應用中,我們可能需要在損失表面的任意點計算該度量。當時,我們簡單將其視為 0。我們用不同的顏色代表損失函數表面的數值,將度量值繪製如下:

共享權值的帶有 2 個參數的 5 層多層感知機的示意圖。損失函數表面的各種顏色顯示了泛化能力的度量值。較低的度量值代表更好的潛在泛化能力。底部平面上的顏色代表了同時考慮損失和泛化能力度量的近似的泛化邊界。

如圖所示,用綠色豎條表示的該度量方法的全局最優值是很高的。這表明,與紅色豎條表示的局部最優值相比,它的泛化能力可能較弱。

另一方面,整體的期望損失由損失和泛化度量一同決定。為此,我們在圖的底部繪製了一個彩色平面。投影平面上的顏色標示了一個近似的泛化邊界,它同時考慮了損失和泛化能力度量。儘管紅色豎條表示局部最優值稍微較高,但是與「尖銳」的全局最優值相比,其整體的泛化邊界是相似的。

模型重建

假設該模型生成的是 y=f(x)=p(y|x),由於我們知道真實的分布為 p(x),我們可以重建聯合分布 p(x,y)=p(x)p(y|x)。舉例而言,我們可以首先從 p(x) 中抽樣得到 x,然後使用該模型來預測 y_hat=f(x)。下文顯示了從真實分布抽樣得到的樣本,以及在損失函數取「尖銳」的最小值和「平滑」的最小值時得到的分布。

從真實分布中抽樣得到的樣本。

在損失函數取「尖銳」的最小值的情況下預測出的標籤。

在損失函數取「平滑」的最小值時預測出的標籤。

儘管「尖銳」的最小值能更好地擬合標籤,在「平滑」最小值處取得的預測函數似乎有更簡單的決策邊界。

在真實數據集上得到的 PACGen

PACGen 度量是在不同的批尺寸和學習率的情況下通過一個 Pytorch 模型計算得到的。我們觀察到了和 Keskar 等人相類似的結果:隨著批尺寸的增加,測試損失和訓練損失之間的差異逐漸增大。我們提出的度量也顯示出了同樣的趨勢。

項目地址:https://github.com/pytorch/examples/tree/master/mnist

測試誤差和訓練誤差對比示意圖

泛化能力差距示意圖,Ψγ=0.1,?=0.1 時不同批尺寸下在 MNIST 數據集上多輪訓練後函數的變化情況。隨機梯度下降(SGD)被用作優化器,在所有情況下使用 0.1 作為學習率。隨著批處理規模增大,Ψγ,?(^L,w?) 不斷增加。該趨勢和損失的真實差距的變化趨勢是一致的。

測試損失和訓練損失對比圖

泛化能力差距示意圖,Ψγ=0.1,?=0.1 時不同批尺寸下在 CIFAR-10 數據集上多輪訓練後函數的變化情況。隨機梯度下降(SGD)被用作優化器,在所有情況下使用 0.1 作為學習率。

當我們將批尺寸設置為 256 時,變化情況是相似的。隨著學習率減小,測試損失和訓練損失之間的差距增大,這與通過 Ψγ,?(^L,w?) 計算得到的變化趨勢是一致的。

測試損失和訓練損失對比圖

泛化能力差距示意圖,Ψγ=0.1,?=0.1 時不同批尺寸下在 MNIST 數據集上多輪訓練後函數的變化情況。隨機梯度下降(SGD)被用作優化器,在所有情況下批處理規模被設置為 256。隨著學習率減小,Ψγ,?(^L,w?) 不斷增大。該趨勢與損失的真實差距的變化趨勢一致。

測試損失和訓練損失對比圖

泛化能力差距示意圖,Ψγ=0.1,?=0.1 時不同批尺寸下在 CIFAR-10 數據集上多輪訓練後函數的變化情況。隨機梯度下降(SGD)被用作優化器,在所有情況下批處理規模被設置為 256。

受擾動的優化

PAC-Bayes 邊界說明,為了得到更好的泛化能力,我們應該對受擾動的損失進行優化而不是對真實損失進行優化,特別是在每個參數受擾動的程度是根據局部平滑屬性設置的情況下。我們觀察到,這種對受擾動的模型的優化在 CIFAR-10,CIFAR-100,以及 tiny Imagenet 等數據集上的模型性能得到了提升。

在 CIFAR-10 上使用 ADAM 作為優化器的實驗結果

在 CIFAR-100 上使用 ADAM 作為優化器的實驗結果

在 tiny Imagenet 上使用隨機梯度下降(SGD)作為優化器的實驗結果

結語

我們在 PAC-Bayes 框架下將解的平滑性和模型的泛化能力聯繫在了一起。我們從理論上證明了模型的泛化能力和 Hessian、解的平滑性、參數的尺度以及訓練樣本的數量是有關的。我們基於泛化邊界提出了一種新的度量方法測試模型的泛化能力,並提出了一種新的擾動演算法用來根據 Hessian 調整擾動水平。最後,我們從經驗上說明了我們演算法和一個正則化器的效果是類似的,都能在未知的數據上獲得更好的泛化性能。要想了解包括關於證明和假設在內的更多細節,請參考我們論文的預印本。

本文為機器之心編譯,轉載請聯繫本公眾號獲得授權。

------------------------------------------------


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 機器之心 的精彩文章:

領英開源TonY:構建在Hadoop YARN上的TensorFlow框架
AIIA開發者大會開啟在即,思必馳俞凱談語音交互技術AI互聯

TAG:機器之心 |