神经网络基础-神经网络补充概念-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])
相关推荐
深度学习实战训练营1 小时前
基于CNN-RNN的影像报告生成
人工智能·深度学习
昨日之日20063 小时前
Moonshine - 新型开源ASR(语音识别)模型,体积小,速度快,比OpenAI Whisper快五倍 本地一键整合包下载
人工智能·whisper·语音识别
浮生如梦_3 小时前
Halcon基于laws纹理特征的SVM分类
图像处理·人工智能·算法·支持向量机·计算机视觉·分类·视觉检测
深度学习lover3 小时前
<项目代码>YOLOv8 苹果腐烂识别<目标检测>
人工智能·python·yolo·目标检测·计算机视觉·苹果腐烂识别
热爱跑步的恒川4 小时前
【论文复现】基于图卷积网络的轻量化推荐模型
网络·人工智能·开源·aigc·ai编程
阡之尘埃6 小时前
Python数据分析案例61——信贷风控评分卡模型(A卡)(scorecardpy 全面解析)
人工智能·python·机器学习·数据分析·智能风控·信贷风控
孙同学要努力8 小时前
全连接神经网络案例——手写数字识别
人工智能·深度学习·神经网络
Eric.Lee20218 小时前
yolo v5 开源项目
人工智能·yolo·目标检测·计算机视觉
其实吧39 小时前
基于Matlab的图像融合研究设计
人工智能·计算机视觉·matlab
丕羽9 小时前
【Pytorch】基本语法
人工智能·pytorch·python