在线性回归中,目标是找到一组参数,使得模型预测值和实际值之间的误差最小化。这一目标通常通过最小化目标函数(或损失函数)来实现。最常见的损失函数是均方误差(MSE,Mean Squared Error),其公式如下:

J(θ)=12m∑i=1m(hθ(x(i))−y(i))2 J(\theta) = \frac{1}{2m} \sum_{i=1}^{m} (h_\theta(x^{(i)}) - y^{(i)})^2 J(θ)=2m1i=1m(hθ(x(i))y(i))2

其中:

J(θ)J(\theta)J(θ) 是损失函数。

hθ(x(i))h_\theta(x^{(i)})hθ(x(i)) 是预测值,通常表示为:

hθ(x)=θTx h_\theta(x) = \theta^T x hθ(x)=θTx

即线性模型的预测结果。

y(i)y^{(i)}y(i) 是实际值。

θ\thetaθ 是待求解的参数。

mmm 是训练数据的样本数。

可解性问题

在一些特殊情况下,如果设计矩阵(输入数据的矩阵)是非满秩的,即矩阵的行列式为零,这意味着矩阵没有逆,不能通过直接求解公式(比如正规方程)来找到参数解。正规方程的形式为:

θ=(XTX)−1XTy \theta = (X^T X)^{-1} X^T y θ=(XTX)1XTy

如果 XTXX^T XXTX 是不可逆的,这时我们无法通过这种方式求解参数,因此需要使用数值方法来逼近最优解,梯度下降就是其中一种有效的方法。

梯度下降(Gradient Descent)

梯度下降是一种通过迭代优化的方法,它不依赖矩阵的逆运算,因此即使矩阵不可逆,依然可以使用梯度下降法来找到一个近似解。基本思想是通过计算损失函数相对于参数的梯度,不断更新参数,使得损失函数的值逐渐减小,最终趋近于最优解。

1. 梯度的概念

梯度是损失函数对参数的偏导数,表示在当前参数值下,损失函数的变化方向。通过计算损失函数相对于每个参数 θj\theta_jθj 的梯度,我们可以知道如何更新参数,使损失函数最小化。

对于均方误差,梯度的计算公式如下:

∂∂θjJ(θ)=1m∑i=1m(hθ(x(i))−y(i))⋅xj(i) \frac{\partial}{\partial \theta_j} J(\theta) = \frac{1}{m} \sum_{i=1}^{m} (h_\theta(x^{(i)}) - y^{(i)}) \cdot x_j^{(i)} θjJ(θ)=m1i=1m(hθ(x(i))y(i))xj(i)

2. 参数更新

根据梯度下降的规则,我们可以用以下的公式来更新参数:

θj:=θj−α⋅∂∂θjJ(θ) \theta_j := \theta_j - \alpha \cdot \frac{\partial}{\partial \theta_j} J(\theta) θj:=θjαθjJ(θ)

其中,α\alphaα 是学习率,控制每次参数更新的步长。如果 α\alphaα 太大,可能会导致模型跳过最优解;如果 α\alphaα 太小,收敛速度会很慢。

∂∂θjJ(θ)\frac{\partial}{\partial \theta_j} J(\theta)θjJ(θ) 是损失函数相对于参数 θj\theta_jθj 的偏导数,表示当前参数的变化方向。

3. 梯度下降的迭代过程
  • 初始化:首先为参数 θ\thetaθ 设定初始值(通常设为零或随机值)。
  • 计算梯度:计算当前参数下的梯度,确定损失函数如何变化。
  • 更新参数:根据梯度方向,调整参数值,使损失函数减小。
  • 重复迭代:重复计算梯度和更新参数的过程,直到损失函数收敛到某个较小的值,或者达到预定的迭代次数。

梯度下降的三种常见变体

  1. 批量梯度下降(Batch Gradient Descent):每次迭代时,使用整个训练集计算梯度并更新参数。
  2. 随机梯度下降(Stochastic Gradient Descent, SGD):每次迭代时,只使用一个样本来计算梯度并更新参数。这样会有更快的更新速度,但噪声较大。
  3. 小批量梯度下降(Mini-batch Gradient Descent):每次迭代时,使用一部分样本(称为小批量,通常是 32 或 64 个样本)来计算梯度并更新参数。这种方法兼具批量梯度下降和随机梯度下降的优点。

示例

假设我们有如下数据点:

{(1,2),(2,3),(3,4)} \{(1, 2), (2, 3), (3, 4)\} {(1,2),(2,3),(3,4)}

目标是找到线性模型 hθ(x)=θ0+θ1xh_\theta(x) = \theta_0 + \theta_1 xhθ(x)=θ0+θ1x 来拟合这些点。

  1. 初始化参数:设 θ0=0\theta_0 = 0θ0=0θ1=0\theta_1 = 0θ1=0
  2. 计算损失函数:根据当前的参数计算损失函数 J(θ)J(\theta)J(θ)
  3. 计算梯度:计算损失函数相对于 θ0\theta_0θ0θ1\theta_1θ1 的偏导数。
  4. 更新参数:根据梯度下降规则,更新 θ0\theta_0θ0θ1\theta_1θ1
  5. 重复迭代:不断迭代,直到损失函数趋于收敛。

在每次更新参数时,模型的预测会逐渐逼近实际值,最终得到接近于最优的参数值。

总结

梯度下降是在线性回归中处理不可逆目标函数时的一种有效的优化方法。它通过迭代的方式更新参数,使得损失函数逐渐最小化,从而得到较为精确的解。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐