人工智能概念之五:梯度下降和正规方程求解的区别

一、正规方程与梯度下降的核心差异

正规方程和梯度下降的区别,以及矩阵和求导的计算的介绍网页链接

核心区别:正规方程通过矩阵运算直接求解析解,梯度下降通过迭代逼近最优解。

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 方法一:直接求导法(解析解)

  1. 线性模型
    y = w x + b y = wx + b y=wx+b
  2. 损失函数:均方误差(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=12(wxi+byi)2

均方误差(MSE)介绍网页链接
注意:损失函数的功能为揭示真实值与预测值的差距,只要能正确揭示两者的差距可以任意修改损失函数,此处均方误差除以2是为了方便后续计算。

  1. 分别对 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 bL=i=12(wxi+byi)=0
    展开得:
    ( w ⋅ 1 + b − 3 ) + ( w ⋅ 2 + b − 5 ) = 0 (w \cdot 1 + b - 3) + (w \cdot 2 + b - 5) = 0 (w1+b3)+(w2+b5)=0
    整理:
    3 w + 2 b − 8 = 0 (方程1) 3w + 2b - 8 = 0 \quad \text{(方程1)} 3w+2b8=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 wL=i=12(wxi+byi)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 (w1+b3)1+(w2+b5)2=0
    整理:
    5 w + 3 b − 13 = 0 (方程2) 5w + 3b - 13 = 0 \quad \text{(方程2)} 5w+3b13=0(方程2)

  2. 解方程组:
    由方程1得: b = 8 − 3 w 2 b = \frac{8 - 3w}{2} b=283w
    代入方程2:
    5 w + 3 ⋅ 8 − 3 w 2 − 13 = 0 5w + 3 \cdot \frac{8 - 3w}{2} - 13 = 0 5w+3283w13=0
    两边同乘2:
    10 w + 24 − 9 w − 26 = 0 10w + 24 - 9w - 26 = 0 10w+249w26=0
    解得: w = 2 w = 2 w=2
    代入 b = 8 − 3 ⋅ 2 2 = 1 b = \frac{8 - 3 \cdot 2}{2} = 1 b=2832=1

  3. 最终参数:
    w = 2 , b = 1 w = 2, \quad b = 1 w=2,b=1

2.3 方法二:正规方程求解

  1. 设计矩阵X:
    X = [ 1 1 1 2 ] X = \begin{bmatrix} 1 & 1 \\ 1 & 2 \end{bmatrix} X=[1112]

  2. 矩阵运算过程:

    计算 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)=2533=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[5332]=[5332]

    计算 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=[5332][813]=[12]

  3. 结果:
    θ 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=2b=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(y)T(y)

展开并求导:
∇ L ( θ ) = X T X θ − X T y \nabla L(\theta) = X^T X \theta - X^T y L(θ)=XTXTy

令梯度为0:
X T X θ − X T y = 0 X^T X \theta - X^T y = 0 XTXTy=0
移项得:
X T X θ = X T y X^T X \theta = X^T y XT=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 方法三:梯度下降求解

  1. 初始化参数:

    θ = [ 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

  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=1n(θ0+θ1xiyi)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的差距
  3. 梯度公式详细推导

    目标:推导 ∂ L ∂ θ 0 \frac{\partial L}{\partial \theta_0} θ0L ∂ L ∂ θ 1 \frac{\partial L}{\partial \theta_1} θ1L

    步骤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] θ0L=θ0[2n1i=1n(θ0+θ1xiyi)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+θ1xiyi,则 ( u i 2 ) ’ = 2 u i ⋅ u i ’ (u_i^2)’ = 2u_i \cdot u_i’ (ui2)=2uiui

    • θ 0 \theta_0 θ0求导时, ∂ u i ∂ θ 0 = 1 \frac{\partial u_i}{\partial \theta_0} = 1 θ0ui=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*} θ0L=2n1i=1n2(θ0+θ1xiyi)θ0(θ0+θ1xiyi)=2n1i=1n2(θ0+θ1xiyi)1=n1i=1n(θ0+θ1xiyi)

    步骤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] θ1L=θ1[2n1i=1n(θ0+θ1xiyi)2]

    • θ 1 \theta_1 θ1求导时, ∂ u i ∂ θ 1 = x i \frac{\partial u_i}{\partial \theta_1} = x_i θ1ui=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*} θ1L=2n1i=1n2(θ0+θ1xiyi)θ1(θ0+θ1xiyi)=2n1i=1n2(θ0+θ1xiyi)xi=n1i=1n(θ0+θ1xiyi)xi

  4. 迭代过程

    第1步:

    • 预测值: y ^ = 0 + 0 ⋅ x = [ 0 , 0 ] \hat{y} = 0 + 0 \cdot x = [0, 0] y^=0+0x=[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 θ0L=21×(8)=4
      ∂ L ∂ θ 1 = 1 2 × ( − 13 ) = − 6.5 \frac{\partial L}{\partial \theta_1} = \frac{1}{2} \times (-13) = -6.5 θ1L=21×(13)=6.5
    • 更新参数:
      θ 0 = 0 − 0.3 × ( − 4 ) = 1.2 \theta_0 = 0 - 0.3 \times (-4) = 1.2 θ0=00.3×(4)=1.2
      θ 1 = 0 − 0.3 × ( − 6.5 ) = 1.95 \theta_1 = 0 - 0.3 \times (-6.5) = 1.95 θ1=00.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 θ0L=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 θ1L=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.20.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.950.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 θ0L=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 θ1L=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.16250.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.890.3×(0.03)=1.98

结果对比:

步骤θ₀(偏置)θ₁(斜率)误差(相对于真实值)
初始00θ₀: -1.0, θ₁: -2.0
3步后1.163251.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=2b=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=1n(θ0+θ1x1i+θ2x2iyi)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 θ0L=n1i=1n(y^iyi)=31(81522)=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 θ1L=n1i=1n(y^iyi)x1i=31[(8)×1+(15)×2+(22)×3]=310434.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 θ2L=n1i=1n(y^iyi)x2i=31[(8)×2+(15)×4+(22)×6]=320869.3333
  1. 参数更新
    θ 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.66670.3467=0α×(69.3333)=0+0.01×69.33330.6933
  2. 后续过程
    • 第2次迭代后
      θ 0 ≈ 0.285 \theta_0 \approx 0.285 θ00.285, θ 1 ≈ 0.6540 \theta_1 \approx 0.6540 θ10.6540, θ 2 ≈ 1.3080 \theta_2 \approx 1.3080 θ21.3080
    • 第3次迭代后
      θ 0 ≈ 0.4065 \theta_0 \approx 0.4065 θ00.4065, θ 1 ≈ 1.0311 \theta_1 \approx 1.0311 θ11.0311, θ 2 ≈ 2.0622 \theta_2 \approx 2.0622 θ22.0622
    • 第4次迭代后
      θ 0 ≈ 0.5158 \theta_0 \approx 0.5158 θ00.5158, θ 1 ≈ 1.4763 \theta_1 \approx 1.4763 θ11.4763, θ 2 ≈ 2.9526 \theta_2 \approx 2.9526 θ22.9526
    • 第5次迭代后
      θ 0 ≈ 0.6142 \theta_0 \approx 0.6142 θ00.6142, θ 1 ≈ 1.9863 \theta_1 \approx 1.9863 θ11.9863, θ 2 ≈ 3.9726 \theta_2 \approx 3.9726 θ23.9726
    • 第6次迭代后
      ······

关键关系
每次迭代后 θ 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.97269.9315),且 θ 0 \theta_0 θ0 逼近真实偏置 1

结论
尽管特征完全共线导致正规方程失效,梯度下降仍能通过迭代找到满足模型约束的参数解(如 θ 0 → 1 \theta_0 \to 1 θ01, θ 1 + 2 θ 2 → 7 \theta_1 + 2\theta_2 \to 7 θ1+2θ27),验证了其在矩阵不可逆场景下的有效性。

四、为什么正规方程加全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= 11x11x21x12x22
参数向量 θ = [ θ 0 , θ 1 , θ 2 , …   ] T \theta = [\theta_0, \theta_1, \theta_2, \dots]^T θ=[θ0,θ1,θ2,]T,则矩阵乘法 X θ X\theta 为:
[ 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

正规方程的计算瓶颈

  1. 矩阵规模:设计矩阵 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)。
  2. 时间复杂度:矩阵求逆的时间复杂度为 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天)。
  3. 内存消耗:存储 X T X X^T X XTX 矩阵(双精度浮点)需 100001 × 100001 × 8 ≈ 80 G B 100001 \times 100001 \times 8 \approx 80GB 100001×100001×880GB,求逆过程中中间变量可能占用数百TB内存(远超普通服务器配置)。

梯度下降的可行性

  1. 小批量梯度下降(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 次操作。
  2. 时间效率:1亿样本分为 1 0 6 10^6 106 个批次,100次迭代总操作量为 1 0 7 × 100 = 1 0 9 10^7 \times 100 = 10^9 107×100=109 次(单机秒级完成,分布式可进一步加速)。
  3. 分布式支持:数据分块至1000个节点,每节点处理10万样本,梯度并行计算效率提升近千倍。

5.2 复杂模型场景(非凸优化)

案例:神经网络模型(如GPT-3)

  • 参数数量:约 175 × 1 0 9 175 \times 10^9 175×109(1750亿参数)
  • 损失函数:交叉熵损失(非凸函数)

正规方程的局限性

  • 参数维度达1750亿,矩阵求逆在数学上无解(矩阵规模超宇宙原子数量级);
  • 非凸损失函数无解析解,正规方程理论失效。

梯度下降的优势

  • 通过反向传播分批次迭代更新,单卡(A100)可处理万亿次操作/秒;
  • 自适应优化器(如AdamW)可缓解高维空间鞍点问题;
  • 分布式训练框架(如Megatron-LM)支持千亿参数模型并行训练。

六、为何现代模型训练以梯度下降为主?

6.1 数据与模型趋势的驱动

  1. 数据规模爆炸

    • 互联网日均产生数据超50ZB,正规方程无法处理PB级数据的矩阵运算;
    • 梯度下降的在线学习特性支持实时数据流(如推荐系统每秒百万次更新)。
  2. 模型复杂度提升

    • 多模态模型(如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领域(如大模型训练)完全依赖梯度下降体系,正规方程仅作为理论工具存在。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值