文章目录
- 1. 变量数和约束条件数大小分类
- 2. 最小二乘法和Gram-schmidt变换
- 2.1 Gram-schmidt变换
- 2.2 最小二乘法
- 2.2.1 损失函数-Lasso 和regression
- 2.2.2 损失函数-Lasso
- 2.2.3 损失函数-regression
- 2.2.4 Regression岭回归-矩阵验证
- 2.2.5 Regression岭回归-导数验证
- 3. 迭代和随机采样
- 3.1 迭代
- 3.2 随机采样
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^=ATb→x^=(ATA)−1ATb3
当矩阵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 a11⊥a2,这样我们就用新的正交向量 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} A−1逆矩阵,就是会得到很多的解,我们的目的是从这么多的解中找到一个最好的解,目前加 L 1 L_1 L1项,即加 λ ∣ ∣ x ∣ ∣ 1 \lambda||x||_1 λ∣∣x∣∣1,即是我们的LASSO模型;加 L 2 L_2 L2项目,即加 δ 2 ∣ ∣ x ∣ ∣ 2 2 \delta^2||x||_2^2 δ2∣∣x∣∣22,即是我们的岭回归模型,是不是很神奇!!!,后面还有的是两个都加,后续会学习到的!!!
2.2.2 损失函数-Lasso
- Lasso 模型
arg m i n 1 2 ∣ ∣ A x − b ∣ ∣ 2 2 + λ ∣ ∣ x ∣ ∣ 1 \begin{equation} \arg\limits_{min}\frac{1}{2}||Ax-b||_2^2+\lambda||x||_1 \end{equation} minarg21∣∣Ax−b∣∣22+λ∣∣x∣∣1 - 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 \begin{equation} z=\arg\limits_{min}\frac{1}{2}||Ax-b||_2^2+\frac{1}{2}\delta^2|x||_1^2 \end{equation} z=minarg21∣∣Ax−b∣∣22+21δ2∣x∣∣12
- z的矩阵表达式
z = arg m i n 1 2 ∣ ∣ A x − b ∣ ∣ 2 2 + 1 2 ∣ ∣ δ I x − 0 ∣ ∣ 1 2 \begin{equation} z=\arg\limits_{min}\frac{1}{2}||Ax-b||_2^2+\frac{1}{2}||\delta Ix-0||_1^2 \end{equation} z=minarg21∣∣Ax−b∣∣22+21∣∣δIx−0∣∣12 - 也就是说惩罚项重新构成了增广矩阵 A ∗ , b ∗ A^*,b^* A∗,b∗
[ A σ I ] [ x ] = [ b 0 ] → A ∗ x = b ∗ → ( A T A + σ 2 I ) x = A T b \begin{equation} \begin{bmatrix}A\\\\ \sigma I\end{bmatrix}\begin{bmatrix}x\end{bmatrix}=\begin{bmatrix}b\\\\0\end{bmatrix}\rightarrow A^*x=b^*\rightarrow (A^TA+\sigma^2 I)x=A^Tb \end{equation} AσI [x]= b0 →A∗x=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 \begin{equation} (A^TA+\sigma^2 I)x=A^Tb\rightarrow \hat{x}=(A^TA+\sigma^2I)^{-1}A^Tb \end{equation} (ATA+σ2I)x=ATb→x^=(ATA+σ2I)−1ATb
2.2.4 Regression岭回归-矩阵验证
- 验证上述是否正确,假设矩阵A为[a],整理可得如下:
( A T A + σ 2 I ) x = A T b → ( a 2 + σ 2 ) x = a b \begin{equation} (A^TA+\sigma^2 I)x=A^Tb\rightarrow (a^2+\sigma^2)x=ab \end{equation} (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 \begin{equation} (a^2+\sigma^2)x=ab\rightarrow \hat{x}=\frac{a}{a^2+\sigma^2}b \end{equation} (a2+σ2)x=ab→x^=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 \begin{equation} (a^2+\sigma^2)x=ab\rightarrow \hat{x}=\frac{a}{a^2+\sigma^2}b\rightarrow \hat{x}=\frac{b}{a} \end{equation} (a2+σ2)x=ab→x^=a2+σ2ab→x^=ab
– 当 a 2 + σ 2 = 0 → a = σ = 0 a^2+\sigma^2 =0\rightarrow a=\sigma=0 a2+σ2=0→a=σ=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 \begin{equation} z=\arg\limits_{min}\frac{1}{2}||Ax-b||_2^2+\frac{1}{2}\delta^2|x||_1^2\rightarrow z=\frac{1}{2}(ax-b)^2 \end{equation} z=minarg21∣∣Ax−b∣∣22+21δ2∣x∣∣12→z=21(ax−b)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 \begin{equation} z=\arg\limits_{min}\frac{1}{2}||Ax-b||_2^2+\frac{1}{2}\delta^2|x||_1^2=\frac{1}{2}(ax-b)^2+\frac{1}{2}\delta^2x^2 \end{equation} z=minarg21∣∣Ax−b∣∣22+21δ2∣x∣∣12=21(ax−b)2+21δ2x2
-
求导可得:
∂ z ∂ x = a ( a x − b ) + σ 2 x = 0 → ( a 2 + σ 2 ) x ^ = a b → 居然跟矩阵表达式一样 \begin{equation} \frac{\partial z}{\partial x}=a(ax-b)+\sigma^2x=0\rightarrow (a^2+\sigma^2)\hat{x}=ab\rightarrow 居然跟矩阵表达式一样 \end{equation} ∂x∂z=a(ax−b)+σ2x=0→(a2+σ2)x^=ab→居然跟矩阵表达式一样
所以我们暂时简单验证我们在最小二乘法中加二范数惩罚项是对的!!!
-
以上是损失函数的设计,也就是我们通过添加损失函数的约束条件来明确我们的目标,那么目标有了,现在缺少怎么找到目标的方法,常见的有
随机梯度下降
等方法,里面设计到学习率,迭代次数等,目的是怎么快速的找到最小的损失函数值,并根据结果来更新权重参数,这样矩阵就和深度学习联系上啦! -
好的解指的是我们的解不仅对已知的数据集有好的损失函数值,同时我们的解还能对未知的数据有好的结果!有效性和泛化性都要有!!!
3. 迭代和随机采样
3.1 迭代
6
迭代
当矩阵很大的时候,但是不是超级巨大,我们可以用迭代的方法处理,将矩阵A分解为
A = S − T → A x = b → S x = T x + b \begin{equation} A=S-T\rightarrow Ax=b\rightarrow Sx=Tx+b \end{equation} A=S−T→Ax=b→Sx=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 ) \begin{equation} Sx_{k+1}=Tx_k + b;Sx_{k}=Tx_{k-1} + b;\rightarrow S(x-x_{k+1})=T(x-x_k) \end{equation} Sxk+1=Txk+b;Sxk=Txk−1+b;→S(x−xk+1)=T(x−xk) - 误差比可得:
x − x k + 1 x − x k = S − 1 T \begin{equation} \frac{x-x_{k+1}}{x-x_k}=S^{-1}T \end{equation} x−xkx−xk+1=S−1T - 当 S − 1 T S^{-1}T S−1T<1时,随着 S − 1 T S^{-1}T S−1T越小, 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了。