SVD的应用

首先先回顾上一章节讲的SVD分解,就是在mn的矩阵A的左右两边分别乘以1.9 SVD的应用与多元线性回归 - 图11.9 SVD的应用与多元线性回归 - 图2,得到一个对称矩阵。最后通过证明矩阵A可以分解为这种形式:
image.png
分析一下该式中各项的shape如下:
A:m
n U:mm image.png:mn 1.9 SVD的应用与多元线性回归 - 图5:nn
如果矩阵A的秩R(A)=r,则1.9 SVD的应用与多元线性回归 - 图6是r
r对角阵,其中对角线上的元素就是1.9 SVD的应用与多元线性回归 - 图7的不为0的特征值的平方根。把U写成列向量的形式为:1.9 SVD的应用与多元线性回归 - 图8,其中每个1.9 SVD的应用与多元线性回归 - 图9都是m维列向量,同理,V也可以写为1.9 SVD的应用与多元线性回归 - 图10,转置后变为1.9 SVD的应用与多元线性回归 - 图11,因此上式矩阵A可以展开为:
image.png
展开过程中我们观察到,因为中间1.9 SVD的应用与多元线性回归 - 图13矩阵的后n-r项都为0,所以矩阵1.9 SVD的应用与多元线性回归 - 图14的m-r项和1.9 SVD的应用与多元线性回归 - 图15的n-r项在矩阵计算过程中都相乘为0,所以上式就变为:
1.9 SVD的应用与多元线性回归 - 图16
分析一下该式中个各项的shape:
1.9 SVD的应用与多元线性回归 - 图17:m1 1.9 SVD的应用与多元线性回归 - 图18:1n 所以1.9 SVD的应用与多元线性回归 - 图19的shape为m*n,就和A的维度刚好对上。
注意这里1.9 SVD的应用与多元线性回归 - 图20之间是有大小关系的:1.9 SVD的应用与多元线性回归 - 图21,接下来我们看看这个性质在后面有什么应用。

图像压缩

实现方法

在图像处理中,图像信息是作为一个矩阵输入的。假设输入矩阵A是1.9 SVD的应用与多元线性回归 - 图22的,而每个点是float类型(即用4字节存储),那么在存储这张图像时就需要占用1.9 SVD的应用与多元线性回归 - 图23个字节的空间大小。
再看上式我们推导出的1.9 SVD的应用与多元线性回归 - 图24右边,其中1.9 SVD的应用与多元线性回归 - 图25虽然也是1.9 SVD的应用与多元线性回归 - 图26的,但是1.9 SVD的应用与多元线性回归 - 图27是m1的只有m个数,1.9 SVD的应用与多元线性回归 - 图28是1n的只有n个数,所以存储1.9 SVD的应用与多元线性回归 - 图29只要1.9 SVD的应用与多元线性回归 - 图30个字节的空间大小。
而上面我们已经知道1.9 SVD的应用与多元线性回归 - 图31,所以1.9 SVD的应用与多元线性回归 - 图32并且一般前几项中1.9 SVD的应用与多元线性回归 - 图33的值都较大,而后面的1.9 SVD的应用与多元线性回归 - 图34都接近于0。这意味着前面的项已经包含了大部分的图片信息,后面的项相对不重要。
因此A可以用前k项的1.9 SVD的应用与多元线性回归 - 图35来近似表示,此时图片存储需要的空间为:1.9 SVD的应用与多元线性回归 - 图36,其中1是常数1.9 SVD的应用与多元线性回归 - 图37占用的空间,可以看到当1.9 SVD的应用与多元线性回归 - 图38时,1.9 SVD的应用与多元线性回归 - 图39,从而达到了图像压缩的目的。

损失

因为1.9 SVD的应用与多元线性回归 - 图40的模长为1,所以采用上述方法压缩图像造成的损失为:1.9 SVD的应用与多元线性回归 - 图41,也就是k越大,损失越小。举个例子:
image.png
可以看到

传统网络图片传输与现代传输的原理

传统

传统电脑加载图片时,都是从第一行的像素点开始传输,然后我们会看到图片是一行一行的加载出现,效果如下:
image.png

现代

而现在我们打开图片时会发现照片是从不清晰到清晰,可能就是利用SVD分解,一开始先传输前5个1.9 SVD的应用与多元线性回归 - 图44,然后逐渐增加k,即传送更多的1.9 SVD的应用与多元线性回归 - 图45,所以就会产生从不清晰到清晰的过程。

image.png

矩阵乘法加速

假设矩阵A的shape是200100的,A用SVD分解变成:1.9 SVD的应用与多元线性回归 - 图47,取前25项近似表示A:1.9 SVD的应用与多元线性回归 - 图48,把1.9 SVD的应用与多元线性回归 - 图49记为M,则1.9 SVD的应用与多元线性回归 - 图50
假设矩阵A跟一个100
1的列向量x做乘法,Ax的乘法计算次数为1.9 SVD的应用与多元线性回归 - 图51次;
如果计算MNx,首先Nx的乘法计算次数为1.9 SVD的应用与多元线性回归 - 图52次,计算后shape为251,而M和Nx的乘法计算次数为1.9 SVD的应用与多元线性回归 - 图53次,所以MNx的乘法计算次数为*7500次。
并且由上面推导我们可以知道,计算MNx过程中空间存储也较低。

多元线性回归

最小二乘推导

现在有N个样本1.9 SVD的应用与多元线性回归 - 图54,每个样本1.9 SVD的应用与多元线性回归 - 图55对应1.9 SVD的应用与多元线性回归 - 图56,所以有:
1.9 SVD的应用与多元线性回归 - 图57
1.9 SVD的应用与多元线性回归 - 图58

1.9 SVD的应用与多元线性回归 - 图59 注意这里1.9 SVD的应用与多元线性回归 - 图60代表向量1.9 SVD的应用与多元线性回归 - 图61(n1)的第1个分量,一共有n个分量
上式可以化作:
image.png
即我们要找到一组参数1.9 SVD的应用与多元线性回归 - 图63使得上式成立。上式还可以写作:
1.9 SVD的应用与多元线性回归 - 图64
也就是要解这个线性方程得到系数1.9 SVD的应用与多元线性回归 - 图65
x的空间维度和样本个数一样的时候,也就是N=n(X是方阵),*且X可逆时
,上式两边同时乘以X的逆矩阵:
1.9 SVD的应用与多元线性回归 - 图66
但是这个是理想情况,而一般情况下1.9 SVD的应用与多元线性回归 - 图67,此时1.9 SVD的应用与多元线性回归 - 图68不可能成立,这个时候退而求其次,想办法使其左右两边尽可能的接近,一种办法就是让二者模长相减最小,即1.9 SVD的应用与多元线性回归 - 图69,要求最小值就是令这个二范数求导为0求解a,注意这里a才是变量,其它是参数。
1.9 SVD的应用与多元线性回归 - 图70
也就是求解1.9 SVD的应用与多元线性回归 - 图71,而这里1.9 SVD的应用与多元线性回归 - 图72不一定可逆,因为它是半正定的,下面用试探矩阵U证明一下:
1.9 SVD的应用与多元线性回归 - 图73
如果大于0就是正定矩阵。所以1.9 SVD的应用与多元线性回归 - 图74不一定可逆,因此下面分两种情况讨论:

当N>n,即样本数>参数个数

如N=5,n=3,1.9 SVD的应用与多元线性回归 - 图75一般是可逆的,因为1.9 SVD的应用与多元线性回归 - 图76,而X的秩很可能是3(因为可以把X看作5个三维空间上的点,只要找到3个点不在同一直线上,X的秩就为3。也就是从5行向量中找到3个线性无关的向量)。
所以当1.9 SVD的应用与多元线性回归 - 图77可逆时
1.9 SVD的应用与多元线性回归 - 图78
其中1.9 SVD的应用与多元线性回归 - 图79也叫做X的伪逆,伪逆矩阵不一定存在。

当N<n,即样本数<参数个数

如N=3,n=5,此时1.9 SVD的应用与多元线性回归 - 图80不可逆的,因为1.9 SVD的应用与多元线性回归 - 图81
则此时要给最小二乘的J加一个正则项,即最小二乘+最小范数。也叫做岭回归。
此时
1.9 SVD的应用与多元线性回归 - 图82
对J求导就变为1.9 SVD的应用与多元线性回归 - 图83
即转换为求解1.9 SVD的应用与多元线性回归 - 图84
其中1.9 SVD的应用与多元线性回归 - 图85必定可逆
(因为可以用一个不为0的试探向量a证明它是正定矩阵:
1.9 SVD的应用与多元线性回归 - 图86
因为1.9 SVD的应用与多元线性回归 - 图871.9 SVD的应用与多元线性回归 - 图88,所以1.9 SVD的应用与多元线性回归 - 图89为正定矩阵,其特征值1.9 SVD的应用与多元线性回归 - 图90,而1.9 SVD的应用与多元线性回归 - 图91,所以其为可逆矩阵。)

所以可以解出a:1.9 SVD的应用与多元线性回归 - 图92
此时a就是最小二乘的基础上,还增加了对系数矩阵的最小范数的约束,希望a的范数尽可能小。也叫做岭回归。
**

总结

上述推导可见分为2种情况讨论很麻烦,所以一般不管N是否大于n,直接用岭回归来求解。所以最后的解一般是1.9 SVD的应用与多元线性回归 - 图93
一般不用伪逆。