概念
梯度下降法(Gradient Descent)是一種優(yōu)化算法,用于在機器學習和深度學習中最小化(或最大化)目標函數(shù)。它通過迭代地調(diào)整模型參數(shù),沿著梯度方向更新參數(shù),以逐步接近目標函數(shù)的最優(yōu)解。梯度下降法在訓練神經(jīng)網(wǎng)絡等機器學習模型時非常常用,可以幫助模型學習數(shù)據(jù)中的模式和特征。
基本原理和步驟
目標函數(shù)定義:首先,需要定義一個目標函數(shù)(損失函數(shù)),它用來衡量模型預測與實際值之間的差異。通常目標是最小化損失函數(shù)。
參數(shù)初始化:初始化模型的參數(shù),這些參數(shù)將在優(yōu)化過程中被逐步調(diào)整。
計算梯度:計算損失函數(shù)對于模型參數(shù)的梯度(導數(shù))。梯度表示了目標函數(shù)在當前參數(shù)值處的變化率,它指示了在哪個方向上參數(shù)應該更新以減小損失。
參數(shù)更新:通過梯度下降公式,沿著梯度的反方向更新模型的參數(shù)。更新步長由學習率(learning rate)控制,學習率越大,參數(shù)更新越大;學習率越小,參數(shù)更新越小。
重復迭代:重復執(zhí)行步驟 3 和 4,直到達到預定的迭代次數(shù)(epochs)或收斂條件。通常,隨著迭代次數(shù)的增加,模型的損失逐漸減小,參數(shù)逐漸趨于收斂到最優(yōu)值。文章來源:http://www.zghlxwxcb.cn/news/detail-666016.html
梯度下降法可以分為多種變體,包括批量梯度下降(Batch Gradient Descent)、隨機梯度下降(Stochastic Gradient Descent)和小批量梯度下降(Mini-Batch Gradient Descent)。隨機梯度下降和小批量梯度下降在實際應用中更為常見,因為它們可以更快地收斂并適應大規(guī)模數(shù)據(jù)。文章來源地址http://www.zghlxwxcb.cn/news/detail-666016.html
代碼實現(xiàn)(SGD)
import numpy as np
import matplotlib.pyplot as plt
# 生成一些隨機數(shù)據(jù)
np.random.seed(0)
X = 2 * np.random.rand(100, 1)
y = 4 + 3 * X + np.random.randn(100, 1)
# 添加偏置項
X_b = np.c_[np.ones((100, 1)), X]
# 初始化參數(shù)
theta = np.random.randn(2, 1)
# 學習率
learning_rate = 0.01
# 迭代次數(shù)
n_iterations = 1000
# 隨機梯度下降
for iteration in range(n_iterations):
random_index = np.random.randint(100)
xi = X_b[random_index:random_index+1]
yi = y[random_index:random_index+1]
gradients = 2 * xi.T.dot(xi.dot(theta) - yi)
theta = theta - learning_rate * gradients
# 繪制數(shù)據(jù)和擬合直線
plt.scatter(X, y)
plt.plot(X, X_b.dot(theta), color='red')
plt.xlabel('X')
plt.ylabel('y')
plt.title('Linear Regression with Stochastic Gradient Descent')
plt.show()
print("Intercept (theta0):", theta[0][0])
print("Slope (theta1):", theta[1][0])
到了這里,關于神經(jīng)網(wǎng)絡基礎-神經(jīng)網(wǎng)絡補充概念-43-梯度下降法的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!