餘弦退火(Cosine Annealing)是什麼?

學習率沿著餘弦函數曲線逐漸衰減,從初始值平滑降低到最小值,使模型在訓練後期細微調整參數。|本頁含完整原理、應用場景、iPAS 考試重點與 3 個常見問答。

英文
Cosine Annealing
主題標籤
模型訓練、最佳化、神經網路
考點定位
非 iPAS 核心術語
最後更新
2026/06/22
餘弦退火(Cosine Annealing)是什麼? 模型訓練最佳化
術語快查

搜尋意圖: 如果你在找「餘弦退火 是什麼」或「餘弦退火 和相近概念差在哪」,先看這頁的短定義、完整說明與延伸比較。

TL;DR: 學習率沿著餘弦函數曲線逐漸衰減,從初始值平滑降低到最小值,使模型在訓練後期細微調整參數。

實用情境: 適合用在閱讀 AI 文章、產品文件或和同事討論時,先用一頁快速對齊概念。

下一步: 先讀完定義,再往下看延伸比較與對應工具,把概念轉成實際應用。

學習率沿著餘弦函數曲線逐漸衰減,從初始值平滑降低到最小值,使模型在訓練後期細微調整參數。

核心概念

Cosine Annealing 的靈感來自模擬退火(simulated annealing)演算法。餘弦函數的特性很適合學習率衰減:初期(0 度)從最大值開始,中期(90 度)衰減,末期(180 度)趨近最小值,整個過程光滑連續。

標準的 cosine annealing 公式: lr(t) = lr_min + 0.5 * (lr_max - lr_min) * (1 + cos(π * t / T))

其中 t 是當前訓練步驟,T 是總訓練步數。當 t = 0 時,lr = lr_max;當 t = T 時,lr = lr_min。

運作原理

Cosine Annealing 的核心機制如下:

  1. 設定初始學習率 lr_max 和最小學習率 lr_min(通常 lr_min = 0 或很小的值)
  2. 設定訓練總長度 T(總訓練步數或 epoch 數)
  3. 在每個步驟 t,計算當前學習率:lr(t) = lr_min + 0.5 * (lr_max - lr_min) * (1 + cos(π * t / T))
  4. 用 lr(t) 進行參數更新

餘弦函數的衰減特性:在 [0, π] 區間上,cos 從 1 逐漸降至 -1。映射到 [0, T],cos(π * t / T) 從 1 衰減到 -1,所以 (1 + cos(π * t / T)) 從 2 衰減到 0。

實際例子:若 lr_max = 0.1,lr_min = 0,T = 100000 步,則:

  • 步驟 0:lr = 0.1
  • 步驟 25000:lr ≈ 0.038(cos 為負值)
  • 步驟 50000:lr ≈ 0(餘弦函數最低點)
  • 步驟 75000:lr ≈ 0.038
  • 步驟 100000:lr ≈ 0(接近最小值)

實際應用

Cosine Annealing 在深度學習社區中廣泛流行,特別是通過 SGDR(Stochastic Gradient Descent with Warm Restarts)論文推廣後。許多獲獎的深度學習模型都採用 cosine annealing 作為默認調度。

在影像分類(ImageNet、CIFAR)中,cosine annealing 能產生比階梯式衰減更好的收斂曲線。ResNet、EfficientNet 等現代架構的官方實現都使用 cosine annealing。

Transformer 模型訓練中,cosine annealing 成為標準。BERT、GPT、Vision Transformer 等模型都採用 cosine 衰減,結合預熱實現「上升-衰減」的完整學習率時間表。

Cosine Annealing with Warm Restarts(SGDR)提出了週期性重啟的概念:訓練分為多個週期,每個週期內使用 cosine annealing,週期結束後重新啟動學習率。這能幫助逃離局部最小值。

在遷移學習中,cosine annealing 也很有用。調整預訓練模型時,平滑的學習率衰減能防止大幅破壞預訓練權重。

常見誤區

誤區一:認為 cosine annealing 會自動解決所有收斂問題。實際上,cosine annealing 是良好的衰減計劃,但不能替代其他改進(如架構設計、資料品質、正則化)。

誤區二:誤認為 cosine annealing 需要提前知道確切的訓練步數。實際上只需要一個合理估計,因為余弦衰減相對魯棒。若步數估計有誤,最多影響末期學習率大小,通常不會導致完全失敗。

誤區三:應用 cosine annealing 時未設定合理的 lr_min。若 lr_min = 0,訓練末期梯度更新會非常小。合理的做法是設定 lr_min 為 lr_max 的 1/100 或 1/1000。

與相關技術的比較

  • Cosine Annealing vs Step Decay:Step Decay 在固定步驟後陡峭下降,產生階梯型曲線。Cosine 提供平滑衰減,通常能達到更好的最終性能。Cosine 在訓練末期保持某種學習能力,而 Step Decay 可能過早停止。

  • Cosine Annealing vs Exponential Decay:指數衰減初期下降快,末期變慢。Cosine 衰減在中期最快,初末期較慢。兩者都是連續衰減,但曲線形狀不同。

  • Cosine Annealing vs Linear Warmup:預熱是初期的上升過程,annealing 是後期的衰減過程。通常結合使用:先預熱到目標值,再進行 cosine annealing。

  • Cosine Annealing vs SGDR:SGDR 在 cosine annealing 基礎上加入週期性重啟。在每個週期內使用 cosine,然後重置。SGDR 適合多週期訓練,而單純 cosine 適合單一長訓練。

常見問題

如何確定 cosine annealing 的最小學習率(lr_min)?

lr_min 的選擇影響訓練末期的微調程度。通常 lr_min 設為 lr_max 的 1/100 到 1/10000。常見做法是 lr_min = 0 或 lr_min = lr_max * 0.0001。如果設置過大,末期難以精細調整;設置過小,末期梯度更新幾乎停止。實踐中可以嘗試不同值,觀察驗證曲線的最終性能。

如何將 cosine annealing 應用於多階段訓練?

多階段訓練(如微調不同層)可以為各階段分別設定 cosine annealing。每個階段有自己的 lr_max、lr_min 和衰減周期。例如,第一階段微調尾層(100 個 epoch),第二階段微調全網路(50 個 epoch),每階段各用獨立的 cosine 衰減。這需要在代碼中設定階段切換點和相應的學習率參數。

為什麼 cosine annealing 比恆定學習率或簡單衰減更好?

恆定學習率會導致訓練末期在最小值周圍震蕩,難以精確收斂。簡單的階梯衰減產生不連續跳躍,可能導致損失函數波動。Cosine annealing 提供平滑的連續衰減,讓模型逐漸調整到更精細的搜索,在末期能達到更好的局部最小值。實驗數據表明,cosine annealing 通常將最終準確度提高 0.5-2%。