Loading [MathJax]/extensions/AssistiveMML.js

如何通俗地理解奇异值?

奇异值分解,就是把矩阵分成多个“分力”。奇异值的大小,就是各个“分力”的大小。
让我们从小时候玩过的翻绳游戏开始这个问题的讲解。
1 翻绳
对于翻绳的这个花型而言,是由四只手完成的:
马同学高等数学
我们可以认为这个花型是由两个方向的力合成的:
容易想象,如果其中一个力(相比另外一个力而言)比较小的话,那么绳子的形状基本上由大的那个力来决定:
马同学高等数学
2 奇异值分解与奇异值
类比于翻绳,我们可以认为:
  • 奇异值分解,就是把矩阵分成多个“分力”
  • 奇异值的大小,就是各个“分力”的大小
2.1 奇异值分解
下面通过一个具体的矩阵例子来解释下,比如:
A=\begin{bmatrix}1&-2\\1&2\end{bmatrix}
根据之前的类比,矩阵是“力”,“力”怎么画出来呢?
翻绳游戏中的“力”要通过绳子的形状来观察。很显然要观察矩阵也需要一个载体。
我们通过单位圆来观察矩阵:
把这个单位圆的每一点都通过A进行变换,得到一个椭圆(我把单位圆保留下来了,作为一个比较):
A进行奇异值分解:

\begin{aligned}
    A&=\begin{bmatrix}1&-2\\1&2\end{bmatrix}\\
    &=\begin{bmatrix}-0.707&-0.707\\0.707&-0.707\end{bmatrix}\begin{bmatrix}2.828&0\\0&1.414\end{bmatrix}\begin{bmatrix}0&-1\\1&0\end{bmatrix}
\end{aligned}
实际上,将A分为了两个“分力”:
    
A=\begin{bmatrix}-0.707&-0.707\\0.707&-0.707\end{bmatrix}\begin{bmatrix}2.828&0\\0&0\end{bmatrix}\begin{bmatrix}0&-1\\1&0\end{bmatrix}
+\begin{bmatrix}-0.707&-0.707\\0.707&-0.707\end{bmatrix}\begin{bmatrix}0&0\\0&1.414\end{bmatrix}\begin{bmatrix}0&-1\\1&0\end{bmatrix}
我们来看看第一个“分力”,\begin{bmatrix}-0.707&-0.707\\0.707&-0.707\end{bmatrix}\begin{bmatrix}2.828&0\\0&0\end{bmatrix}\begin{bmatrix}0&-1\\1&0\end{bmatrix}=\begin{bmatrix}0&-2\\0&2\end{bmatrix},作用在单位圆这个“橡皮筋”上的效果:
可怜的“橡皮筋”被拉成了一根线段。
我们来看看第二个“分力”,\begin{bmatrix}-0.707&-0.707\\0.707&-0.707\end{bmatrix}\begin{bmatrix}0&0\\0&1.414\end{bmatrix}\begin{bmatrix}0&-1\\1&0\end{bmatrix}=\begin{bmatrix}1&0\\1&0\end{bmatrix},作用在单位圆这个“橡皮筋”上的效果:
可怜的“橡皮筋”被拉成了另外一根线段。
这两个“分力”一起作用的时候,可以想象(画面自行脑补),单位圆这个“橡皮筋”被拉成了椭圆:
2.2 奇异值的大小
刚才举的矩阵的两个“分力”大小,只相差一倍,如果相差很大会怎么样?
换一个矩阵A,对它进行奇异值分解:

\begin{aligned}
    A&=\begin{bmatrix}1&1\\1&1.1\end{bmatrix}\\
    &=\begin{bmatrix}-0.689&-0.725\\-0.725&0.689\end{bmatrix}\begin{bmatrix}2.051&0\\0&0.048\end{bmatrix}\begin{bmatrix}-0.689&-0.725\\-0.725&0.689\end{bmatrix}
\end{aligned}
这两个“分力”的奇异值相差就很大,大概相差了40倍。
单位圆被A映射成了短轴和长轴相差太大的椭圆,看起来和直线差不多:
我们试试,把小的那个奇异值去掉会怎么样:

\begin{aligned}
    A&\approx\begin{bmatrix}-0.689&-0.725\\-0.725&0.689\end{bmatrix}\begin{bmatrix}2.051&0\\0&0\end{bmatrix}\begin{bmatrix}-0.689&-0.725\\-0.725&0.689\end{bmatrix}\\
    &=\begin{bmatrix}0.974&1.024\\1.024&1.076\end{bmatrix}
\end{aligned}
\begin{bmatrix}0.974&1.024\\1.024&1.076\end{bmatrix}把单位圆变为了一根直线:
这个直线和之前的椭圆看上去差不多。
回到之前的比喻,两个相差很大的分力作用在“橡皮筋”上,“橡皮筋”的形状可以说完全取决于大的那个分力。
2.3 奇异值为什么这么神奇?
奇异值分解实际上把矩阵的变换分为了三部分:
  • 旋转
  • 拉伸
  • 投影
拿刚才的:
A=\begin{bmatrix}1&-2\\1&2\end{bmatrix}
举例子(方阵没有投影,不过不影响这里思考):
单位圆先被旋转,是没有形变的:
再进行拉伸,这里决定了单位圆的形状,奇异值分别是椭圆的长轴和短轴:
最后,被旋转到最终的位置,这一过程也没有发生形变:
所以,奇异值决定了形变,大小决定在形变中的重要性。
3 总结
根据奇异值分解、以及奇异值的特点,有很多应用。
比如,可以把图片转为矩阵,通过丢弃不重要的奇异值,进行压缩:
比如,可以把很多数据放在矩阵中,通过丢弃不重要的奇异值,来减小处理量。
还比如,可以从矩阵中,找到最大的奇异值,从而得到数据最重要的特征。
关注马同学
马同学高等数学
微信公众号:matongxue314