梯度下降算法——theta参数更新公式的数学理解

本文深入探讨了梯度下降算法在机器学习中的应用,特别是在线性回归中的作用。通过数学推导解释了如何使用θ的更新公式来最小化损失函数J(θ),并分析了损失函数下降方向的选择及其更新公式背后的原理。同时,文章讨论了泰勒公式在理解这一过程中的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

(notice:粗体以示向量)

一、引出算法

在学习 Linear Regression 算法时,经典案例就是房价预测。在通过一系列预处理操作后,得到一个带有特征变量 x x x和可学习参数 θ \theta θ的假设函数:
h θ ( x ) = θ 0 + θ 1 x 1 + θ 2 x 2 h_\theta(\textbf{x}) = \theta_0 + \theta_1{x_1} +\theta_2 {x_2} hθ(x)=θ0+θ1x1+θ2x2

一般式:

h θ ( x ) = ∑ i = 0 n θ i x i = θ T ⋅ x ( n 为 特 征 数 ) h_\theta(\textbf{x})=\sum_{i=0}^{n}\theta_{i}x_{i}=\boldsymbol{\theta}^{T}·\textbf{x} (n 为特征数) hθ(x)=i=0nθixi=θTxn
下一步要做的就是,构造一个均方损失函数:

J ( θ ) = 1 2 ∑ k = 1 m ( h θ ( x k ) − y k ) 2 ( m 为 训 练 集 样 本 数 量 ) J(\boldsymbol\theta) = \frac{1}{2}\sum_{k=1}^{m} (h_\theta(\textbf{x}^k) - y^k)^2 (m 为训练集样本数量) J(θ)=21k=1m(hθ(xk)yk)2m

h θ ( x k ) − y k h_\theta(\textbf{x}^{k}) - y^k hθ(xk)yk
表示第 k 个样本的实际预测值和其真实值的差异,即“训练误差”。所有样本的训练误差之和为损失函数 J ( θ ) J(\boldsymbol{\theta}) J(θ) J ( θ ) J(\boldsymbol{\theta}) J(θ) 越小,则说明可学习参数 θ \boldsymbol{\theta} θ调整的越好,算法泛化能力有可能也越好。


想让损失函数 J ( θ ) J(\boldsymbol{\theta}) J(θ) 变小,就只能迭代优化可学习参数 θ \boldsymbol{\theta} θ

而想要优化参数 θ \boldsymbol{\theta} θ,就可以使用梯度下降算法


二、梯度下降算法直观理解

CS229课程截图


直观看,假如损失函数的起始位置在上图 “1”的位置。由坐标轴刻度可知,此时的损失函数 J ( θ ) J(\boldsymbol{\theta}) J(θ)的位置很高,数值很大。需要调整可学习参数 θ \boldsymbol{\theta} θ以减小在训练集上 J ( θ ) J(\boldsymbol{\theta}) J(θ)的数值。
如图所示,损失函数 J ( θ ) J(\boldsymbol{\theta}) J(θ)不断的寻找比当前位置更低的地方作为下一步驻留地,最后在位置“2”处停止寻找。此时便得到一个局部最优解 θ \boldsymbol\theta θ.

这使用的就是下面这个更新公式:
θ i : = θ i − α ∂ ∂ θ i J ( θ ) \theta_i := \theta_i - \alpha \frac{\partial}{\partial \theta_i} J(\boldsymbol{\theta}) θi:=θiαθiJ(θ)
其中:(注意区分粗体)
∂ ∂ θ i J ( θ ) = ∂ ∂ θ i 1 2 ∑ k = 1 m ( h θ ( x k ) − y k ) 2 {\frac{\partial}{\partial \theta_i} J(\boldsymbol{\theta}) = \frac{\partial}{\partial \theta_i} \frac{1}{2}\sum_{k=1}^m(h_\theta(\textbf{x}^k) - y^k)^2}

### 深度学习中梯度下降算法的实现与原理 #### 1. 梯度下降的基本概念 梯度下降是一种用于最小化目标函数(通常是损失函数)的优化算法。它通过迭代调整模型参数,使得损失函数逐渐减小直至达到局部最优解或全局最优解[^1]。 在深度学习领域,由于神经网络模型通常包含大量参数,因此需要一种高效的方法来更新这些参数梯度下降正是这样的一种工具,它利用损失函数相对于各个参数的偏导数(即梯度),按照负梯度方向逐步更新参数[^2]。 #### 2. 数学推导 假设有一个损失函数 \( J(\theta) \),其中 \( \theta \) 表示模型参数向量,则梯度下降的核心思想是基于以下公式进行参数更新: \[ \theta := \theta - \eta \nabla_\theta J(\theta) \] 这里: - \( \eta \) 是学习率,控制每次更新的步伐大小; - \( \nabla_\theta J(\theta) \) 是损失函数关于参数 \( \theta \) 的梯度。 此公式的含义是以当前参数位置为基础,沿梯度的反方向移动一小步,从而降低损失函数值。 #### 3. 不同类型的梯度下降算法 根据数据处理方式的不同,梯度下降主要分为三种变体: ##### (1)批量梯度下降(Batch Gradient Descent) 使用整个训练集计算每一步的梯度,并据此更新参数。这种方法的优点在于收敛稳定,但由于每次都需遍历全部样本,在大规模数据集上效率较低。 ##### (2)随机梯度下降(Stochastic Gradient Descent, SGD) 仅选取单个样本来估计梯度并完成一次更新操作。虽然这种方式噪声较大可能导致路径不平稳,但它显著减少了内存占用和运算时间,适合在线学习场景。 ##### (3)小批量梯度下降(Mini-batch Gradient Descent) 综合前两者优点,从小部分样本集合里估算梯度来进行参数修正。这是目前最常用的形式之一,因为它既保持了一定程度上的稳定性又兼顾了速度优势。 ```python import numpy as np def mini_batch_gradient_descent(X, y, theta_init, learning_rate=0.01, batch_size=32, epochs=100): m = X.shape[0] theta = theta_init for epoch in range(epochs): indices = np.random.permutation(m) X_shuffled = X[indices] y_shuffled = y[indices] for i in range(0, m, batch_size): X_mini = X_shuffled[i:i+batch_size] y_mini = y_shuffled[i:i+batch_size] gradient = compute_gradient(theta, X_mini, y_mini) theta -= learning_rate * gradient return theta def compute_gradient(theta, X, y): predictions = predict(theta, X) errors = predictions - y gradients = (X.T @ errors) / len(y) return gradients def predict(theta, X): return X @ theta ``` 上述代码展示了如何用Python实现一个小批次版本的梯度下降过程。 #### 4. 加速技术——动量法与NAG 为了进一步提升性能,研究者提出了带有惯性的改进方案,比如动量法(Momentum Method)和Nesterov加速梯度(Nesterov Accelerated Gradient,NAG)[^3]: - **Momentum**: 参数更新时引入历史累积效应,帮助克服平坦区域带来的缓慢进展问题。 \[ v_t = \gamma v_{t-1} + \eta \nabla_\theta J(\theta) \] \[ \theta := \theta - v_t \] 其中\( \gamma \approx 0.9\)作为衰减速率因子[^3]。 - **NAG**: 对标准动量进行了微调,提前预估下一步的位置再做校正,理论上能更有效地缩短到达极值所需的时间跨度。 #### 结论 综上所述,梯度下降及其衍生形式构成了现代机器学习尤其是深度学习框架下不可或缺的一部分。理解其背后的理论依据以及实践技巧对于开发人员来说至关重要。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值