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

劉曉坤發表於2018-10-15

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

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

對 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》等人的研究都認為,深度學習收斂解的區域性曲率(或稱「銳度」)與由此得到的分類器的泛化性質密切相關。「尖銳」的最小值(二階導很大)會導致模型缺乏泛化能力,我們通過大量的 模型的泛化能力僅和Hessian譜有關嗎?中的大和正的特徵值來刻畫它,在這一點損失函式最小。

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

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

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

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

如何擾動模型?

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

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

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

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

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

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

其中 ρ 是 Hessian 模型的泛化能力僅和Hessian譜有關嗎?模型的泛化能力僅和Hessian譜有關嗎?的 區域性 Lipschitz 常數

模型的泛化效能度量

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

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

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

其中,我們假設 L_hat(w) 在 w∗ 周圍為區域性的凸函式。

即使假設我們的度量方法中存在區域性的保凸性,在實際應用中,我們可能需要在損失表面的任意點計算該度量。當模型的泛化能力僅和Hessian譜有關嗎?時,我們簡單將其視為 0。我們用不同的顏色代表損失函式表面的數值,將度量值繪製如下:

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

共享權值的帶有 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)。下文顯示了從真實分佈抽樣得到的樣本,以及在損失函式取「尖銳」的最小值和「平滑」的最小值時得到的分佈。

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

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

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

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

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

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

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

在真實資料集上得到的 PACGen

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

專案地址:https://github.com/pytorch/examples/tree/master/mnist

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

受擾動的優化

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

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

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

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

在 CIFAR-100 上使用 ADAM 作為優化器的實驗結果模型的泛化能力僅和Hessian譜有關嗎?

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

結語

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

  • 原文連結:https://einstein.ai/research/blog/identifying-generalization-properties-in-neural-networks

  • 論文地址:https://arxiv.org/abs/1809.07402

相關文章