梯度下降算法(Gradient Descent)的數學公式可以通過以下步驟嚴格表達:
1. 基本梯度下降(Batch Gradient Descent)
目標:最小化損失函數L(θ)\mathcal{L}(\theta)L(θ),其中 θ\thetaθ是模型參數。
參數更新規則: θt+1=θt?η??θL(θt)\theta_{t+1} = \theta_t - \eta \cdot \nabla_\theta \mathcal{L}(\theta_t)θt+1?=θt??η??θ?L(θt?)
- θt\theta_tθt?:第 $t $次迭代的參數值
- η\etaη:學習率(Learning Rate)
- ?θL(θt)\nabla_\theta \mathcal{L}(\theta_t)?θ?L(θt?):損失函數對參數 θ\thetaθ的梯度(所有訓練樣本的平均梯度)。
2. 隨機梯度下降(Stochastic Gradient Descent, SGD)
每次迭代隨機選取一個樣本計算梯度:
θt+1=θt?η??θL(θt;xi,yi)\theta_{t+1} = \theta_t - \eta \cdot \nabla_\theta \mathcal{L}(\theta_t; x_i, y_i)θt+1?=θt??η??θ?L(θt?;xi?,yi?)
- ?θL(θt;xi,yi)\nabla_\theta \mathcal{L}(\theta_t; x_i, y_i)?θ?L(θt?;xi?,yi?):僅基于單個樣本 (xi,yi)(x_i, y_i)(xi?,yi?)的梯度。
3. 小批量梯度下降(Mini-Batch Gradient Descent)
每次迭代使用一個小批量(Batch)數據計算梯度:
θt+1=θt?η?1B∑i=1B?θL(θt;xi,yi)\theta_{t+1} = \theta_t - \eta \cdot \frac{1}{B} \sum_{i=1}^B \nabla_\theta \mathcal{L}(\theta_t; x_i, y_i)θt+1?=θt??η?B1?∑i=1B??θ?L(θt?;xi?,yi?)
- BBB:批量大小(Batch Size)
- 1B∑i=1B?θL\frac{1}{B} \sum_{i=1}^B \nabla_\theta \mathcal{L}B1?∑i=1B??θ?L:批量內樣本梯度的平均值。
4. 帶動量的梯度下降(Momentum)
引入動量項 vtv_tvt?加速收斂并減少震蕩:
vt+1=βvt+(1?β)?θL(θt)v_{t+1} = \beta v_t + (1-\beta) \nabla_\theta \mathcal{L}(\theta_t)vt+1?=βvt?+(1?β)?θ?L(θt?)
θt+1=θt?η?vt+1\theta_{t+1} = \theta_t - \eta \cdot v_{t+1}θt+1?=θt??η?vt+1?
- β\betaβ:動量系數(通常設為 0.9),控制歷史梯度的影響。
5. Adam 優化器
結合動量(一階矩)和自適應學習率(二階矩),并引入偏差修正:
mt+1=β1mt+(1?β1)?θL(θt)(一階矩估計)m_{t+1} = \beta_1 m_t + (1-\beta_1) \nabla_\theta \mathcal{L}(\theta_t) \quad \text{(一階矩估計)}mt+1?=β1?mt?+(1?β1?)?θ?L(θt?)(一階矩估計)
vt+1=β2vt+(1?β2)(?θL(θt))2(二階矩估計)v_{t+1} = \beta_2 v_t + (1-\beta_2) \left( \nabla_\theta \mathcal{L}(\theta_t) \right)^2 \quad \text{(二階矩估計)}vt+1?=β2?vt?+(1?β2?)(?θ?L(θt?))2(二階矩估計)
m^t+1=mt+11?β1t+1(一階矩偏差修正)\hat{m}{t+1} = \frac{m{t+1}}{1 - \beta_1^{t+1}} \quad \text{(一階矩偏差修正)}m^t+1=1?β1t+1?mt+1?(一階矩偏差修正)
v^t+1=vt+11?β2t+1(二階矩偏差修正)\hat{v}{t+1} = \frac{v{t+1}}{1 - \beta_2^{t+1}} \quad \text{(二階矩偏差修正)}v^t+1=1?β2t+1?vt+1?(二階矩偏差修正)
θt+1=θt?η?m^t+1v^t+1+?\theta_{t+1} = \theta_t - \eta \cdot \frac{\hat{m}{t+1}}{\sqrt{\hat{v}{t+1}} + \epsilon}θt+1?=θt??η?v^t+1?+?m^t+1?
- β1,β2\beta_1, \beta_2β1?,β2?:衰減率(通常設為 0.9 和 0.999)
- ?\epsilon?:數值穩定性常數(通常設為$10^{-8} $)。
6. 梯度下降的數學意義
梯度下降的更新方向由 負梯度方向 ??θL-\nabla_\theta \mathcal{L}??θ?L決定,其本質是沿著損失函數曲面的最速下降方向移動參數 θ\thetaθ。學習率 η\etaη控制步長,過大可能導致震蕩,過小則收斂緩慢。
公式總結表
算法 | 公式 |
---|---|
批量梯度下降 | θt+1=θt?η??θL\theta_{t+1} = \theta_t - \eta \cdot \nabla_\theta \mathcal{L}θt+1?=θt??η??θ?L |
隨機梯度下降 | θt+1=θt?η??θL(xi,yi)\theta_{t+1} = \theta_t - \eta \cdot \nabla_\theta \mathcal{L}(x_i, y_i)θt+1?=θt??η??θ?L(xi?,yi?) |
小批量梯度下降 | θt+1=θt?η?1B∑i=1B?θL(xi,yi)\theta_{t+1} = \theta_t - \eta \cdot \frac{1}{B} \sum_{i=1}^B \nabla_\theta \mathcal{L}(x_i, y_i)θt+1?=θt??η?B1?∑i=1B??θ?L(xi?,yi?) |
Momentum | vt+1=βvt+(1?β)?θL),(θt+1=θt?ηvt+1v_{t+1} = \beta v_t + (1-\beta)\nabla_\theta \mathcal{L} ),( \theta_{t+1} = \theta_t - \eta v_{t+1}vt+1?=βvt?+(1?β)?θ?L),(θt+1?=θt??ηvt+1? |
Adam | θt+1=θt?η?m^t+1v^t+1+?\theta_{t+1} = \theta_t - \eta \cdot \frac{\hat{m}{t+1}}{\sqrt{\hat{v}{t+1}} + \epsilon}θt+1?=θt??η?v^t+1?+?m^t+1? |
關鍵點
- 梯度方向:負梯度方向是函數值下降最快的方向(由泰勒展開的一階近似可得)。
- 學習率選擇:學習率 $\eta $需通過實驗調參(或使用自適應方法如 Adam)。
- 收斂性:在凸函數中,梯度下降收斂到全局最優;在非凸函數中可能收斂到局部極小或鞍點。
- 復雜度:批量梯度下降計算成本高,小批量/隨機梯度下降更適合大規模數據。
通過上述公式,梯度下降算法被嚴格地數學化,成為深度學習模型優化的基礎工具。