浏览笔记 线性回归的核心任务,是通过拟合线性方程来描述因变量与自变量之间的关系。最基础的一元线性模型形式为 y = m x + b y = mx + b y = m x + b ,其中 m m m 代表斜率,b b b 代表 y 轴截距。本页用梯度下降寻找 m m m 和 b b b ,并用精确解核对结果。
梯度下降在线性回归中的应用
梯度下降(Gradient Descent)是一种迭代优化算法。它的核心逻辑是:沿着目标函数梯度的反方向(即下降最快的方向)不断调整参数,直到找到函数的最小值。
在线性回归中,我们的目标是最小化“成本函数”(Cost Function)。这个函数衡量的是模型预测值与真实观测值之间的误差。
成本函数
线性回归常用的成本函数是均方误差(Mean Squared Error, MSE),即预测值与观测值之差的平方和的平均值:
E ( m , b ) = 1 n ∑ i = 1 n ( y i − ( m x i + b ) ) 2 E(m, b) = \frac{1}{n} \sum_{i=1}^{n} (y_i - (mx_i + b))^2 E ( m , b ) = n 1 i = 1 ∑ n ( y i − ( m x i + b ) ) 2
变量定义如下:
n n n :样本数量
y i y_i y i :第 i i i 个样本的真实观测值
x i x_i x i :第 i i i 个样本的自变量值
m m m :斜率
b b b :截距
梯度下降更新规则
为了最小化 E ( m , b ) E(m, b) E ( m , b ) ,我们需要根据梯度方向迭代更新参数 m m m 和 b b b 。更新公式如下:
m k + 1 = m k − α ∂ E ∂ m m_{k+1} = m_k - \alpha \frac{\partial E}{\partial m} m k + 1 = m k − α ∂ m ∂ E
b k + 1 = b k − α ∂ E ∂ b b_{k+1} = b_k - \alpha \frac{\partial E}{\partial b} b k + 1 = b k − α ∂ b ∂ E
这里 α \alpha α 是学习率(Learning Rate),它是一个超参数,决定了每次迭代中参数更新的步长。步长太大可能导致震荡不收敛,太小则收敛速度过慢。
成本函数的偏导数
我们需要计算成本函数对 m m m 和 b b b 的偏导数,以获取梯度方向:
∂ E ∂ m = − 2 n ∑ i = 1 n x i ( y i − ( m x i + b ) ) \frac{\partial E}{\partial m} = -\frac{2}{n} \sum_{i=1}^{n} x_i(y_i - (mx_i + b)) ∂ m ∂ E = − n 2 i = 1 ∑ n x i ( y i − ( m x i + b ))
∂ E ∂ b = − 2 n ∑ i = 1 n ( y i − ( m x i + b ) ) \frac{\partial E}{\partial b} = -\frac{2}{n} \sum_{i=1}^{n} (y_i - (mx_i + b)) ∂ b ∂ E = − n 2 i = 1 ∑ n ( y i − ( m x i + b ))
这两个偏导数分别指示了 m m m 和 b b b 当前应该调整的方向和幅度。
实现步骤
初始化 :随机或手动设定 m m m 和 b b b 的初始值。
计算梯度 :根据当前参数,计算成本函数对 m m m 和 b b b 的偏导数。
更新参数 :利用上述更新公式,调整 m m m 和 b b b 的值。
迭代收敛 :重复步骤 2 和 3,直到达到梯度容差或用尽迭代预算,并报告实际停止原因。
精确解与可复算的更新
本页只讨论优化计算;模型假设和系数解释见线性回归 。令 r i = m x i + b − y i r_i=mx_i+b-y_i r i = m x i + b − y i ,链式法则给出 ∂ r i 2 / ∂ m = 2 r i x i \partial r_i^2/\partial m=2r_ix_i ∂ r i 2 / ∂ m = 2 r i x i 、∂ r i 2 / ∂ b = 2 r i \partial r_i^2/\partial b=2r_i ∂ r i 2 / ∂ b = 2 r i ,这就解释了上面导数的符号与系数 2 2 2 。因为有 1 / n 1/n 1/ n ,E E E 是均方误差 ,不是残差平方和。缩放损失不改变最小点,却会缩放梯度,因此适用的学习率也会变。
取三个观测点 ( 1 , 2 ) , ( 2 , 5 ) , ( 3 , 3 ) (1,2),(2,5),(3,3) ( 1 , 2 ) , ( 2 , 5 ) , ( 3 , 3 ) ,其残差平方和正是前文梯度笔记中的二次式:
S = 3 E = 14 m 2 + 12 m b + 3 b 2 − 42 m − 20 b + 38. S=3E=14m^2+12mb+3b^2-42m-20b+38. S = 3 E = 14 m 2 + 12 mb + 3 b 2 − 42 m − 20 b + 38.
这里 ∑ x i = 6 \sum x_i=6 ∑ x i = 6 、∑ y i = 10 \sum y_i=10 ∑ y i = 10 、∑ x i 2 = 14 \sum x_i^2=14 ∑ x i 2 = 14 、∑ x i y i = 21 \sum x_iy_i=21 ∑ x i y i = 21 。解方程组 28 m + 12 b − 42 = 0 28m+12b-42=0 28 m + 12 b − 42 = 0 、12 m + 6 b − 20 = 0 12m+6b-20=0 12 m + 6 b − 20 = 0 ,得到 m = 1 / 2 m=1/2 m = 1/2 、b = 7 / 3 b=7/3 b = 7/3 。残差 y i − ( m x i + b ) y_i-(mx_i+b) y i − ( m x i + b ) 分别是 − 5 / 6 , 5 / 3 , − 5 / 6 -5/6,5/3,-5/6 − 5/6 , 5/3 , − 5/6 ,所以 S = 25 / 6 S=25/6 S = 25/6 、E = 25 / 18 E=25/18 E = 25/18 。
在 ( m , b ) = ( 0 , 0 ) (m,b)=(0,0) ( m , b ) = ( 0 , 0 ) 处,∇ E = ( − 14 , − 20 / 3 ) \nabla E=(-14,-20/3) ∇ E = ( − 14 , − 20/3 ) 。用 α = 0.05 \alpha=0.05 α = 0.05 同时更新,得到 ( 7 / 10 , 1 / 3 ) (7/10,1/3) ( 7/10 , 1/3 ) ,E E E 从 38 / 3 38/3 38/3 降为 1789 / 450 ≈ 3.975556 1789/450\approx3.975556 1789/450 ≈ 3.975556 。每轮都要先算完两个梯度和式,再给参数赋新值。
把参数写成列向量 θ = ( m , b ) T \theta=(m,b)^T θ = ( m , b ) T ,把观测值写成 y = ( y 1 , … , y n ) T y=(y_1,\ldots,y_n)^T y = ( y 1 , … , y n ) T 。设计矩阵 X X X 的第 i i i 行取 ( x i , 1 ) (x_i,1) ( x i , 1 ) ,这样 X θ X\theta X θ 的第 i i i 项就是预测值 m x i + b mx_i+b m x i + b 。于是 E = ∥ X θ − y ∥ 2 2 / n E=\|X\theta-y\|_2^2/n E = ∥ X θ − y ∥ 2 2 / n ,其中欧氏范数的平方就是各项残差的平方和,Hessian 为 H = 2 X T X / n H=2X^TX/n H = 2 X T X / n 。任意 v v v 都满足 v T H v = 2 ∥ X v ∥ 2 2 / n ≥ 0 v^THv=2\|Xv\|_2^2/n\ge0 v T H v = 2∥ X v ∥ 2 2 / n ≥ 0 ,所以损失凸。只有 X X X 的各列线性无关,也就是列满秩时,解才唯一;对斜率加截距模型,这要求至少两个不同的 x i x_i x i 。若所有 x i = c x_i=c x i = c ,数据只能识别 m c + b mc+b m c + b ,多组参数会给出同样的拟合。
步长上界来自误差如何迭代。这里 H H H 对称正定,θ ∗ \theta_* θ ∗ 是唯一最小点。令 e k = θ k − θ ∗ e_k=\theta_k-\theta_* e k = θ k − θ ∗ ,二次函数的梯度为 H e k He_k H e k ,于是
e k + 1 = ( I − α H ) e k . e_{k+1}=(I-\alpha H)e_k. e k + 1 = ( I − α H ) e k .
沿 H H H 的某个特征向量 ,设对应特征值为 λ > 0 \lambda>0 λ > 0 ,误差分量每一步都会乘以 1 − α λ 1-\alpha\lambda 1 − α λ 。要从任意起点收敛,就需对所有特征值满足 ∣ 1 − α λ ∣ < 1 |1-\alpha\lambda|<1 ∣1 − α λ ∣ < 1 ,因此 0 < α < 2 / λ max ( H ) 0<\alpha<2/\lambda_{\max}(H) 0 < α < 2/ λ m a x ( H ) 。恰好取上界时,最大特征值方向的误差会来回振荡,而不是缩小。凸性 帮助判断全局最优,却不保证任意步长都收敛。
此数据集的 λ max ( H ) = ( 17 + 265 ) / 3 ≈ 11.092940 \lambda_{\max}(H)=(17+\sqrt{265})/3\approx11.092940 λ m a x ( H ) = ( 17 + 265 ) /3 ≈ 11.092940 ,因此固定步长在 0 < α < 2 / λ max ≈ 0.180295 0<\alpha<2/\lambda_{\max}\approx0.180295 0 < α < 2/ λ m a x ≈ 0.180295 时收敛。特征缩放会改变这个界。以梯度范数容差和迭代上限作为停止条件,并与精确解比较;损失不变也可能只是数值停滞。小型稠密问题通常适合用 QR 或 SVD 最小二乘求解器,而非手工迭代或显式计算 X T X X^TX X T X 的逆。