跳至主要内容

Gradient Descent

What?​

梯度下降(Gradient Descent)是一種用於最佳化問題的演算法,主要目的是找到一個函數的最小值。簡單來說,它是一種「逐步調整」的方法,透過計算梯度(即偏導數),逐漸接近目標函數的最低點。在機器學習和深度學習中,它是訓練模型的重要工具,用來更新模型的參數,例如權重和偏置。

舉個例子,就像你在山坡上尋找最低點,你可以依照地勢的斜率逐步往下走,直到找到谷底。梯度下降就是這樣的一個「下坡尋最小值」的方法。


Who?​

梯度下降主要由以下族群使用或受到影響:

  1. 機器學習工程師:在訓練模型時需要透過梯度下降來優化參數。
  2. 資料科學家:分析問題並建立預測模型時會使用相關技術。
  3. 深度學習研究者:開發神經網路架構,需要用梯度下降讓網路有效收斂。
  4. 產品工程師:使用現成機器學習框架(如 TensorFlow 或 PyTorch)時,也間接依賴梯度下降進行運算。

例如,當一位工程師要建立圖像識別系統,他可能需要用梯度下降來有效調整 Convolutional Neural Network 的各層參數,以提高辨識效果。


When?​

你會在以下場景中遇到梯度下降:

  1. 模型訓練階段:無論是線性迴歸、邏輯迴歸還是深層神經網路,都要用它來更新各項參數。
  2. 損失函數優化:當你試圖降低 Loss Function 的值以提高模型性能時,就會使用梯度下降。
  3. 非凸最佳化問題:雖然非凸問題可能有多個局部最小值,但梯度下降仍然是常見策略之一。

例如,當你正在訓練一個自然語言處理模型以生成文字摘要,你會用到這個技術來優化語言生成品質。


Where?​

在架構中,梯度下降通常出現在以下部分:

  1. 損失函數計算後:透過計算導數(Gradient),得知如何調整參數以減少誤差。在深度學習中尤為重要。
  2. 反向傳播(Back Propagation)流程的一部分:特別是在神經網路中,用於更新每層權重。
  3. 優化器(Optimizer)內部實作:大多數框架內建的 Optimizer,例如 Adam、SGD(Stochastic Gradient Descent),都基於這個原則。

例如,在 PyTorch 中,你可以呼叫 torch.optim.SGD 直接執行基於梯度的參數更新,而不需要手動計算公式。


Why?​

梯度下降解決了如何有效率地找到目標函數最低點這個問題。具體而言,它有以下功能:

  1. 高效更新參數:比起暴力搜尋或隨機嘗試,透過導數能更精準地知道該往哪裡移動。
  2. 適用於大規模資料集:即便資料量龐大,也能透過 mini-batch 或 stochastic 方法提升效率。
  3. 通用性強:適合各類型損失函數和應用場景,包括迴歸、分類和生成任務等。

例如,如果你的目標是讓預測房價的線性迴歸模型更準確,你可以利用它快速收斂到最佳解,而不需要手動嘗試不同組合的權重值。


How?​

🛠️ 建立階段​

以下為一般使用 梯度下降 的步驟流程:

  1. 初始化模型參數,例如隨機初始化權重和偏置。
  2. 定義損失函數(Loss Function),如 MSE(Mean Squared Error)。
  3. 計算損失對每個參數的偏導,即獲得 梯度 (Gradient)。
  4. 更新參數:
    • 使用公式 θ = θ - α * ∇θ,其中 θ 是目前參數、α 是 Learning Rate、∇θ 是 梯度 值。
  5. 重複上述步驟直到損失收斂或達到指定停止條件。

🔍 查詢階段​

查詢階段通常是在評估結果或微調 Learning Rate 時進行:

  1. 設定不同 Learning Rate 值並重新執行訓練,看哪個效果最佳。
  2. 使用可視化工具,如 TensorBoard 或 Matplotlib,以檢查 Loss 隨著 Epochs 的變化趨勢是否穩定。
  3. 如遇收斂速度慢或陷入局部最小值,可嘗試改用其他變體演算法,如 Adam 或 RMSProp。

補充說明​

📌 範例比較​

以下為不同變體與標準 梯度下降 的比較:

方法特點缺點
SGD適合大型資料集收斂速度慢
Mini-batch GD平衡效率與精確性需選擇適合 Batch Size
Adam自動調整 Learning Rate計算成本略高

🧠 延伸/常見誤解​

  • 誤解:「Learning Rate 越高越好」
    澄清:太高可能導致錯過最小值;太低則造成收斂速度慢。需視情境調整,一般可從 0.01 開始測試。

  • 誤解:「所有問題都適合 梯度下降」
    澄清:對於一些非連續函式或極端非凸問題,它可能無法有效運作,此時需考慮其他最佳化方法如 Genetic Algorithm 或 Simulated Annealing 等技術。