梯度下降(Gradient Descent) 是機器學習中用來「優化模型參數」的核心演算法,目標是讓模型的損失函數(Loss Function) 最小化。
梯度下降的運作原理
在機器學習中,模型的誤差越小越好,因此我們會定義一個損失函數(Loss Function),用來衡量預測值與實際值之間的差距。
梯度(Gradient)是損失函數對模型參數的偏導數向量,它描述了函數在當前位置「增加最快的方向」。而梯度下降的目標,就是往這個方向的反方向移動,讓損失值逐步減少。
在實作上,我們會先隨機初始化模型參數,接著反覆執行以下步驟: 1. 計算當前參數下的損失函數 2. 求出損失函數對各參數的梯度 3. 根據學習率(Learning Rate)更新參數
透過不斷重複這個過程,模型參數會逐漸收斂到一個使損失函數最小的區域(通常是局部最小值),當梯度接近 0 或達到設定的停止條件時,訓練就會結束。
損失函數(Loss Function)是什麼?
損失函數(Loss Function)是在機器學習中用來衡量模型預測結果與實際答案之間差距的一個數學函數。它的核心作用是將「模型預測得好不好」轉換成一個可以量化的數值,這個數值通常代表誤差的大小;數值越小,表示模型預測越準確,數值越大,則代表模型表現越差。
在模型訓練過程中,損失函數扮演著「優化目標」的角色。演算法會不斷調整模型參數,目標就是讓損失函數的值持續下降。也就是說,整個學習過程其實就是在尋找一組參數,使得損失函數達到最小值,從而讓模型的預測結果盡可能接近真實數據。
損失函數可以被視為機器學習模型的「評分機制」,它不僅告訴模型目前的表現如何,也提供了優化方向,讓模型知道該如何調整自己以達到更好的預測結果。
學習率(Learning Rate)是什麼?
學習率(Learning Rate)是梯度下降(Gradient Descent)中的一個關鍵超參數(Hyperparameters),用來控制模型在每次更新參數時「移動的步長」。
在訓練過程中,我們會根據損失函數的梯度來調整模型參數,而學習率則決定了沿著梯度反方向前進的距離大小。換句話說,即使我們知道應該往哪個方向讓誤差變小,學習率會影響我們每一步到底走多遠。
如果學習率設定得太大,模型在更新參數時可能會一次跨太遠,導致錯過最佳解,甚至在最小值附近來回震盪,使得訓練無法收斂。如果學習率太小,雖然可以確保每一步都朝正確方向前進,但收斂速度會非常緩慢,訓練時間大幅增加。因此,選擇合適的學習率是模型訓練成效的關鍵之一。
在實務應用中,學習率不一定是固定的,常見做法包括隨著訓練過程逐漸降低學習率(learning rate decay),或使用如 Adam、RMSprop 等自適應優化方法,自動根據梯度情況調整步長。透過這些策略,可以在訓練初期加快收斂速度,同時在接近最佳解時保持穩定性。
梯度下降的三大變體
- 批次梯度下降(Batch Gradient Descent)
- 隨機梯度下降(Stochastic Gradient Descent, SGD)
- 小批次梯度下降(Mini-batch Gradient Descent)
批次梯度下降(Batch Gradient Descent)
批次梯度下降是最「標準」的做法,每一次參數更新都會使用整個訓練資料集來計算損失函數的梯度,特色是計算精確,下降方向穩定,但當資料量很大時,每次更新都需要計算整個資料集,導致計算成本極高且速度緩慢。
隨機梯度下降(Stochastic Gradient Descent, SGD)
隨機梯度下降是每次只使用一筆資料來計算梯度並更新參數,好處是更新速度非常快,且可以在大規模資料下有效運作,但由於每次只看一筆資料,梯度會有很大的隨機性,導致損失函數的下降過程會出現明顯震盪,不會像 Batch 那樣平滑。
小批次梯度下降(Mini-batch Gradient Descent)
小批次梯度下降是實務中最常使用的方法,它介於前兩者之間,每次使用一小批資料來計算梯度。這樣既能降低計算成本,又能減少隨機波動,使訓練過程在效率與穩定性之間取得平衡。
結論
梯度下降是機器學習中最基礎也最核心的優化手段。掌握它的運作邏輯,是進入深度學習領域的第一步。
- 梯度下降的核心任務,就是透過量化「預測與真實的差距」(損失函數),並沿著梯度的反方向不斷修正模型參數,最終找到誤差最小的最佳解。
- 學習率決定了優化的速度與品質。太小會導致「走不動」,太大則會「跨過頭」導致震盪。實務上建議從適中的數值開始,或使用 Adam 等自適應方法。
- 在效率與穩定性之間,小批次法取得了完美的平衡。它不像批次法(Batch)那樣耗時,也不像隨機法(SGD)那樣震盪,是目前訓練神經網路的首選方案。
梯度下降就像在大霧中下山,我們雖然看不清全貌,但只要腳踏實地往「坡度最陡的反方向」邁出適當的步伐,最終就能抵達山谷。