当前位置:   article > 正文

线性代数|机器学习-P11方程Ax=b求解研究

线性代数|机器学习-P11方程Ax=b求解研究

1. 变量数和约束条件数大小分类

  • 0 用伪逆矩阵 x = A + b x=A^{+}b x=A+b直接求解,[上一节已讲]
  • 1 当矩阵A大小适中,条件数 σ 1 σ r < 1000 时 \frac{\sigma_1}{\sigma_r}<1000时 σrσ1<1000, 用 x = A \ b x=A\backslash b x=A\b
  • 2 当矩阵A列满秩m>n=r时,方程数多于变量数,无法求解,只能择中找近似解,将b投影到矩阵A的列空间中后,再找到近似解 x ^ \hat{x} x^ A T A x ^ = A T b → x ^ = ( A T A ) − 1 A T b A^TA\hat{x}=A^Tb\rightarrow \hat{x}=(A^TA)^{-1}A^Tb ATAx^=ATbx^=(ATA)1ATb
  • 3 当矩阵m < n时,方程数小于变量数,有无穷多的解,约束不够,所以我们增加 L 1 , L 2 L_1,L2 L1,L2约束来在众多的解中拿到一个好的解,这是深度学习中最重要的损失函数解决思路。

2. 最小二乘法和Gram-schmidt变换

2.1 Gram-schmidt变换

  • 4 列向量情况很差,条件数 σ 1 σ r > 1000 \frac{\sigma_1}{\sigma_r}>1000 σrσ1>1000,就是病态矩阵,简单理解就是矩阵A的列向量之间相关性太大,导致无法用相关性的列表示其他向量;
    当我们矩阵A的列向量为 a 1 , a 2 a_1,a_2 a1,a2时候,我们用 a 1 , a 2 a_1,a_2 a1,a2表示 v 3 v_3 v3时候,特别不方便, a 1 , a 2 a_1,a_2 a1,a2越相近,越不方便,就是所说的列向量相关性太大,那gram-schmidt的方式就是,既然 a 1 , a 2 a_1,a_2 a1,a2太接近,那就改造其中一个,我们把 a 1 a_1 a1经过投影和相减后得到 a 11 a_{11} a11,那么 a 11 ⊥ a 2 a_{11}\perp a_2 a11a2,这样我们就用新的正交向量 a 11 , a 3 a_{11},a_3 a11,a3来表示 v 3 v_3 v3. 将A分解为QR后就可以得到最优解 x ^ \hat{x} x^,具体推导可以看上一节内容。另外一种是通过将列进行旋转,原理和行的交换一样,主要是关于数值稳定性的问题,保证不要出现大数吃小数的现象发生。
    在这里插入图片描述

2.2 最小二乘法

2.2.1 损失函数-Lasso 和regression

  • 5 矩阵A接近奇异矩阵,该矩阵的值不是满秩,无法进行直接求逆得到 A − 1 A^{-1} A1逆矩阵,就是会得到很多的解,我们的目的是从这么多的解中找到一个最好的解,目前加 L 1 L_1 L1项,即加 λ ∣ ∣ x ∣ ∣ 1 \lambda||x||_1 λ∣∣x1,即是我们的LASSO模型;加 L 2 L_2 L2项目,即加 δ 2 ∣ ∣ x ∣ ∣ 2 2 \delta^2||x||_2^2 δ2∣∣x22,即是我们的岭回归模型,是不是很神奇!!!,后面还有的是两个都加,后续会学习到的!!!

2.2.2 损失函数-Lasso

  • Lasso 模型
    arg ⁡ m i n 1 2 ∣ ∣ A x − b ∣ ∣ 2 2 + λ ∣ ∣ x ∣ ∣ 1
    argmin12||Axb||22+λ||x||1
    minarg21∣∣Axb22+λ∣∣x1
  • Redge 模型,在 δ \delta δ较小的时候 1 2 δ 2 \frac{1}{2}\delta^2 21δ2 δ 2 \delta^2 δ2无区别

2.2.3 损失函数-regression

z = arg ⁡ m i n 1 2 ∣ ∣ A x − b ∣ ∣ 2 2 + 1 2 δ 2 ∣ x ∣ ∣ 1 2 z=argmin12||Axb||22+12δ2|x||21 z=minarg21∣∣Axb22+21δ2x12

  • z的矩阵表达式
    z = arg ⁡ m i n 1 2 ∣ ∣ A x − b ∣ ∣ 2 2 + 1 2 ∣ ∣ δ I x − 0 ∣ ∣ 1 2
    z=argmin12||Axb||22+12||δIx0||12
    z=minarg21∣∣Axb22+21∣∣δIx0∣12
  • 也就是说惩罚项重新构成了增广矩阵 A ∗ , b ∗ A^*,b^* A,b
    [ A σ I ] [ x ] = [ b 0 ] → A ∗ x = b ∗ → ( A T A + σ 2 I ) x = A T b
    [AσI][x]=[b0]Ax=b(ATA+σ2I)x=ATb
    AσI [x]= b0 Ax=b(ATA+σ2I)x=ATb
  • 对于一般矩阵A,不是特别大的矩阵A,解如下:
    ( A T A + σ 2 I ) x = A T b → x ^ = ( A T A + σ 2 I ) − 1 A T b
    (ATA+σ2I)x=ATbx^=(ATA+σ2I)1ATb
    (ATA+σ2I)x=ATbx^=(ATA+σ2I)1ATb

2.2.4 Regression岭回归-矩阵验证

  • 验证上述是否正确,假设矩阵A为[a],整理可得如下:
    ( A T A + σ 2 I ) x = A T b → ( a 2 + σ 2 ) x = a b
    (ATA+σ2I)x=ATb(a2+σ2)x=ab
    (ATA+σ2I)x=ATb(a2+σ2)x=ab

    – 当 a 2 + σ 2 ≠ 0 a^2+\sigma^2 \neq 0 a2+σ2=0:
    ( a 2 + σ 2 ) x = a b → x ^ = a a 2 + σ 2 b
    (a2+σ2)x=abx^=aa2+σ2b
    (a2+σ2)x=abx^=a2+σ2ab
  • σ = 0 , a ≠ 0 \sigma=0,a\ne 0 σ=0,a=0时,可得:
    ( a 2 + σ 2 ) x = a b → x ^ = a a 2 + σ 2 b → x ^ = b a
    (a2+σ2)x=abx^=aa2+σ2bx^=ba
    (a2+σ2)x=abx^=a2+σ2abx^=ab

    – 当 a 2 + σ 2 = 0 → a = σ = 0 a^2+\sigma^2 =0\rightarrow a=\sigma=0 a2+σ2=0a=σ=0:
    z = arg ⁡ m i n 1 2 ∣ ∣ A x − b ∣ ∣ 2 2 + 1 2 δ 2 ∣ x ∣ ∣ 1 2 → z = 1 2 ( a x − b ) 2
    z=argmin12||Axb||22+12δ2|x||12z=12(axb)2
    z=minarg21∣∣Axb22+21δ2x12z=21(axb)2

    此时的z是向上的抛物线,那么可得最小值就一定在x=0处。

2.2.5 Regression岭回归-导数验证

z = arg ⁡ m i n 1 2 ∣ ∣ A x − b ∣ ∣ 2 2 + 1 2 δ 2 ∣ x ∣ ∣ 1 2 = 1 2 ( a x − b ) 2 + 1 2 δ 2 x 2 z=argmin12||Axb||22+12δ2|x||21=12(axb)2+12δ2x2 z=minarg21∣∣Axb22+21δ2x12=21(axb)2+21δ2x2

  • 求导可得:
    ∂ z ∂ x = a ( a x − b ) + σ 2 x = 0 → ( a 2 + σ 2 ) x ^ = a b → 居然跟矩阵表达式一样 zx=a(axb)+σ2x=0(a2+σ2)ˆx=ab xz=a(axb)+σ2x=0(a2+σ2)x^=ab居然跟矩阵表达式一样
    所以我们暂时简单验证我们在最小二乘法中加二范数惩罚项是对的!!!

  • 以上是损失函数的设计,也就是我们通过添加损失函数的约束条件来明确我们的目标,那么目标有了,现在缺少怎么找到目标的方法,常见的有随机梯度下降等方法,里面设计到学习率,迭代次数等,目的是怎么快速的找到最小的损失函数值,并根据结果来更新权重参数,这样矩阵就和深度学习联系上啦!

  • 好的解指的是我们的解不仅对已知的数据集有好的损失函数值,同时我们的解还能对未知的数据有好的结果!有效性和泛化性都要有!!!

3. 迭代和随机采样

3.1 迭代

  • 6 迭代
    当矩阵很大的时候,但是不是超级巨大,我们可以用迭代的方法处理,将矩阵A分解为
    A = S − T → A x = b → S x = T x + b
    A=STAx=bSx=Tx+b
    A=STAx=bSx=Tx+b
  • 迭代可得:
    S x k + 1 = T x k + b ; S x k = T x k − 1 + b ; → S ( x − x k + 1 ) = T ( x − x k )
    Sxk+1=Txk+b;Sxk=Txk1+b;S(xxk+1)=T(xxk)
    Sxk+1=Txk+b;Sxk=Txk1+b;S(xxk+1)=T(xxk)
  • 误差比可得:
    x − x k + 1 x − x k = S − 1 T
    xxk+1xxk=S1T
    xxkxxk+1=S1T
  • S − 1 T S^{-1}T S1T<1时,随着 S − 1 T S^{-1}T S1T越小, x k x_k xk收敛的快。

3.2 随机采样

  • 7 随机采样
    当矩阵A超级大的时候,我们用电脑计算已经无法直接计算 A T A A^TA ATA的时候,我们就需要用到神奇的概率采样技术了,我们通过一定的概率去采样得到新的矩阵 A s A_s As时,用 A s A_s As近似替代A。
    我们知道矩阵A左乘行变换,右乘列变换,当我们用x来采样A列向量时,得到 A x = A s l Ax=A_{sl} Ax=Asl,实现列采样,当我们用x来采样A行向量时,得到 A T x = A s r A^Tx=A_{sr} ATx=Asr,实现行采样,这样我们就可以用采样的小样本来代替大样本矩阵A了。
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Guff_9hys/article/detail/905493
推荐阅读
相关标签
  

闽ICP备14008679号