梯度下降法常用的更新公式

由于博客内容为空,暂无法提供包含关键信息的摘要。

在这里插入图片描述

梯度下降算法是一种用于最小化损失函数的优化算法,其核心思想是沿着梯度的负方向逐步调整参数,以找到函数的最小值。参数更新公式梯度下降法的关键组成部分,其数学表达式如下: ### 参数更新公式 梯度下降法的参数更新公式为: $$ \theta_{t+1} = \theta_t - \eta \cdot \nabla J(\theta_t) $$ 其中: - $\theta_t$ 表示第 $t$ 次迭代时的参数向量。 - $\eta$ 是学习率(步长),控制每次更新的幅度。 - $\nabla J(\theta_t)$ 是损失函数 $J(\theta)$ 在 $\theta_t$ 处的梯度向量,表示函数在该点的变化率。 - $\theta_{t+1}$ 是更新后的参数向量。 ### 具体形式 在实际应用中,梯度下降法有多种形式,以下是几种常见的变体: #### 1. 批量梯度下降法(BGD) 批量梯度下降法使用所有训练样本来计算梯度,其参数更新公式为: $$ \theta_{t+1} = \theta_t - \eta \cdot \frac{1}{N} \sum_{i=1}^{N} \nabla J(\theta_t; x_i, y_i) $$ 其中: - $N$ 是训练样本的总数。 - $x_i$ 和 $y_i$ 分别是第 $i$ 个样本的输入和目标输出。 批量梯度下降法更新过程较为稳定,但由于每次迭代都需要遍历所有样本,计算成本较高 [^2]。 #### 2. 随机梯度下降法(SGD) 随机梯度下降法每次仅使用一个样本进行梯度计算,其参数更新公式为: $$ \theta_{t+1} = \theta_t - \eta \cdot \nabla J(\theta_t; x_j, y_j) $$ 其中: - $j$ 是随机选择的一个样本索引。 由于每次更新只依赖一个样本,随机梯度下降法的训练速度较快,但其更新方向波动较大,可能导致收敛过程不稳定 [^2]。 #### 3. 小批量梯度下降法(MBGD) 小批量梯度下降法结合了批量梯度下降和随机梯度下降的优点,每次使用一个小批量的样本来计算梯度,其参数更新公式为: $$ \theta_{t+1} = \theta_t - \eta \cdot \frac{1}{B} \sum_{i=1}^{B} \nabla J(\theta_t; x_{b_i}, y_{b_i}) $$ 其中: - $B$ 是小批量的大小(通常取10、32、64等)。 - $b_i$ 是随机选择的样本索引。 小批量梯度下降法在计算效率和收敛稳定性之间取得了较好的平衡,是实际应用中最常用的方法 [^2]。 ### 代码示例 以下是一个使用小批量梯度下降法优化线性回归模型的 Python 代码示例: ```python import numpy as np # 生成模拟数据 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] # 超参数 learning_rate = 0.1 n_iterations = 1000 batch_size = 10 # 参数初始化 theta = np.random.randn(2, 1) # 小批量梯度下降 for iteration in range(n_iterations): # 打乱数据 indices = np.random.permutation(100) X_shuffled = X_b[indices] y_shuffled = y[indices] # 分批次更新 for i in range(0, 100, batch_size): X_i = X_shuffled[i:i+batch_size] y_i = y_shuffled[i:i+batch_size] # 计算梯度 gradients = (2 / batch_size) * X_i.T @ (X_i @ theta - y_i) # 更新参数 theta -= learning_rate * gradients print("最终参数估计:", theta) ``` ### 相关问题 1. 梯度下降法中的学习率如何选择? 2. 如何判断梯度下降法是否已经收敛? 3. 随机梯度下降法和小批量梯度下降法有什么区别? 4. 为什么梯度下降法不能直接求解参数? 5. 梯度下降法在非凸优化问题中的表现如何?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值