文章目录
一、正规方程与梯度下降的核心差异
正规方程和梯度下降的区别,以及矩阵和求导的计算的介绍:网页链接
核心区别:正规方程通过矩阵运算直接求解析解,梯度下降通过迭代逼近最优解。
1.1 正规方程(一步求解)
公式:
θ
=
(
X
T
X
)
−
1
X
T
y
\theta = (X^T X)^{-1} X^T y
θ=(XTX)−1XTy
- 条件:要求矩阵 X T X X^T X XTX 可逆(非奇异)。
- 符号说明:
- θ \theta θ:模型参数向量 [ θ 0 , θ 1 , . . . , θ n ] T [\theta_0, \theta_1, ..., \theta_n]^T [θ0,θ1,...,θn]T
- X X X:设计矩阵,包含样本特征(第一列全1表示偏置项)
- y y y:目标值向量
1.2 梯度下降(迭代优化)
更新公式:
θ
=
θ
−
α
⋅
∇
L
(
θ
)
\theta = \theta - \alpha \cdot \nabla L(\theta)
θ=θ−α⋅∇L(θ)
- 关键:学习率 α \alpha α控制步长,需迭代至收敛。
- 符号说明:
- α \alpha α:学习率(步长因子)
- ∇ L ( θ ) \nabla L(\theta) ∇L(θ):损失函数 L ( θ ) L(\theta) L(θ) 关于参数 θ \theta θ 的梯度
二、简单例子:两个样本点的线性回归
线性回归概念:网页链接
2.1 实验数据
真实模型:
y
=
2
x
+
1
y = 2x + 1
y=2x+1,数据点:
x
=
[
1
,
2
]
x = [1, 2]
x=[1,2],对应
y
=
[
3
,
5
]
y = [3, 5]
y=[3,5]
2.2 方法一:直接求导法(解析解)
- 线性模型:
y = w x + b y = wx + b y=wx+b - 损失函数:均方误差(MSE)
L ( w , b ) = 1 2 ∑ i = 1 2 ( w x i + b − y i ) 2 L(w, b) = \frac{1}{2} \sum_{i=1}^2 (wx_i + b - y_i)^2 L(w,b)=21i=1∑2(wxi+b−yi)2
均方误差(MSE)介绍:网页链接
注意:损失函数的功能为揭示真实值与预测值的差距,只要能正确揭示两者的差距可以任意修改损失函数,此处均方误差除以2是为了方便后续计算。
-
分别对 w w w 和 b b b 求偏导并令导数为0:
对 b b b 求偏导:
∂ L ∂ b = ∑ i = 1 2 ( w x i + b − y i ) = 0 \frac{\partial L}{\partial b} = \sum_{i=1}^2 (wx_i + b - y_i) = 0 ∂b∂L=i=1∑2(wxi+b−yi)=0
展开得:
( w ⋅ 1 + b − 3 ) + ( w ⋅ 2 + b − 5 ) = 0 (w \cdot 1 + b - 3) + (w \cdot 2 + b - 5) = 0 (w⋅1+b−3)+(w⋅2+b−5)=0
整理:
3 w + 2 b − 8 = 0 (方程1) 3w + 2b - 8 = 0 \quad \text{(方程1)} 3w+2b−8=0(方程1)对 w w w 求偏导:
∂ L ∂ w = ∑ i = 1 2 ( w x i + b − y i ) x i = 0 \frac{\partial L}{\partial w} = \sum_{i=1}^2 (wx_i + b - y_i)x_i = 0 ∂w∂L=i=1∑2(wxi+b−yi)xi=0
展开得:
( w ⋅ 1 + b − 3 ) ⋅ 1 + ( w ⋅ 2 + b − 5 ) ⋅ 2 = 0 (w \cdot 1 + b - 3) \cdot 1 + (w \cdot 2 + b - 5) \cdot 2 = 0 (w⋅1+b−3)⋅1+(w⋅2+b−5)⋅2=0
整理:
5 w + 3 b − 13 = 0 (方程2) 5w + 3b - 13 = 0 \quad \text{(方程2)} 5w+3b−13=0(方程2) -
解方程组:
由方程1得: b = 8 − 3 w 2 b = \frac{8 - 3w}{2} b=28−3w
代入方程2:
5 w + 3 ⋅ 8 − 3 w 2 − 13 = 0 5w + 3 \cdot \frac{8 - 3w}{2} - 13 = 0 5w+3⋅28−3w−13=0
两边同乘2:
10 w + 24 − 9 w − 26 = 0 10w + 24 - 9w - 26 = 0 10w+24−9w−26=0
解得: w = 2 w = 2 w=2
代入 b = 8 − 3 ⋅ 2 2 = 1 b = \frac{8 - 3 \cdot 2}{2} = 1 b=28−3⋅2=1 -
最终参数:
w = 2 , b = 1 w = 2, \quad b = 1 w=2,b=1
2.3 方法二:正规方程求解
-
设计矩阵X:
X = [ 1 1 1 2 ] X = \begin{bmatrix} 1 & 1 \\ 1 & 2 \end{bmatrix} X=[1112] -
矩阵运算过程:
计算 X T X X^T X XTX:
X T X = [ 1 1 1 2 ] T [ 1 1 1 2 ] = [ 2 3 3 5 ] X^T X = \begin{bmatrix} 1 & 1 \\ 1 & 2 \end{bmatrix}^T \begin{bmatrix} 1 & 1 \\ 1 & 2 \end{bmatrix} = \begin{bmatrix} 2 & 3 \\ 3 & 5 \end{bmatrix} XTX=[1112]T[1112]=[2335]计算行列式和逆矩阵:
行列式: det ( X T X ) = 2 ⋅ 5 − 3 ⋅ 3 = 1 \text{det}(X^T X) = 2 \cdot 5 - 3 \cdot 3 = 1 det(XTX)=2⋅5−3⋅3=1
逆矩阵:
( X T X ) − 1 = 1 1 [ 5 − 3 − 3 2 ] = [ 5 − 3 − 3 2 ] (X^T X)^{-1} = \frac{1}{1} \begin{bmatrix} 5 & -3 \\ -3 & 2 \end{bmatrix} = \begin{bmatrix} 5 & -3 \\ -3 & 2 \end{bmatrix} (XTX)−1=11[5−3−32]=[5−3−32]计算 X T y X^T y XTy:
X T y = [ 1 1 1 2 ] T [ 3 5 ] = [ 8 13 ] X^T y = \begin{bmatrix} 1 & 1 \\ 1 & 2 \end{bmatrix}^T \begin{bmatrix} 3 \\ 5 \end{bmatrix} = \begin{bmatrix} 8 \\ 13 \end{bmatrix} XTy=[1112]T[35]=[813]求解参数 θ \theta θ:
θ = ( X T X ) − 1 X T y = [ 5 − 3 − 3 2 ] [ 8 13 ] = [ 1 2 ] \theta = (X^T X)^{-1} X^T y = \begin{bmatrix} 5 & -3 \\ -3 & 2 \end{bmatrix} \begin{bmatrix} 8 \\ 13 \end{bmatrix} = \begin{bmatrix} 1 \\ 2 \end{bmatrix} θ=(XTX)−1XTy=[5−3−32][813]=[12] -
结果:
θ 0 = 1 , θ 1 = 2 即 b = 1 , w = 2 \theta_0 = 1, \quad \theta_1 = 2 \quad \text{即} \quad b = 1, \quad w = 2 θ0=1,θ1=2即b=1,w=2
2.4 直接求导与正规方程的本质是一样的
损失函数矩阵表示:
L
(
θ
)
=
1
2
(
X
θ
−
y
)
T
(
X
θ
−
y
)
L(\theta) = \frac{1}{2} (X\theta - y)^T (X\theta - y)
L(θ)=21(Xθ−y)T(Xθ−y)
展开并求导:
∇
L
(
θ
)
=
X
T
X
θ
−
X
T
y
\nabla L(\theta) = X^T X \theta - X^T y
∇L(θ)=XTXθ−XTy
令梯度为0:
X
T
X
θ
−
X
T
y
=
0
X^T X \theta - X^T y = 0
XTXθ−XTy=0
移项得:
X
T
X
θ
=
X
T
y
X^T X \theta = X^T y
XTXθ=XTy
两边左乘
(
X
T
X
)
−
1
(X^T X)^{-1}
(XTX)−1:
θ
=
(
X
T
X
)
−
1
X
T
y
\theta = (X^T X)^{-1} X^T y
θ=(XTX)−1XTy
结论:
直接求导法和正规方程本质相同,正规方程是直接求导法的矩阵形式推广。
2.5 方法三:梯度下降求解
-
初始化参数:
θ = [ 0 , 0 ] \theta = [0, 0] θ=[0,0](即 b = 0 , w = 0 b = 0, w = 0 b=0,w=0),学习率 α = 0.3 \alpha = 0.3 α=0.3,样本数 n = 2 n = 2 n=2
-
损失函数: 均方误差(MSE)
L ( θ ) = 1 2 n ∑ i = 1 n ( θ 0 + θ 1 x i − y i ) 2 L(\theta) = \frac{1}{2n} \sum_{i=1}^n (\theta_0 + \theta_1 x_i - y_i)^2 L(θ)=2n1i=1∑n(θ0+θ1xi−yi)2- θ = [ θ 0 , θ 1 ] T \theta = [\theta_0, \theta_1]^T θ=[θ0,θ1]T:参数向量, θ 0 \theta_0 θ0为偏置, θ 1 \theta_1 θ1为斜率
- n n n:样本数量(此处 n = 2 n=2 n=2)
- 功能:通过平方误差衡量预测值 ( θ 0 + θ 1 x i ) (\theta_0 + \theta_1 x_i) (θ0+θ1xi)与真实值 y i y_i yi的差距
-
梯度公式详细推导
目标:推导 ∂ L ∂ θ 0 \frac{\partial L}{\partial \theta_0} ∂θ0∂L和 ∂ L ∂ θ 1 \frac{\partial L}{\partial \theta_1} ∂θ1∂L
步骤1:展开损失函数对 θ 0 \theta_0 θ0的偏导
∂ L ∂ θ 0 = ∂ ∂ θ 0 [ 1 2 n ∑ i = 1 n ( θ 0 + θ 1 x i − y i ) 2 ] \frac{\partial L}{\partial \theta_0} = \frac{\partial}{\partial \theta_0} \left[ \frac{1}{2n} \sum_{i=1}^n (\theta_0 + \theta_1 x_i - y_i)^2 \right] ∂θ0∂L=∂θ0∂[2n1i=1∑n(θ0+θ1xi−yi)2]-
提取常数项: 1 2 n \frac{1}{2n} 2n1与 θ 0 \theta_0 θ0无关,可提到导数外
-
应用链式法则:设 u i = θ 0 + θ 1 x i − y i u_i = \theta_0 + \theta_1 x_i - y_i ui=θ0+θ1xi−yi,则 ( u i 2 ) ’ = 2 u i ⋅ u i ’ (u_i^2)’ = 2u_i \cdot u_i’ (ui2)’=2ui⋅ui’
-
对 θ 0 \theta_0 θ0求导时, ∂ u i ∂ θ 0 = 1 \frac{\partial u_i}{\partial \theta_0} = 1 ∂θ0∂ui=1
推导过程:
∂ L ∂ θ 0 = 1 2 n ∑ i = 1 n 2 ( θ 0 + θ 1 x i − y i ) ⋅ ∂ ( θ 0 + θ 1 x i − y i ) ∂ θ 0 = 1 2 n ∑ i = 1 n 2 ( θ 0 + θ 1 x i − y i ) ⋅ 1 = 1 n ∑ i = 1 n ( θ 0 + θ 1 x i − y i ) \begin{align*} \frac{\partial L}{\partial \theta_0} &= \frac{1}{2n} \sum_{i=1}^n 2(\theta_0 + \theta_1 x_i - y_i) \cdot \frac{\partial (\theta_0 + \theta_1 x_i - y_i)}{\partial \theta_0} \\ &= \frac{1}{2n} \sum_{i=1}^n 2(\theta_0 + \theta_1 x_i - y_i) \cdot 1 \\ &= \frac{1}{n} \sum_{i=1}^n (\theta_0 + \theta_1 x_i - y_i) \end{align*} ∂θ0∂L=2n1i=1∑n2(θ0+θ1xi−yi)⋅∂θ0∂(θ0+θ1xi−yi)=2n1i=1∑n2(θ0+θ1xi−yi)⋅1=n1i=1∑n(θ0+θ1xi−yi)
步骤2:展开损失函数对 θ 1 \theta_1 θ1的偏导
∂ L ∂ θ 1 = ∂ ∂ θ 1 [ 1 2 n ∑ i = 1 n ( θ 0 + θ 1 x i − y i ) 2 ] \frac{\partial L}{\partial \theta_1} = \frac{\partial}{\partial \theta_1} \left[ \frac{1}{2n} \sum_{i=1}^n (\theta_0 + \theta_1 x_i - y_i)^2 \right] ∂θ1∂L=∂θ1∂[2n1i=1∑n(θ0+θ1xi−yi)2]-
对 θ 1 \theta_1 θ1求导时, ∂ u i ∂ θ 1 = x i \frac{\partial u_i}{\partial \theta_1} = x_i ∂θ1∂ui=xi(因为 u i u_i ui中的 θ 1 x i \theta_1 x_i θ1xi对 θ 1 \theta_1 θ1的导数为 x i x_i xi)
推导过程:
∂ L ∂ θ 1 = 1 2 n ∑ i = 1 n 2 ( θ 0 + θ 1 x i − y i ) ⋅ ∂ ( θ 0 + θ 1 x i − y i ) ∂ θ 1 = 1 2 n ∑ i = 1 n 2 ( θ 0 + θ 1 x i − y i ) ⋅ x i = 1 n ∑ i = 1 n ( θ 0 + θ 1 x i − y i ) x i \begin{align*} \frac{\partial L}{\partial \theta_1} &= \frac{1}{2n} \sum_{i=1}^n 2(\theta_0 + \theta_1 x_i - y_i) \cdot \frac{\partial (\theta_0 + \theta_1 x_i - y_i)}{\partial \theta_1} \\ &= \frac{1}{2n} \sum_{i=1}^n 2(\theta_0 + \theta_1 x_i - y_i) \cdot x_i \\ &= \frac{1}{n} \sum_{i=1}^n (\theta_0 + \theta_1 x_i - y_i) x_i \end{align*} ∂θ1∂L=2n1i=1∑n2(θ0+θ1xi−yi)⋅∂θ1∂(θ0+θ1xi−yi)=2n1i=1∑n2(θ0+θ1xi−yi)⋅xi=n1i=1∑n(θ0+θ1xi−yi)xi
-
-
迭代过程
第1步:
- 预测值: y ^ = 0 + 0 ⋅ x = [ 0 , 0 ] \hat{y} = 0 + 0 \cdot x = [0, 0] y^=0+0⋅x=[0,0]
- 误差: y ^ − y = [ − 3 , − 5 ] \hat{y} - y = [-3, -5] y^−y=[−3,−5]
- 梯度:
∂ L ∂ θ 0 = 1 2 × ( − 8 ) = − 4 \frac{\partial L}{\partial \theta_0} = \frac{1}{2} \times (-8) = -4 ∂θ0∂L=21×(−8)=−4
∂ L ∂ θ 1 = 1 2 × ( − 13 ) = − 6.5 \frac{\partial L}{\partial \theta_1} = \frac{1}{2} \times (-13) = -6.5 ∂θ1∂L=21×(−13)=−6.5 - 更新参数:
θ 0 = 0 − 0.3 × ( − 4 ) = 1.2 \theta_0 = 0 - 0.3 \times (-4) = 1.2 θ0=0−0.3×(−4)=1.2
θ 1 = 0 − 0.3 × ( − 6.5 ) = 1.95 \theta_1 = 0 - 0.3 \times (-6.5) = 1.95 θ1=0−0.3×(−6.5)=1.95
第2步:
- 预测值: y ^ = 1.2 + 1.95 x = [ 3.15 , 5.1 ] \hat{y} = 1.2 + 1.95x = [3.15, 5.1] y^=1.2+1.95x=[3.15,5.1]
- 误差: y ^ − y = [ 0.15 , 0.1 ] \hat{y} - y = [0.15, 0.1] y^−y=[0.15,0.1]
- 梯度:
∂ L ∂ θ 0 = 1 2 × ( 0.25 ) = 0.125 \frac{\partial L}{\partial \theta_0} = \frac{1}{2} \times (0.25) = 0.125 ∂θ0∂L=21×(0.25)=0.125
∂ L ∂ θ 1 = 1 2 × ( 0.4 ) = 0.2 \frac{\partial L}{\partial \theta_1} = \frac{1}{2} \times (0.4) = 0.2 ∂θ1∂L=21×(0.4)=0.2 - 更新参数:
θ 0 = 1.2 − 0.3 × 0.125 = 1.1625 \theta_0 = 1.2 - 0.3 \times 0.125 = 1.1625 θ0=1.2−0.3×0.125=1.1625
θ 1 = 1.95 − 0.3 × 0.2 = 1.89 \theta_1 = 1.95 - 0.3 \times 0.2 = 1.89 θ1=1.95−0.3×0.2=1.89
第3步:
- 预测值: y ^ = 1.1625 + 1.89 x = [ 3.0525 , 4.9425 ] \hat{y} = 1.1625 + 1.89x = [3.0525, 4.9425] y^=1.1625+1.89x=[3.0525,4.9425]
- 误差: y ^ − y = [ 0.0525 , − 0.0575 ] \hat{y} - y = [0.0525, -0.0575] y^−y=[0.0525,−0.0575]
- 梯度:
∂ L ∂ θ 0 = 1 2 × ( − 0.005 ) = − 0.0025 \frac{\partial L}{\partial \theta_0} = \frac{1}{2} \times (-0.005) = -0.0025 ∂θ0∂L=21×(−0.005)=−0.0025
∂ L ∂ θ 1 = 1 2 × ( − 0.06 ) = − 0.03 \frac{\partial L}{\partial \theta_1} = \frac{1}{2} \times (-0.06) = -0.03 ∂θ1∂L=21×(−0.06)=−0.03 - 更新参数:
θ 0 = 1.1625 − 0.3 × ( − 0.0025 ) = 1.16325 \theta_0 = 1.1625 - 0.3 \times (-0.0025) = 1.16325 θ0=1.1625−0.3×(−0.0025)=1.16325
θ 1 = 1.89 − 0.3 × ( − 0.03 ) = 1.98 \theta_1 = 1.89 - 0.3 \times (-0.03) = 1.98 θ1=1.89−0.3×(−0.03)=1.98
结果对比:
步骤 | θ₀(偏置) | θ₁(斜率) | 误差(相对于真实值) |
---|---|---|---|
初始 | 0 | 0 | θ₀: -1.0, θ₁: -2.0 |
3步后 | 1.16325 | 1.98 | θ₀: +0.16325, θ₁: -0.02 |
结论:
梯度下降只需要进行多次迭代即可逼近损失的最小值
θ
0
=
1
,
θ
1
=
2
即
b
=
1
,
w
=
2
\theta_0 = 1, \quad \theta_1 = 2 \quad \text{即} \quad b = 1, \quad w = 2
θ0=1,θ1=2即b=1,w=2。
三、正规方程的局限性:矩阵不可逆场景
3.1 特征共线导致矩阵不可逆
构造数据:
x
1
=
[
1
,
2
,
3
]
x_1 = [1, 2, 3]
x1=[1,2,3],
x
2
=
2
x
1
=
[
2
,
4
,
6
]
x_2 = 2x_1 = [2, 4, 6]
x2=2x1=[2,4,6](特征完全共线),真实模型
y
=
7
x
1
+
1
y = 7x_1 + 1
y=7x1+1,对应
y
=
[
8
,
15
,
22
]
y = [8, 15, 22]
y=[8,15,22]
注意:因为现实里真实模型往往是未知的(即 y = 7 x 1 + 1 y = 7x_1 + 1 y=7x1+1 是未知的,是模型要求出来的未知数),但是一个样本有多少个特征( x x x )往往是已知的,但特征与特征之间是否共线性却又是未知(即 x 2 = 2 x 1 x_2 = 2x_1 x2=2x1 是未知的)。正规方程处理的是输入数据中所有给定的特征矩阵,无论这些特征是否在真实模型中被实际使用,所以会出现矩阵不可逆的情况。
设计矩阵X:
X
=
[
1
1
2
1
2
4
1
3
6
]
X = \begin{bmatrix} 1 & 1 & 2 \\ 1 & 2 & 4 \\ 1 & 3 & 6 \end{bmatrix}
X=
111123246
矩阵运算:
计算
X
T
X
X^T X
XTX:
X
T
X
=
[
3
6
12
6
14
28
12
28
56
]
X^T X = \begin{bmatrix} 3 & 6 & 12 \\ 6 & 14 & 28 \\ 12 & 28 & 56 \end{bmatrix}
XTX=
361261428122856
观察发现:第3列 = 2×第2列(如12=6×2,28=14×2),即矩阵列线性相关,行列式为0,无法求逆。
3.2 特征共线下梯度下降计算**
损失函数(均方误差):
L
(
θ
)
=
1
2
n
∑
i
=
1
n
(
θ
0
+
θ
1
x
1
i
+
θ
2
x
2
i
−
y
i
)
2
L(\theta) = \frac{1}{2n} \sum_{i=1}^n (\theta_0 + \theta_1 x_{1i} + \theta_2 x_{2i} - y_i)^2
L(θ)=2n1i=1∑n(θ0+θ1x1i+θ2x2i−yi)2
梯度向量(对各参数求偏导):
- 对
θ
0
\theta_0
θ0 的梯度:
∂ L ∂ θ 0 = 1 n ∑ i = 1 n ( y ^ i − y i ) = 1 3 ( − 8 − 15 − 22 ) = − 15 \frac{\partial L}{\partial \theta_0} = \frac{1}{n} \sum_{i=1}^n (\hat{y}_i - y_i) = \frac{1}{3}(-8 -15 -22) = -15 ∂θ0∂L=n1i=1∑n(y^i−yi)=31(−8−15−22)=−15 - 对
θ
1
\theta_1
θ1 的梯度:
∂ L ∂ θ 1 = 1 n ∑ i = 1 n ( y ^ i − y i ) x 1 i = 1 3 [ ( − 8 ) × 1 + ( − 15 ) × 2 + ( − 22 ) × 3 ] = − 104 3 ≈ − 34.6667 \frac{\partial L}{\partial \theta_1} = \frac{1}{n} \sum_{i=1}^n (\hat{y}_i - y_i)x_{1i} = \frac{1}{3}[(-8)×1 + (-15)×2 + (-22)×3] = -\frac{104}{3} \approx -34.6667 ∂θ1∂L=n1i=1∑n(y^i−yi)x1i=31[(−8)×1+(−15)×2+(−22)×3]=−3104≈−34.6667 - 对
θ
2
\theta_2
θ2 的梯度:
∂ L ∂ θ 2 = 1 n ∑ i = 1 n ( y ^ i − y i ) x 2 i = 1 3 [ ( − 8 ) × 2 + ( − 15 ) × 4 + ( − 22 ) × 6 ] = − 208 3 ≈ − 69.3333 \frac{\partial L}{\partial \theta_2} = \frac{1}{n} \sum_{i=1}^n (\hat{y}_i - y_i)x_{2i} = \frac{1}{3}[(-8)×2 + (-15)×4 + (-22)×6] = -\frac{208}{3} \approx -69.3333 ∂θ2∂L=n1i=1∑n(y^i−yi)x2i=31[(−8)×2+(−15)×4+(−22)×6]=−3208≈−69.3333
- 参数更新
θ 0 = 0 − α × ( − 15 ) = 0 + 0.01 × 15 = 0.15 θ 1 = 0 − α × ( − 34.6667 ) = 0 + 0.01 × 34.6667 ≈ 0.3467 θ 2 = 0 − α × ( − 69.3333 ) = 0 + 0.01 × 69.3333 ≈ 0.6933 \begin{align*} \theta_0 &= 0 - \alpha×(-15) = 0 + 0.01×15 = 0.15 \\ \theta_1 &= 0 - \alpha×(-34.6667) = 0 + 0.01×34.6667 \approx 0.3467 \\ \theta_2 &= 0 - \alpha×(-69.3333) = 0 + 0.01×69.3333 \approx 0.6933 \\ \end{align*} θ0θ1θ2=0−α×(−15)=0+0.01×15=0.15=0−α×(−34.6667)=0+0.01×34.6667≈0.3467=0−α×(−69.3333)=0+0.01×69.3333≈0.6933 - 后续过程:
- 第2次迭代后:
θ 0 ≈ 0.285 \theta_0 \approx 0.285 θ0≈0.285, θ 1 ≈ 0.6540 \theta_1 \approx 0.6540 θ1≈0.6540, θ 2 ≈ 1.3080 \theta_2 \approx 1.3080 θ2≈1.3080 - 第3次迭代后:
θ 0 ≈ 0.4065 \theta_0 \approx 0.4065 θ0≈0.4065, θ 1 ≈ 1.0311 \theta_1 \approx 1.0311 θ1≈1.0311, θ 2 ≈ 2.0622 \theta_2 \approx 2.0622 θ2≈2.0622 - 第4次迭代后:
θ 0 ≈ 0.5158 \theta_0 \approx 0.5158 θ0≈0.5158, θ 1 ≈ 1.4763 \theta_1 \approx 1.4763 θ1≈1.4763, θ 2 ≈ 2.9526 \theta_2 \approx 2.9526 θ2≈2.9526 - 第5次迭代后:
θ 0 ≈ 0.6142 \theta_0 \approx 0.6142 θ0≈0.6142, θ 1 ≈ 1.9863 \theta_1 \approx 1.9863 θ1≈1.9863, θ 2 ≈ 3.9726 \theta_2 \approx 3.9726 θ2≈3.9726 - 第6次迭代后:
······
- 第2次迭代后:
关键关系:
每次迭代后
θ
1
+
2
θ
2
\theta_1 + 2\theta_2
θ1+2θ2 均逼近真实值 7(如第5次迭代后:
1.9863
+
2
×
3.9726
≈
9.9315
1.9863 + 2 \times 3.9726 \approx 9.9315
1.9863+2×3.9726≈9.9315),且
θ
0
\theta_0
θ0 逼近真实偏置 1。
结论:
尽管特征完全共线导致正规方程失效,梯度下降仍能通过迭代找到满足模型约束的参数解(如
θ
0
→
1
\theta_0 \to 1
θ0→1,
θ
1
+
2
θ
2
→
7
\theta_1 + 2\theta_2 \to 7
θ1+2θ2→7),验证了其在矩阵不可逆场景下的有效性。
四、为什么正规方程加全1列能代表偏置b?
线性模型本质:
标准线性模型为
y
=
θ
0
+
θ
1
x
1
+
θ
2
x
2
+
⋯
+
θ
n
x
n
y = \theta_0 + \theta_1 x_1 + \theta_2 x_2 + \dots + \theta_n x_n
y=θ0+θ1x1+θ2x2+⋯+θnxn,其中
θ
0
\theta_0
θ0 是偏置项(不依赖特征的常数项)。
矩阵乘法映射:
若构造特征矩阵
X
X
X 的第一列为全1,即:
X
=
[
1
x
11
x
12
…
1
x
21
x
22
…
⋮
⋮
⋮
⋱
]
X = \begin{bmatrix} 1 & x_{11} & x_{12} & \dots \\ 1 & x_{21} & x_{22} & \dots \\ \vdots & \vdots & \vdots & \ddots \end{bmatrix}
X=
11⋮x11x21⋮x12x22⋮……⋱
参数向量
θ
=
[
θ
0
,
θ
1
,
θ
2
,
…
]
T
\theta = [\theta_0, \theta_1, \theta_2, \dots]^T
θ=[θ0,θ1,θ2,…]T,则矩阵乘法
X
θ
X\theta
Xθ 为:
[
1
×
θ
0
+
x
11
×
θ
1
+
x
12
×
θ
2
+
…
1
×
θ
0
+
x
21
×
θ
1
+
x
22
×
θ
2
+
…
⋮
]
\begin{bmatrix} 1×\theta_0 + x_{11}×\theta_1 + x_{12}×\theta_2 + \dots \\ 1×\theta_0 + x_{21}×\theta_1 + x_{22}×\theta_2 + \dots \\ \vdots \end{bmatrix}
1×θ0+x11×θ1+x12×θ2+…1×θ0+x21×θ1+x22×θ2+…⋮
可见,全1列与
θ
0
\theta_0
θ0 相乘后,恰好对应模型中的偏置项,实现了“常数项+特征加权和”的统一矩阵表达。
五、大数据场景下的计算复杂度对比
5.1 高维海量数据案例
场景设定:
- 样本数量: n = 1 0 8 n = 10^8 n=108(1亿条数据)
- 特征维度: d = 1 0 5 d = 10^5 d=105(10万维特征)
- 模型:线性回归 y = θ 0 + θ 1 x 1 + ⋯ + θ d x d y = \theta_0 + \theta_1 x_1 + \dots + \theta_d x_d y=θ0+θ1x1+⋯+θdxd
正规方程的计算瓶颈:
- 矩阵规模:设计矩阵 X X X 大小为 1 0 8 × ( d + 1 ) 10^8 \times (d+1) 108×(d+1),计算 X T X X^T X XTX 得到 ( d + 1 ) × ( d + 1 ) (d+1) \times (d+1) (d+1)×(d+1) 的矩阵(此处为 100001 × 100001 100001 \times 100001 100001×100001)。
- 时间复杂度:矩阵求逆的时间复杂度为 O ( d 3 ) O(d^3) O(d3),当 d = 1 0 5 d=10^5 d=105 时,求逆运算需约 ( 1 0 5 ) 3 = 1 0 15 (10^5)^3 = 10^{15} (105)3=1015 次浮点操作(单机按每秒10^10次运算需约115天)。
- 内存消耗:存储 X T X X^T X XTX 矩阵(双精度浮点)需 100001 × 100001 × 8 ≈ 80 G B 100001 \times 100001 \times 8 \approx 80GB 100001×100001×8≈80GB,求逆过程中中间变量可能占用数百TB内存(远超普通服务器配置)。
梯度下降的可行性:
- 小批量梯度下降(SGD):每次迭代处理 m = 100 m=100 m=100 个样本,计算量为 O ( m d ) = 100 × 1 0 5 = 1 0 7 O(md) = 100 \times 10^5 = 10^7 O(md)=100×105=107 次操作。
- 时间效率:1亿样本分为 1 0 6 10^6 106 个批次,100次迭代总操作量为 1 0 7 × 100 = 1 0 9 10^7 \times 100 = 10^9 107×100=109 次(单机秒级完成,分布式可进一步加速)。
- 分布式支持:数据分块至1000个节点,每节点处理10万样本,梯度并行计算效率提升近千倍。
5.2 复杂模型场景(非凸优化)
案例:神经网络模型(如GPT-3)
- 参数数量:约 175 × 1 0 9 175 \times 10^9 175×109(1750亿参数)
- 损失函数:交叉熵损失(非凸函数)
正规方程的局限性:
- 参数维度达1750亿,矩阵求逆在数学上无解(矩阵规模超宇宙原子数量级);
- 非凸损失函数无解析解,正规方程理论失效。
梯度下降的优势:
- 通过反向传播分批次迭代更新,单卡(A100)可处理万亿次操作/秒;
- 自适应优化器(如AdamW)可缓解高维空间鞍点问题;
- 分布式训练框架(如Megatron-LM)支持千亿参数模型并行训练。
六、为何现代模型训练以梯度下降为主?
6.1 数据与模型趋势的驱动
-
数据规模爆炸:
- 互联网日均产生数据超50ZB,正规方程无法处理PB级数据的矩阵运算;
- 梯度下降的在线学习特性支持实时数据流(如推荐系统每秒百万次更新)。
-
模型复杂度提升:
- 多模态模型(如GPT-4V)参数规模达万亿,仅梯度下降支持分阶段训练;
- 非凸优化场景(如生成对抗网络GAN)必须通过迭代逼近纳什均衡。
6.2 计算资源与算法的适配
- 内存友好:梯度下降单次迭代内存占用为 O ( m d + p ) O(md + p) O(md+p)( p p p为参数数量),而正规方程为 O ( ( d + 1 ) 2 ) O((d+1)^2) O((d+1)2),当 d = 1 0 5 d=10^5 d=105 时差距达百万倍;
- 容错性强:梯度下降对学习率鲁棒性高(如使用余弦退火策略),而正规方程在矩阵病态时解误差可达10^6倍以上。
七、总结
方法 | 核心逻辑 | 优势场景 | 劣势场景 |
---|---|---|---|
正规方程 | 矩阵直接求逆 | 极小规模数据(n<10^4,d<100)、凸函数 | 超大规模数据(n>107)、高维(d>104)、非凸模型 |
梯度下降 | 迭代优化 | 海量数据、百万维特征、非凸模型、实时学习 | 需调参、高维空间可能陷入局部最优(需优化策略) |
工程实践结论:
当数据量突破107且特征维度超104时,梯度下降成为唯一可行方案。现代AI领域(如大模型训练)完全依赖梯度下降体系,正规方程仅作为理论工具存在。