Leo Yeh's Blog

SAS 深度學習 (4)

教學目標

初步了解 SAS 深度學習中超參數調整的基本概念。

重點概念

首先機器學習演算法建立預測模型的成效取決於訓練過程和各種超參數 (Hyperparameters) 選項,並且透過搜索深度神經網路的超參數空間訓練每個超參數組合直到演算法收斂,此外訓練模型的優化演算法有時需要選擇影響優化程式效能的參數值,其中每選擇的參數值將會對優化程式的效能產生影響,而這種影響可能是針對特定問題,此時在 SAS 深度學習中更支持自動執行超參數調整過程的方法這個過程稱為超參數調整 (Hyperparameter Tuning),其就是一個選擇優化演算法參數的過程,以利提高針對特定問題實際的模型成效。

接著 SAS 深度學習主要使用 dlTune 演算法執行超參數調整,所謂 dlTune 演算法本質上主要是一個排序和選擇函數,每個參數集皆訓練幾個 Epochs,並且進行驗證模型錯誤的比較,並且保留最佳效能的參數集,至於其它參數集則會為更進一步進行訓練幾個 Epochs 之後,更進一步的減少不適合的參數集,此外我們也能夠在每個超參數調整週期中配置要評估和保留的參數集數量,並且在每個超參數調整週期中設定要評估和保留的參數集數量,其中針對超參數調整方法的要求,其主要執行以下步驟,分別為:

  1. 指定要調整的超參數。
  2. 指定每個超參數集合理範圍。
  3. 指定需要評估超參數集的數量。
  4. 使用稱為超參數集中超參數值訓練模型。
  5. 使用模型訓練效能標準來評估其它超參數集的成效。
  6. 從分析空間中刪除效能最差的超參數集。

其中在調整超參數之前,我們必須確定要調整哪些超參數以及這些參數的合理範圍值,SAS 深度學習主要使用內部衍生的演算法,其主要針對機器學習問題使用基於隨機優化演算法來選取需要的超參數,當然也能夠繼續使用調整的超參數進行訓練,直到訓練過程完成,達到模型的品量適合,通常會以錯誤分類率 (Misclassification Rate) 或錯誤率 (Error Rate) 用於確定超參數值。此外每個超參數集皆會針對少量 Epochs 進行訓練,並且針對效能最佳的超參數集進行刪除,而剩餘的參數集被進一步進行評估直到指定完成調整迭代次數或直到只剩下最佳的超參數集為止,以及透過快速丟棄效能較差的超參數集,將能夠用較少的計算資源來識別效能較佳的超參數集。

再來在 SAS 深度學習使用 dlTune 演算法執行超參數調整,將會先使用 Latin Hypercube 選擇超參數集搜尋空間的樣本,此方式允許在每個超參數的整個範圍內進行收斂,並且與簡單的隨機樣本進行相比,將可能會找到每個超參數的良好值,因此被認為產生了相當均勻的抽樣空間,所以如果為了避免過度擬合,則建議使用保留樣本來評估每組超參數。但是為何使用 Latin Hypercude 選擇超參數集搜尋空間的樣本呢?因為即使具有機器學習演算法及其參數的專業知識,超參數的最佳設定也會隨著不同的數據而變化,並且根據經驗這部份很難預測,此時為了探索適當超參數設定通常會執行 Grid Search ,但是其會隨著參數的數量和每個的離散等級別的數量呈指數增長,所以將無法識別改進的模型設定,而 Random Search 對於相同數量的樣本將會更好的針對空間進行抽樣,但是因為取決於樣本的大小和均勻性,若分配不適當也可能錯過良好的超參數值和組合,所以最佳的方法就是使用 Latin Hypercude 進行抽樣,此時在每個超參數上是完全一致的,但是在組合中是隨機的,這種方法更有可能找到每個超參數的最佳值,然後更進一步識別最佳的超參數集,像是建議調整有關學習率的超參數值,以利輕鬆獲得模型成效的提升,或者如果模型的成效明顯更好,則建議調整有關有關正則化 (L1、L2 和 Dropout) 的超參數值進行更佳的模型訓練。

最後在 SAS 深度學習中使用 dlTune 演算法主要是根據 Hyperband 演算法按比例分配每組抽樣超參數給指定模型對應的資源,然後針對模型進行多個期間的訓練,並且從訓練過程中移除執行的模型,以及針對表現不佳模型的資源將會被重新進行重新分配,直到確保模型的準確性,如果僅是為了找到最優的超參數集而不考慮其它的因素,則就透過窮舉法就能夠將所有超參參數組合皆嘗試直到找到最佳,但是若是考慮時間因素和計算資源,則就能夠透過 Hyperband 演算法進行超參數集數量和資源分配進行權衡 (Tradeoff),也就是透過盡可能多的超參數集數量和資源分配,以利盡可能的找到最佳超參數,至於針對 Hyperband 演算法影響 dlTune 演算法的優化屬性值,分別為:

  1. Max epochs:主要是設定在刪除超參數集合之前需要執行的 Epochs 數。
  2. Tune iterations:主要是設定超參數調整的次數。
  3. Number of trials:主要設定在一開始嘗試處理的超參數集數量。
  4. Tune retention:主要設定在每次調整超參數迭代之後保留的比例。

總結超參數的優化調整通常可以非常快地導致模型誤差比這些參數的設定減少幾個百分點,而除了深度學習之外,超參數的優化調整的概念也用於機器學習演算法,像是決策樹能夠設定深度數量,樹的數量和在隨機森林或梯度提升樹中分割的變數數量,而所謂自動化機器學習最主要的關鍵差別就在於自動化超參數的優化調整,這也是 SAS 深度學習最關鍵優勢之一。

相關資源

⬅️ Go back