學習率排程
固定學習率迫使單一折衷服務整段訓練,但訓練有需求不同的階段。早期權重隨機、損失地形險惡,你想謹慎移動;中期可以自信邁步;接近尾聲時你想走越來越小的步,精確安頓進極小值,而非在它周圍彈跳。學習率排程就是讓學習率隨時間變化以配合這些階段——通常先暖身、再衰減——並能可靠地同時提升最終準確率與訓練穩定性。
你最常遇到的衰減形狀有:階梯衰減(在固定里程碑把學習率除以一個倍數,例如 ÷10——在 ImageNet 上訓練 ResNet 的經典配方)、指數衰減(每步乘上一個小於 1 的常數),以及餘弦退火(cosine annealing,在整段訓練中平滑地沿半條餘弦曲線從初始學習率降到近零,如今是 ViT、ConvNeXt 與多數現代視覺訓練的預設)。帶暖重啟的餘弦退火(SGDR)會週期性地把學習率跳回高處以逃離當前盆地、探索其它盆地,也可在每個低點取快照組成集成模型。
暖身(warmup)是現代配方的前半段:把學習率從近零開始,在最初數百到數千步內線性(或以其它方式)拉升到目標,之後才開始任何衰減。原因對 Adam 等自適應最佳化器最為明顯——訓練早期第二動量估計 v̂ 是用極少梯度算出的、並不可靠,因此一個全尺寸的步可能嚴重失準而使模型不穩。暖身也馴服了大批次與剛初始化深度網路高變異梯度所造成的過大有效步長。先線性暖身再衰減的 transformer 配方,如今在視覺 transformer 與偵測模型中無處不在。
排程與其它一切互相作用。暖身後的峰值學習率正是線性縮放法則所作用的對象;總步數決定餘弦衰減下降的快慢;而過於激進的衰減會在收斂前凍結學習,太溫和的衰減又讓模型一直抖動。由於這種耦合,排程最好與批次大小、最佳化器和總訓練預算一起選擇,而非孤立決定。
一個微妙陷阱:餘弦退火需要事先知道總步數才能塑造曲線。若你把這個數字設錯(例如提早停止,或更改資料集大小卻沒更新步數),學習率實際上不會降到預定的底部,最終準確率可能悄悄受損。