回覆列表
  • 1 # BayMX666

    學習率決定了權重迭代的步長,是一個較敏感的超引數,它對模型效能的影響體現在兩個方面,第一個是初始學習率的大小,第二個是學習率的變換方案。

    初始的學習率不宜過大,過大則導致模型不收斂,過小則導致模型收斂特別慢或者無法學習,下圖展示了不同大小的學習率下模型收斂情況的可能性,圖來自於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 增大到一定程度,其確定的下降方向已經基本不再變化。

  • 中秋節和大豐收的關聯?
  • 把一個角放在五倍放大鏡,他的大小和原來相比較,會什麼?