學習率決定了權重迭代的步長,是一個較敏感的超引數,它對模型效能的影響體現在兩個方面,第一個是初始學習率的大小,第二個是學習率的變換方案。
初始的學習率不宜過大,過大則導致模型不收斂,過小則導致模型收斂特別慢或者無法學習,下圖展示了不同大小的學習率下模型收斂情況的可能性,圖來自於cs231n。
那麼如何確定最佳的初始學習速率呢?通常可以採用最簡單的搜尋法,即從小到大開始訓練模型,然後記錄損失的變化,隨著學習率的增加,損失會慢慢變小,而後增加,而最佳的學習率就可以從其中損失最小的區域選擇。有經驗的調參工程師常常根據自己的經驗進行選擇,比如0.1,0.01等。
學習率變換的策略通常分為兩類:一種是預設規則學習率變化法,一種是自適應學習率變換方法。
預設規則學習率變化法,常見的策略包括fixed,step,exp,inv,multistep,poly等。他們相當於預設的某種方式策略來在訓練過程調整學習率大小。
自適應學習率策略以Adagrad,Adam等為代表,是目前比較主流的學習率使用方法,他們都會在學習過程中分別根據θ引數和梯度來動態調整學習率,這裡不再細述。
至於Batchsize, 是指的每次送給模型訓練的樣本數量,最小為1,最大為整個資料集,應根據不同的資料量大小和訓練場景選用合適的batchsize大小。通常我們採用的批梯度下降法(Mini-batches Learning)。
那麼,在合理範圍內,增大 BatchSize 有什麼好處?
1、大矩陣乘法的並行化效率提高。
2、跑完一次 epoch(全資料集)所需的迭代次數減少,對於相同資料量的處理速度進一步加快。
3、在一定範圍內,一般來說 BatchSize 越大,其確定的下降方向越準,引起訓練震盪越小。
盲目增大 BatchSize 有什麼壞處?
1、記憶體利用率提高了,但是記憶體容量可能撐不住了。
2、跑完一次 epoch(全資料集)所需的迭代次數減少,要想達到相同的精度,其所花費的時間大大增加了,從而對引數的修正也就顯得更加緩慢。
3、BatchSize 增大到一定程度,其確定的下降方向已經基本不再變化。
學習率決定了權重迭代的步長,是一個較敏感的超引數,它對模型效能的影響體現在兩個方面,第一個是初始學習率的大小,第二個是學習率的變換方案。
初始的學習率不宜過大,過大則導致模型不收斂,過小則導致模型收斂特別慢或者無法學習,下圖展示了不同大小的學習率下模型收斂情況的可能性,圖來自於cs231n。
那麼如何確定最佳的初始學習速率呢?通常可以採用最簡單的搜尋法,即從小到大開始訓練模型,然後記錄損失的變化,隨著學習率的增加,損失會慢慢變小,而後增加,而最佳的學習率就可以從其中損失最小的區域選擇。有經驗的調參工程師常常根據自己的經驗進行選擇,比如0.1,0.01等。
學習率變換的策略通常分為兩類:一種是預設規則學習率變化法,一種是自適應學習率變換方法。
預設規則學習率變化法,常見的策略包括fixed,step,exp,inv,multistep,poly等。他們相當於預設的某種方式策略來在訓練過程調整學習率大小。
自適應學習率策略以Adagrad,Adam等為代表,是目前比較主流的學習率使用方法,他們都會在學習過程中分別根據θ引數和梯度來動態調整學習率,這裡不再細述。
至於Batchsize, 是指的每次送給模型訓練的樣本數量,最小為1,最大為整個資料集,應根據不同的資料量大小和訓練場景選用合適的batchsize大小。通常我們採用的批梯度下降法(Mini-batches Learning)。
那麼,在合理範圍內,增大 BatchSize 有什麼好處?
1、大矩陣乘法的並行化效率提高。
2、跑完一次 epoch(全資料集)所需的迭代次數減少,對於相同資料量的處理速度進一步加快。
3、在一定範圍內,一般來說 BatchSize 越大,其確定的下降方向越準,引起訓練震盪越小。
盲目增大 BatchSize 有什麼壞處?
1、記憶體利用率提高了,但是記憶體容量可能撐不住了。
2、跑完一次 epoch(全資料集)所需的迭代次數減少,要想達到相同的精度,其所花費的時間大大增加了,從而對引數的修正也就顯得更加緩慢。
3、BatchSize 增大到一定程度,其確定的下降方向已經基本不再變化。