6個配置反向傳播算法提高模型性能的技巧


1. 學習與泛化

1998年出版的《Neural Networks: Tricks of the Trade》爲學者和神經網絡從業者提供了配置和使用神經網絡模型的最佳實踐。

該書在深度學習復興的風口浪尖上進行了更新,並於2012年發佈了第二版,其中包括13個新章節。


反向傳播是一種非常流行的神經網絡學習算法,因爲它在概念上很簡單,計算效率很高,並且經常有效。但是,使其運轉良好(有時甚至無法運轉),似乎更像是一門藝術,而不是一門科學。

作者還提醒我們,用反向傳播訓練神經網絡確實很困難。儘管該算法既有效又高效,但是它需要仔細配置多個模型屬性和模型超參數,而每個屬性和模型超參數都需要對算法有深刻的瞭解,並需要有正確設置的經驗。但是,尚無可遵循的規則來“最佳”配置模型和訓練過程。

訓練神經網絡模型的目標最具挑戰性,因爲它需要立即解決兩個難題:

  • 學習訓練數據集,以最大程度地減少損失。
  • 泛化模型性能,以便對新的示例進行預測。

訓練神經網絡的目的是要在這兩個問題之間找到平衡。

訓練神經網絡模型的問題是根據偏差-方差折衷提出的,通常通常用來描述機器學習算法。在擬合神經網絡模型時,這些術語可以定義爲:

  • 偏差:衡量所有數據集平均網絡輸出與所需函數的差異的一種度量。
  • 方差:衡量網絡輸出在數據集之間變化多少的指標。

該框架強制將模型的容量定義爲偏差的選擇,從而控制可以學習的函數範圍。它根據訓練過程確定方差,並在過擬合訓練數據集和泛化誤差之間取得平衡。該框架還可以幫助理解訓練過程中模型性能的動態。即,從訓練開始時偏差大方差小的模型到訓練結束時偏差低方差大的模型。

但是,如果訓練時間太長,網絡也會學習到該數據集特有的噪聲,這稱爲過度訓練。在這種情況下,差異會很大,因爲數據集之間的噪聲會有所不同。

對反向傳播算法的關注意味着對“學習” 的關注,但會暫時忽略“泛化”,這可以在以後通過引入正則化技術來解決。對學習的關注意味着對快速(快速學習)和有效(學習良好)的損失最小化的關注。


2. 8種反向傳播的實用技巧

2.1 小批量梯度下降

隨機梯度下降(Stochastic gradient descent),也稱爲在線梯度下降(online gradient descent),隨機從訓練數據集中選擇一個示例估算誤差梯度,然後更新模型參數(權重)。儘管它會導致模型權重更新有波動,但訓練速度快。

批次梯度下降(Batch gradient descent)使用訓練集中所有示例的平均值來估計誤差梯度。從理論上講,它執行起來更快,並且更好地理解了它,但是卻導致學習變慢。通常,作者建議在可能的地方使用隨機梯度下降法,因爲它可以更快地訓練模型。

他們建議利用學習率衰減時間表(learning rate decay schedule),以抵消隨機梯度下降過程中出現的權重更新的噪音影響。他們還建議使用小批量樣本以減少重量更新的噪音。在這裏,誤差梯度是從訓練數據集中的一小部分樣本中估算出來的,而不是隨機梯度下降的一個樣本,也不是批梯度下降的所有樣本。

這被稱爲小批量梯度下降(Mini-Batch Gradient Descent),是訓練神經網絡的默認配置。


2.2 打亂樣本(shuffle)

作者強調,當用於更新模型的下一個示例與前一個示例不同時,學習算法的性能會更好。理想情況下,它與模型最不同或不熟悉。實現此技巧的一種簡單方法是確保用於更新模型參數的連續示例來自不同的類。

還可以通過向模型展示並重新展示其示例時最容易出錯或做出最大錯誤的示例來實現此技巧。這種方法可能有效,但如果在訓練過程中過度代表的示例離羣值,也可能導致災難。


2.3 歸一化輸入

作者指出,如果訓練集中每個輸入變量的平均值接近零,則收斂通常會更快。這可以通過從每個輸入變量中減去平均值(稱爲centering)來實現。

當將輸入應用於來自先前層的隱藏層的輸入時,這種輸入centering還可以改善模型的收斂性。它爲近15年後開發並廣泛流行的批量歸一化(Batch Normalization)技術奠定了基礎。

作者還評論了需要標準化輸入變量的範圍。這可以通過將值除以標準偏差來實現。對於具有高斯分佈的變量,以這種方式居中centering和歸一化值意味着將其減小爲均值爲0標準差爲1的標準高斯分佈

最後,他們建議去相關輸入變量。這意味着消除輸入變量之間的任何線性相關性,並且可以使用主成分分析(PCA)作爲數據轉換來實現。

關於數據準備的提示可以總結如下:

  • 1.訓練集中每個輸入變量的平均值應接近零。
  • 2.縮放輸入變量,以使它們的協方差大致相同。
  • 3.如果可能,輸入變量應該不相關。

下圖很好地總結了數據居中(centering),歸一化(Normalization)和去相關的三個數據準備步驟:

在這裏插入圖片描述


2.4 初始化權重

權重的起始值可能會對訓練過程產生重大影響。權重應隨機選擇,但應使Sigmoid首先在其線性區域內激活。此建議也可能適用於ReLU的權重激活,其中函數的線性部分爲正。

這突出了初始權重對學習的重要影響,其中大權重會使激活函數飽和,從而導致學習不穩定;而小權重將導致很小的梯度,進而導致學習緩慢。理想情況下,應使得模型權重超過激活函數的線性(非曲線)部分。

作者提出了一種隨機權重初始化方案,該方案使用了上​​一層中的節點數,即所謂的fan-in。它是Xavier權重初始化的前身。


2.5 選擇學習率

學習率是算法每次迭代更新模型權重的量。較小的學習速率可能會導致收斂速度較慢,但​​可能會帶來更好的結果;而較大的學習速率可能會導致收斂速度較快,但可能導致較差的結果。

作者建議當權重值開始振盪時降低學習率,而在權重矢量遵循相對穩定的方向時會提高學習率。他們評論說,當使用在線梯度下降時,這是一個艱難的策略,因爲默認情況下,權重會波動很大。

作者還建議對模型中的每個參數使用一種學習率。目的是幫助模型的每個部分以相同的速率收斂。每個權重選擇不同的學習率(eta)可以改善收斂。[…]主要思想是確保網絡中的所有權重以大致相同的速度收斂。他們將此屬性稱爲每個模型參數的均衡學習速度(equalizing the learning speeds)。其滿足:

  • 給每個權重分配自己的學習率
  • 學習率應與單元輸入數量的平方根成比例
  • 較低層的權重通常應大於較高層的權重

這些建議後來被AdaGrad和Adam之類的自適應學習率優化方法所採用,這些方法現已成爲流行的默認設置。


2.6 徑向基函數(RBF)

作者建議,訓練RBF神經元可能比使用S型激活的訓練神經元更快。與可以覆蓋整個空間的S型單元不同,單個RBF單元僅覆蓋輸入空間的一小部分局部區域。這可能是一個優勢,因爲學習可以更快。


3. 二階優化算法

作者繼續介紹五種二階優化算法,特別是:

  • Newton
  • Conjugate Gradient
  • Gauss-Newton
  • Levenberg Marquardt
  • Quasi-Newton (BFGS)

這些算法需要使用Hessian矩陣或Hessian矩陣的近似值。如果您對反向傳播算法進行了理論上的介紹,您可能還記得Hessian矩陣。以手工方式,我們使用Hessian描述模型權重的二階導數。

作者繼續概述了可用於近似Hessian矩陣(用於二階優化算法)的多種方法,例如:有限差分(finite difference),平方雅可比近似(square Jacobian approximation),Hessian對角化(the diagonal of the Hessian)等等。

然後,他們繼續分析多層神經網絡中的Hessian以及二階優化算法的有效性。總之,他們強調二階方法可能更適合使用批量梯度下降訓練的較小神經網絡模型


參考:
https://machinelearningmastery.com/best-advice-for-configuring-backpropagation-for-deep-learning-neural-networks/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章