批量梯度下降(BGD)、随机梯度下降(SGD)以及小批量梯度下降(MBGD)的理解

### 梯度下降法基本原理 梯度下降法是一种优化算法,用于最小化目标函数(通常是损失函数)。其核心思想是通过计算目标函数的梯度(即导数),沿着梯度的负方向更新参数,逐步逼近最优解[^3]。公式表示为: ```python θ = θ - α * ∇J(θ) ``` 其中: - \( θ \) 是模型的参数; - \( α \) 是学习率,控制每次更新的步长; - \( ∇J(θ) \) 是目标函数 \( J(θ) \) 的梯度。 这种方法广泛应用于机器学习和深度学习中,尤其是在线性回归、逻辑回归等算法中[^1]。 --- ### 批量梯度下降 (Batch Gradient Descent, BGD) 批量梯度下降使用整个训练集来计算损失函数的梯度,并更新模型参数。它的特点如下: - 计算过程稳定,能够收敛到全局最优解(对于凸函数)[^2]。 - 由于需要遍历整个数据集,计算成本较高,尤其是在数据量较大时[^4]。 代码实现示例: ```python import numpy as np def batch_gradient_descent(X, y, theta, learning_rate, iterations): m = len(y) for _ in range(iterations): predictions = X.dot(theta) errors = predictions - y gradient = X.T.dot(errors) / m theta = theta - learning_rate * gradient return theta ``` --- ### 随机梯度下降 (Stochastic Gradient Descent, SGD) 随机梯度下降在每次迭代中仅使用一个样本更新参数,因此计算速度快且内存需求低。然而,由于每次更新基于单个样本,导致更新路径较为波动[^5]。 代码实现示例: ```python def stochastic_gradient_descent(X, y, theta, learning_rate, iterations): m = len(y) for _ in range(iterations): for i in range(m): prediction = X[i].dot(theta) error = prediction - y[i] gradient = X[i].T * error theta = theta - learning_rate * gradient return theta ``` --- ### 小批量梯度下降 (Mini-Batch Gradient Descent, MBGD) 小批量梯度下降结合了批量梯度下降随机梯度下降的优点。它在每次迭代中使用一个小批次(mini-batch)的数据进行梯度计算和参数更新,既保证了较快的收敛速度,又减少了更新的波动[^4]。 代码实现示例: ```python def mini_batch_gradient_descent(X, y, theta, learning_rate, iterations, batch_size=32): m = len(y) for _ in range(iterations): indices = np.random.permutation(m) X_shuffled = X[indices] y_shuffled = y[indices] for i in range(0, m, batch_size): X_batch = X_shuffled[i:i + batch_size] y_batch = y_shuffled[i:i + batch_size] predictions = X_batch.dot(theta) errors = predictions - y_batch gradient = X_batch.T.dot(errors) / batch_size theta = theta - learning_rate * gradient return theta ``` --- ### 批量梯度下降 vs 小批量梯度下降 vs 随机梯度下降 | 特性 | 批量梯度下降 (BGD) | 随机梯度下降 (SGD) | 小批量梯度下降 (MBGD) | |-----------------------|----------------------------------|------------------------------|-----------------------------| | 数据使用 | 使用整个训练集 | 每次使用一个样本 | 每次使用一小批样本 | | 收敛速度 | 较慢 | 快 | 较快 | | 内存需求 | 高 | 低 | 中等 | | 更新稳定性 | 稳定 | 波动 | 较稳定 | | 实现复杂度 | 简单 | 简单 | 略复杂 | 从实际应用角度来看,小批量梯度下降通常是最优选择,因为它在效率和稳定性之间取得了良好的平衡[^4]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值