神经网络基础-神经网络补充概念-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])
相关推荐
ACP广源盛139246256733 分钟前
GSV9001E 国产 4K 视频处理器,AI 多模态可视化大屏多路画面合成方案解析
人工智能·硬件架构·国产芯片·ai服务器
长谷深风1117 分钟前
评测AI Agent:三种裁判各司其职
java·大数据·开发语言·人工智能·ai agent
火山引擎开发者社区13 分钟前
火山方舟Agent Plan上线最新生图生视频模型
人工智能
明志数科33 分钟前
具身智能产业基础设施换挡:从算力本体到数据层的技术逻辑
人工智能·机器学习
gongfeng300035 分钟前
福州企业级AI自动化获客解决方案品牌梳理与适用场景分析
运维·人工智能·自动化·g-claw ai员工
陈碧甫37 分钟前
因果Agent的Memory在对话中的表现
人工智能
高洁0142 分钟前
大模型的幻觉怎么治
人工智能·深度学习·django·transformer·tornado
m0_734571761 小时前
深入理解人工智能 主流的训练算法
人工智能
kyriewen1 小时前
我删掉了 29 个 AI Skill 里的 23 个:留下的 6 个都有同一个特点
人工智能·程序员·ai编程
weixin_446260851 小时前
编译式智能体:前沿通用编码智能体从零交互构建游戏玩家——从Flappy Bird到星际争霸2与文明
人工智能