訓練與最佳化

學習率

學習率是你在每次更新中往下坡邁出的步伐大小。當最佳化器算出一個移動權重的方向後,學習率決定真正沿該方向走多遠。普遍公認,它是深度學習中最重要的單一超參數:把它大致設對,幾乎任何合理架構都能訓練;設得太離譜,你調別的任何東西都救不了。想像在霧中下山——跨太大會直接躍過山谷落到對面坡上;過於小心翼翼地踮腳,則天黑了還到不了谷底。

形式上,在更新 θ ← θ − η g 中,學習率 η(eta)在從參數 θ 減去梯度 g(或其處理後的版本,如 Adam 的正規化步長)之前乘上它。它的效果與損失曲面的曲率綁在一起。對一個梯度變化不快於常數 L(Lipschitz 平滑度)的平滑函數,梯度下降只有在 η < 2/L 時才穩定,而最快的穩定選擇接近 η = 1/L。尖銳、高曲率的方向只容許小步;平坦的方向則可用大得多的步——這正是自適應最佳化器與學習率排程試圖化解的張力。

學習率設錯的症狀有診斷價值。太高:損失在幾步內飆升、劇烈震盪或爆成 NaN,因為更新越過並被放大。太低:損失平滑但痛苦地緩慢下降,或卡在高原上,因為步伐太怯懦逃不出去。找到好值的實用方法是學習率範圍測試(Leslie Smith):從極小的學習率開始,在數百次迭代中以指數遞增同時觀察損失;損失仍穩定下降的最大學習率,是上限的有力候選。

另外兩個事實形塑了實務。第一,最佳學習率隨批次大小而縮放——廣為使用的線性縮放法則說,批次加倍時學習率也應大致加倍,因為較大批次給出較不吵的梯度,可以信任得更遠。第二,最佳學習率在訓練過程中並非固定,這也是為何它幾乎總是搭配排程(先暖身再衰減),而非保持不變。

CNN 上典型的學習率範圍測試:在 η=1e-5 時損失幾乎不動(太小),在 η=1e-2 附近下降最快,超過 η=1e-1 後爆炸。你會選一個略低於爆炸點的最大學習率,約 3e-2。

又稱
LRstep sizeη