概念
梯度下降法是一種常用的優化算法,用于在機器學習和深度學習中更新模型參數以最小化損失函數。它通過迭代地調整參數,沿著損失函數的負梯度方向移動,從而逐步逼近損失函數的最小值。
基本思想
梯度下降法的基本思想是:在每次迭代中,計算損失函數對于模型參數的梯度(導數),然后將參數朝著梯度的負方向移動一小步(稱為學習率),以減少損失函數的值。這個過程將一直持續,直到達到收斂條件(如達到一定迭代次數或損失函數的變化不再顯著)。
偽代碼
1. 初始化模型參數(權重和偏置)
2. 設置學習率(步長)
3. 進入迭代循環:4. 計算損失函數關于參數的梯度5. 更新參數:參數 = 參數 - 學習率 * 梯度6. 檢查收斂條件(例如,損失函數的變化小于某個閾值或達到最大迭代次數)
7. 返回最終的模型參數
代碼實現
import numpy as np# 準備示例數據
X = ... # 特征矩陣
y = ... # 標簽向量# 初始化模型參數
theta = np.zeros(X.shape[1])# 設置學習率和迭代次數
learning_rate = 0.01
num_iterations = 1000# 梯度下降迭代
for _ in range(num_iterations):# 計算梯度gradient = np.dot(X.T, (y - sigmoid(np.dot(X, theta))))# 更新參數theta += learning_rate * gradient# 定義sigmoid函數
def sigmoid(z):return 1 / (1 + np.exp(-z))# 訓練完成后,theta 包含了最優的模型參數