優化與訓練
學習率調度與熱身(learning-rate schedule and warmup)
/ LUR-ning rayt SKE-jool and WORM-up /
學習率調度,是一份在整個訓練過程中改變步長的計劃,而不是把步長釘死不動。這個直覺,正像你找東西時會做的:離得還遠、方向還沒摸清時大步流星,越靠近就越走小步、越謹慎,好讓自己精確地停下,而不是一腳踏過目標。幾乎每一個訓練得當的現代模型,用的都是某種調度,而非恆定的學習率。
最常見的做法是衰減:開頭用一個相對較大的學習率,好讓早期進展飛快,再隨訓練推進把它縮小——可以分階段降、平滑地降,或順著一條餘弦曲線一路降向零。熱身(warmup)則是用在最開頭的相反招數:先從一個極小的學習率起步,在頭幾百或幾千步裡把它逐漸升上去。訓練初期權重是隨機的,梯度可能很狂野,一上來就邁太大一步會把模型掀下懸崖;熱身讓它平緩地進入狀態。大型模型、尤其是 Transformer,往往需要熱身才能穩定訓練。
合起來,典型配方就是「先熱身,再衰減」:把學習率升上去,保持或衝到峰值,再緩緩收下來。這並非迷信——早期階段趁大步還管用時廣泛探索損失地形,後期階段則在一個不錯的盆地裡精雕細琢,讓小步避免在極小值附近來回彈跳。調度本身也變成一組超參數(峰值學習率、熱身長度、衰減形狀),要像別的超參數一樣去調。
一個常見的 Transformer 配方:在頭4000步裡,把學習率從接近零線性地升到0.0005(熱身);之後,讓它在餘下的訓練裡平滑地衰減回零。省掉熱身,同一個模型往往在頭幾百步就發散了。
先柔和升上去,再緩緩收下來——這是現代標準的形狀。
熱身與 Adam 之類的自適應優化器都能穩住早期訓練,但二者並不能互相替代。許多大型模型兩者都用——既自適應地走步,又加一段熱身斜坡——因為最初那幾百次更新是最脆弱的。
又稱
另見