Deep Learning模型的訓練是不斷的實驗過程,這當中的實驗設計,在Deep Learning中稱作超參數(hyperparameter)的設計。今天就來看看幾個超參數的設計。
訓練模型的過程中,會持續不斷的去更新模型的權重(參數)。每一次的訓練,我們都要決定如何更新模型的權重,一個是方向、一個是更新的幅度。Learning Rate就是決定權重更新的幅度。Learning Rate太小,可能導致模型很緩慢的優化,過度拉長訓練時間;Learning Rate太大,則可能導致模型錯過最佳更新的解,而無法找到最佳的權重更新數值。
因此,設計上,也有人會去設定排程,觀察模型優化的情況,適時的動態調整Learning Rate。另外,也可以設定讓模型每訓練個十次之後,就去調小Learning Rate,目的是讓模型剛開始的訓練過程可以快速收斂,然後再最後盡可能去找出最佳結果。
Batch Size代表每一次更新權重,是根據多少樣本資料來去決定權重的更新。Batch Size過大,可能會導致Memory被佔滿,決定Batch Size的時候,因此需要考量到硬體的規格。另外,過大的Batch Size,會容易讓模型的權重更新陷入局部最佳解,而無法找到全域最佳解。
訓練好的模型,由於複雜度太高,讓模型僅關注特定資料特徵,而無法通用性的去看各個特徵,這時候就會出現Overfitting的問題。換言之,模型訓練的時候好棒棒,但實際去跑去跑的差強人意。為了解決這種問題,有一些方式可以去調整模型的複雜度,減少Overfitting發生的機率。
根據某一種機率分佈,隨機去剪斷模型神經元之間的連接,藉此減少模型的複雜度。
訓練模型時,當發現訓練的表現越好,但實際驗證結果卻越差的時候,表示模型已經無法再優化。我們可以設計個次數限制,來停止模型的訓練。例如,連續三次模型驗證都無法優化時,就停止繼續訓練模型。
另外一種減少Overfitting的方法是在損失函數(cost function)上加上權重的懲罰值,如果權重更新過大,就會被賦予懲罰,讓損失函數變大。損失函數式模型的優化目標,當權重更新可以讓預測更準確,損失函數就會越小。L1和L2差異是懲罰大小,L2會罰得更重些(平方加重懲罰)。
ChatGPT出題時間:
問題1:學習率的作用
問題: 在深度學習中,學習率(Learning Rate)的作用是什麼?
A) 控制模型的複雜度
B) 控制模型的深度
C) 控制模型的訓練速度
D) 控制模型的記憶體使用
答案:C) 控制模型的訓練速度
解釋: 學習率決定了模型在每次參數更新時所移動的步長。較大的學習率可能會加速訓練,但可能導致不穩定。較小的學習率則可能使訓練較緩慢,但更穩定。
問題2:Batch Size的影響
問題: 增加Batch Size會如何影響訓練過程?
A) 增加Batch Size會加速訓練
B) 增加Batch Size會增加記憶體需求
C) Batch Size的大小對訓練過程沒有影響
D) 增加Batch Size會減少訓練的穩定性
答案:B) 增加Batch Size會增加記憶體需求
解釋: 增加Batch Size會導致模型需要更多的記憶體來處理每個批次的計算,因此會增加記憶體需求。這可能會使模型在訓練過程中需要更多的硬件資源。
問題3:Regularization技巧的目的
問題: 正則化技巧的主要目的是什麼?
A) 提高模型的訓練速度
B) 減少模型的模型大小
C) 防止模型過度擬合
D) 提高模型的準確性
答案:C) 防止模型過度擬合
解釋: 正則化技巧的主要目的是防止模型對訓練數據過度擬合,從而提高其對新數據的泛化能力。