進階最佳化
Lookahead 最佳化器(Lookahead optimizer)
標準最佳化器可能在峽谷之間來回震盪,或越過一塊好區域,而要把它們調離這種狀態很瑣碎。Lookahead 是一個可以包住任何基準最佳化器的外殼,靠加上第二組較慢的權重來換取穩定。其想法是:讓快權重往前偵察——跑幾步一般的更新——然後讓慢權重朝偵察兵最後到達之處謹慎地走一小步,把抖動磨平。
機制上,Lookahead 保有一組慢權重 phi。它從 phi 出發,跑內層的基準最佳化器(例如 Adam 或 SGD)k 步,產生快權重 theta。接著更新 phi <- phi + alpha (theta - phi),並在下一輪內層迴圈之前把快權重重設回新的 phi。慢更新是一種內插,像是沿著快軌跡(而非沿時間)取的指數移動平均,alpha 控制它跟得多大膽。
它的吸引力在於:Lookahead 能降低迭代值的變異數,並在許多任務上以極少的調參——只有 k 與 alpha 兩個超參數——改善穩定度。它與基準最佳化器正交,所以你可以把它包在你最愛的那個之外,而額外成本很小:只多一份權重複本,以及每 k 步一次便宜的內插。
\phi \leftarrow \phi + \alpha\,(\theta_k - \phi),\qquad \theta_0 \leftarrow \phi
每 k 步內層迭代,慢權重朝快權重內插一次。
Lookahead 本身不是最佳化器,而是一個元層級的外殼;當內層最佳化器較吵雜、或其學習率偏激進時,它的穩定效果最大。
又称
另见