神经网络基础-神经网络补充概念-43-梯度下降法

概念

梯度下降法(Gradient Descent)是一种优化算法,用于在机器学习和深度学习中最小化(或最大化)目标函数。它通过迭代地调整模型参数,沿着梯度方向更新参数,以逐步接近目标函数的最优解。梯度下降法在训练神经网络等机器学习模型时非常常用,可以帮助模型学习数据中的模式和特征。

基本原理和步骤

目标函数定义:首先,需要定义一个目标函数(损失函数),它用来衡量模型预测与实际值之间的差异。通常目标是最小化损失函数。

参数初始化:初始化模型的参数,这些参数将在优化过程中被逐步调整。

计算梯度:计算损失函数对于模型参数的梯度(导数)。梯度表示了目标函数在当前参数值处的变化率,它指示了在哪个方向上参数应该更新以减小损失。

参数更新:通过梯度下降公式,沿着梯度的反方向更新模型的参数。更新步长由学习率(learning rate)控制,学习率越大,参数更新越大;学习率越小,参数更新越小。

重复迭代:重复执行步骤 3 和 4,直到达到预定的迭代次数(epochs)或收敛条件。通常,随着迭代次数的增加,模型的损失逐渐减小,参数逐渐趋于收敛到最优值。

梯度下降法可以分为多种变体,包括批量梯度下降(Batch Gradient Descent)、随机梯度下降(Stochastic Gradient Descent)和小批量梯度下降(Mini-Batch Gradient Descent)。随机梯度下降和小批量梯度下降在实际应用中更为常见,因为它们可以更快地收敛并适应大规模数据。

代码实现(SGD)

python 复制代码
import numpy as np
import matplotlib.pyplot as plt

# 生成一些随机数据
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]

# 初始化参数
theta = np.random.randn(2, 1)

# 学习率
learning_rate = 0.01

# 迭代次数
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

# 绘制数据和拟合直线
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])
相关推荐
ZZZMMM.zip2 分钟前
基于鸿蒙HarmonyOS NEXT开发AI英语口语应用:智能口语练习新体验与鸿蒙Flutter框架跨端实
人工智能·flutter·华为·harmonyos·鸿蒙·鸿蒙系统
程序喵大人3 分钟前
【AI专栏】图解Transformer - 第05章:LLM 推理工程
人工智能·深度学习·llm·transformer
甲维斯6 分钟前
差距太大了!GPT5.6Sol 正面战 Fable5,啥也不是!
人工智能·ai编程
Eloudy28 分钟前
LLM 公司提供的 token api 服务输出内容的特点
人工智能
DeepAgent37 分钟前
AI Agent 工程实践(03):Memory 设计——Agent 到底应该记住什么?
人工智能
懂懂笔记1 小时前
老龄化加速下的中国答案:东软用AI思维重构“人生下半场”
人工智能·智慧养老
GitCode官方1 小时前
基于《人工智能 智能体互联》国标的 AIP 开源项目在 AtomGit 正式开源
人工智能·开源·atomgit
万象AI实验室1 小时前
GPT-5.6 正式上线,我们挖到了 3 个隐藏玩法!
人工智能
IpdataCloud1 小时前
AI生成的Avalon恶意框架怎么防?用IP离线库识别模块化C2通信
运维·人工智能·网络协议·tcp/ip·ip
FreeBuf_1 小时前
公开GitHub Issue可诱骗AI泄露私有数据,绕过防护仅需一词
人工智能·github·issue