tft每日頭條

 > 生活

 > 深度學習中梯度是怎麼計算得到的

深度學習中梯度是怎麼計算得到的

生活 更新时间:2025-02-06 04:28:07

深度學習中梯度是怎麼計算得到的(深度學習技巧之Early)1

一、早停法簡介(Early Stopping)

當我們訓練深度學習神經網絡的時候通常希望能獲得最好的泛化性能(generalization performance,即可以很好地拟合數據)。但是所有的标準深度學習神經網絡結構如全連接多層感知機都很容易過拟合:當網絡在訓練集上表現越來越好,錯誤率越來越低的時候,實際上在某一刻,它在測試集的表現已經開始變差。

深度學習中梯度是怎麼計算得到的(深度學習技巧之Early)2

圖1、理想中的訓練集誤差和驗證集的誤差

模型的泛化能力通常使用模型在驗證數據集(validation set)上的表現來評估。随着網絡的優化,我們期望的理想中的泛化錯誤如圖1所示。即當模型在訓練集上的誤差降低的時候,其在驗證集上的誤差表現不會變差。反之,當模型在訓練集上表現很好,在驗證集上表現很差的時候,我們認為模型出現了過拟合(overfitting)的情況。

解決過拟合問題有兩個方向:降低參數空間的維度或者降低每個維度上的有效規模(effective size)。降低參數數量的方法包括greedy constructive learning、剪枝和權重共享等。降低每個參數維度的有效規模的方法主要是正則化,如權重衰變(weight decay)和早停法(early stopping)等。

早停法是一種被廣泛使用的方法,在很多案例上都比正則化的方法要好。圖1是我們經常看到論文中出現的圖,也是使用早停法出現的一個結果。其基本含義是在訓練中計算模型在驗證集上的表現,當模型在驗證集上的表現開始下降的時候,停止訓練,這樣就能避免繼續訓練導緻過拟合的問題。其主要步驟如下:

1. 将原始的訓練數據集劃分成訓練集和驗證集

2. 隻在訓練集上進行訓練,并每個一個周期計算模型在驗證集上的誤差,例如,每15次epoch(mini batch訓練中的一個周期)

3. 當模型在驗證集上的誤差比上一次訓練結果差的時候停止訓練

4. 使用上一次叠代結果中的參數作為模型的最終參數

然而,在現實中,模型在驗證集上的誤差不會像上圖那樣平滑,而是像下圖一樣:

深度學習中梯度是怎麼計算得到的(深度學習技巧之Early)3

圖2、真實的驗證集誤差變化曲線

也就是說,模型在驗證集上的表現可能咱短暫的變差之後有可能繼續變好。上圖在訓練集叠代到400次的時候出現了16個局部最低。其中有4個最低值是它們所在位置出現的時候的最低點。其中全局最優大約出現在第205次叠代中。首次出現最低點是第45次叠代。相比較第45次叠代停止,到第400次叠代停止的時候找出的最低誤差比第45次提高了1.1%,但是訓練時間大約是前者的7倍。

但是,并不是所有的誤差曲線都像上圖一樣,有可能在出現第一次最低點之後,後面再也沒有比當前最低點更低的情況了。所以我們看到,早停法主要是訓練時間和泛化錯誤之間的權衡。盡管如此,也有某些停止标準也可以幫助我們尋找更好的權衡。

二、如何使用早停法

我們需要一個停止的标準來實施早停法,因此,我們希望它可以産生最低的繁華錯誤,同時也可以有最好的性價比,即給定泛化錯誤下的最小訓練時間

2.1、停止标準簡介

停止标準有很多,也很靈活,大約有三種。在給出早停法的具體标準之前,我們先确定一下符号。假設我們使用E

E作為訓練算法的誤差函數,那麼Etr​​(t)是訓練數據上的誤差,Ete​​(t)是測試集上的誤差。實際情況下我們并不能知道泛化誤差,因此我們使用驗證集誤差來估計它。

第一類停止标準

假設Eopt​​(t)是在叠代次數t時取得最好的驗證集誤差:

深度學習中梯度是怎麼計算得到的(深度學習技巧之Early)4

我們定義一個新變量叫泛化損失(generalization loss),它描述的是在當前叠代周期t中,泛化誤差相比較目前的最低的誤差的一個增長率

深度學習中梯度是怎麼計算得到的(深度學習技巧之Early)5

較高的泛化損失顯然是停止訓練的一個候選标準,因為它直接表明了過拟合。這就是第一類的停止标準,即當泛化損失超過一定阈值的時候,停止訓練。我們用GLα​​來定義,即當GLα​​大于一定值α的時候,停止訓練。

第二類停止标準

然而,當訓練的速度很快的時候,我們可能希望模型繼續訓練。因為如果訓練錯誤依然下降很快,那麼泛化損失有很大概率被修複。我們通常會假設過拟合隻會在訓練錯誤降低很慢的時候出現。在這裡,我們定義一個k

k周期,以及基于周期的一個新變量度量進展(measure progress)

深度學習中梯度是怎麼計算得到的(深度學習技巧之Early)6

它表達的含義是,當前的指定叠代周期内的平均訓練錯誤比該期間最小的訓練錯誤大多少。注意,當訓練過程不穩定的時候,這個measure progress結果可能很大,其中訓練錯誤會變大而不是變小。實際中,很多算法都由于選擇了不适當的較大的步長而導緻這樣的抖動。除非全局都不穩定,否則在較長的訓練之後,measure progress結果趨向于0(其實這個就是度量訓練集錯誤在某段時間内的平均下降情況)。由此,我們引入了第二個停止标準,即泛化損失和進展的商PQα​​大于指定值的時候停止

第三類停止标準

第三類停止标準則完全依賴于泛化錯誤的變化,即當泛化錯誤在連續s個周期内增長的時候停止(UP)。

當驗證集錯誤在連續s個周期内出現增長的時候,我們假設這樣的現象表明了過拟合,它與錯誤增長了多大獨立。這個停止标準可以度量局部的變化,因此可以用在剪枝算法中,即在訓練階段,允許誤差可以比前面最小值高很多時候保留。

2.2、停止标準選擇規則

一般情況下,“較慢”的标準會相對而言在平均水平上表現略好,可以提高泛化能力。然而,這些标準需要較長的訓練時間。其實,總體而言,這些标準在系統性的區别很小。主要選擇規則包括:

  1. 除非較小的提升也有很大價值,負責選擇較快的停止标準
  2. 為了最大可能找到一個好的方案,使用GL标準
  3. 為了最大化平均解決方案的質量,如果網絡隻是過拟合了一點點,可以使用PQ标準,否則使用UP标準

注意,目前并沒有理論上可以證明那種停止标準較好,所以都是實驗的數據。後續我們再介紹一下實驗結果。

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关生活资讯推荐

热门生活资讯推荐

网友关注

Copyright 2023-2025 - www.tftnews.com All Rights Reserved