科数网
首页
题库
试卷
学习
VIP
你好
游客,
登录
注册
在线学习
线性代数
第二篇 矩阵
奇异值分解
最后
更新:
2025-03-05 08:40
查看:
143
次
反馈
同步训练
奇异值分解
## 识别图像的边缘 让我们从人眼说起,学者发现,人的视觉细胞对物体的边缘特别敏感。也就是说,我们先看到物体的轮廓,然后才判断这到底是什么东西。比如下图右侧图片,寥寥几笔,人的大脑就能初步勾勒出左边的图像。  计算机科学家受到启发,第一步也是先识别图像的边缘。 加州大学的学生 Adit Deshpande 写了一篇文章[《A Beginner's Guide To Understanding Convolutional Neural Networks》](https://adeshpande3.github.io/adeshpande3.github.io/A-Beginner%27s-Guide-To-Understanding-Convolutional-Neural-Networks/),介绍了一种最简单的算法,非常具有启发性,体现了图像识别的基本思路。  首先,我们要明白,人看到的是图像,计算机看到的是一个数字矩阵。所谓"图像识别",就是从一大堆数字中找出规律。 怎样将图像转为数字呢?一般来说,为了过滤掉干扰信息,可以把图像缩小(比如缩小到 49 x 49 像素),并且把每个像素点的色彩信息转为灰度值,这样就得到了一个 49 x 49 的矩阵。 然后,从左上角开始,依次取出一个小区块,进行计算。  上图是取出一个 5 x 5 的区块。下面的计算以 7 x 7 的区块为例。 接着,需要有一些现成的边缘模式,比如垂直、直角、圆、锐角等等。  上图右边是一个圆角模式,左边是它对应的 7 x 7 灰度矩阵。可以看到,圆角所在的边缘灰度值比较高,其他地方都是0。 现在,就可以进行边缘识别了。下面是一张卡通老鼠的图片。  取出左上角的区块。  取样矩阵与模式矩阵对应位置的值相乘,进行累加,得到6600。这个值相当大,它说明什么呢?  取样矩阵移到老鼠头部,与模式矩阵相乘,得到的值是0。 乘积越大就说明越匹配,可以断定区块里的图像形状是圆角。通常会预置几十种模式,每个区块计算出最匹配的模式,然后再对整张图进行判断。 ## 大矩阵的处理 下面是上面黑白照片的提取 {width=400px} 如果用1表示黑色,0表示白色,则下图大部分是黑色,使用 $1*1$的正方形分割图片,然后存放每个方块的颜色,则其中一个方块可能为 假设图片是 $1024*768$ 尺寸,那么我们将得到一个矩阵有 1024行,768列, $$ A=\left[\begin{array}{llllll} 0 & 1 & 1 & 1 & 1 &... & 1 \\ 0 & 1 & 1 & 1 & 1 & ...& 1 \\ 1 & 0 & 1 & 1 & 1 & ...& 1 \\ 1 & 0 & 1 & 1 & 1 & ...& 1 \\ 1 & 1 & 0 & 1 & 1 & ...& 1 \\ 1 & 1 & 0 & 1 & 1 & ...& 1 \end{array}\right] $$ 这样一个大矩阵是无法直接处理的,我们需要把大矩阵分解为一个个小矩阵。 我们已经在 [序言](https://kb.kmath.cn/kbase/detail.aspx?id=1324)里介绍了求解$A^{99}$的方法。 > 已知矩阵 $\boldsymbol{A}=\left(\begin{array}{ccc}0 & -1 & 1 \\ 2 & -3 & 0 \\ 0 & 0 & 0\end{array}\right)$. 求 $\boldsymbol{A}^{99}$. 在这里 [这里](https://kb.kmath.cn/kbase/detail.aspx?id=1324) 已经体验了特征值的强大,但是这里有一个限制:必须是方阵,所以需要进一步扩展。 首先回顾下特征值和特征向量的定义如下: $$ A x=\lambda x $$ 其中 $A$ 是一个 $n \times n$ 矩阵,$x$ 是一个 $n$ 维向量,则 $\lambda$ 是矩阵 $A$ 的一个特征值,而 $x$ 是矩阵 $A$ 的特征值 $\lambda$ 所对应的特征向量。 求出特征值和特征向量有什么好处呢?就是我们可以将矩阵A特征分解。如果我们求出了矩阵A的 n 个特征值 $\lambda_1 \leq \lambda_2 \leq \ldots \leq \lambda_n$ ,以及这 $n$ 个特征值所对应的特征向量 $w_1, w_2, \ldots, w_n$ , 那么矩阵A就可以用下式的特征分解表示: $$ A=W \Sigma W^{-1} $$ 其中W是这 $n$ 个特征向量所张成的 $n \times n$ 维矩阵,而 $\Sigma$ 为这 $n$ 个特征值为主对角线的 $n \times n$ 维矩阵。 一般我们会把 W 的这 n 个特征向量标准化,即满足 $\left\|w_i\right\|_2=1$ ,或者 $w_i^T w_i=1$ ,此时 W 的 n 个特征向量为标准正交基,满足 $W^T W=I$ ,即 $W^T=W^{-1}$ ,也就是说 W 为酉矩阵。 这样我们的特征分解表达式可以写成 $$ A=W \Sigma W^T $$ 注意到要进行特征分解,矩阵A必须为方阵。 那么如果A不是方阵,即行和列不相同时,我们还可以对矩阵进行分解吗?答案是可以,此时我们的SVD登场了。 ## SVD的定义 SVD(singular value decomposition)也是对矩阵进行分解,但是和特征分解不同,SVD并不要求要分解的矩阵为方阵。假设我们的矩阵A是一个 $m \times n$ 的矩阵,那么我们定义矩阵A的SVD为: $$ A=U \Sigma V^T $$ 其中 $U$ 是一个 $m \times m$ 的矩阵,$\Sigma$ 是一个 $m \times n$ 的矩阵,除了主对角线上的元素以外全为 0 ,主对角线上的每个元素都称为奇异值,$V$ 是一个 $n \times n$ 的矩阵。 $U$ 和 $V$ 都是酉矩阵,即满足 $U^T U=I, V^T V=I$ 。下图可以很形象的看出上面SVD的定义:  那么我们如何求出SVD分解后的U,$\Sigma, V$ 这三个矩阵呢? 如果我们将 A 的转置和 A 做矩阵乘法,那么会得到 $n \times n$ 的一个方阵 $A^T A$ 。既然 $A^T A$ 是方阵,那么我们就可以进行特征分解,得到的特征值和特征向量满足下式: $$ \left(A^T A\right) v_i=\lambda_i v_i $$ 这样我们就可以得到矩阵 $A^T A$ 的 n 个特征值和对应的 n 个特征向量 V 了。将 $A^T A$ 的所有特征向量张成一个 $n \times n$ 的矩阵 V ,就是我们SVD公式里面的 V 矩阵了。一般我们将 V 中的每个特征向量叫做 A的右奇异向量。 如果我们将 A 和 A 的转置做矩阵乘法,那么会得到 $m \times m$ 的一个方阵 $A A^T$ 。既然 $A A^T$ 是方阵,那么我们就可以进行特征分解,得到的特征值和特征向量满足下式: $$ \left(A A^T\right) u_i=\lambda_i u_i $$ 这样我们就可以得到矩阵 $A A^T$ 的 m 个特征值和对应的 m 个特征向量 u 了。将 $A A^T$ 的所有特征向量张成一个 $m \times m$ 的矩阵 U ,就是我们SVD公式里面的U矩阵了。一般我们将U中的每个特征向量叫做 A 的左奇异向量。 U和V我们都求出来了,现在就剩下奇异值矩阵没有求出了. 由于 $\Sigma$ 除了对角线上是奇异值其他位置都是 0 ,那我们只需要求出每个奇异值 $\sigma$ 就可以了。 我们注意到: $$ A=U \Sigma V^T \Rightarrow A V=U \Sigma V^T V \Rightarrow A V=U \Sigma \Rightarrow A v_i=\sigma_i u_i \Rightarrow \sigma_i=A v_i / u_i $$ 这样我们可以求出我们的每个奇异值,进而求出奇异值矩阵上。 上面还有一个问题没有讲,就是我们说 $A^T A$ 的特征向量组成的就是我们 SVD 中的 V 矩阵,而 $A A^T$ 的特征向量组成的就是我们SVD中的U矩阵,这有什么根据吗?这个其实很容易证明,我们以 $V$ 矩阵的证明为例。 $$ A=U \Sigma V^T \Rightarrow A^T=V \Sigma U^T \Rightarrow A^T A=V \Sigma U^T U \Sigma V^T=V \Sigma^2 V^T $$ 上式证明使用了 $U^U=I, \Sigma^T=\Sigma$ 。可以看出 $A^T A$ 的特征向量组成的的确就是我们SVD中的 V 矩阵。类似的方法可以得到 $A A^T$ 的特征向量组成的就是我们SVD中的 U 矩阵。 进一步我们还可以看出我们的特征值矩阵等于奇异值矩阵的平方,也就是说特征值和奇异值满足如下关系: $$ \sigma_i=\sqrt{\lambda_i} $$ 这样也就是说,我们可以不用 $\sigma_i=\frac{A v_i}{u_i}$ 来计算奇异值,也可以通过求出 $A^T A$ 的特征值取平方根来求奇异值。 3.SVD计算举例 这里我们用一个简单的例子来说明矩阵是如何进行奇异值分解的。我们的矩阵 $A$ 定义为: $$ A =\left(\begin{array}{ll} 0 & 1 \\ 1 & 1 \\ 1 & 0 \end{array}\right) $$ 首先求出 $A^T A$ 和 $A A^T$ $$ \begin{gathered} A ^{ T } A =\left(\begin{array}{lll} 0 & 1 & 1 \\ 1 & 1 & 0 \e
免费注册看余下 50%
非VIP会员每天15篇文章,开通VIP 无限制查看
上一篇:
过渡矩阵
下一篇:
奇异值分解(SVD)介绍和可视化理解
本文对您是否有用?
有用
(
1
)
无用
(
0
)
更多
学习首页
数学试卷
同步训练
投稿
题库下载
会议预约系统
数学公式
关于
科数网是专业专业的数学网站 版权所有 本站部分教程采用AI辅助生成,请学习时自行鉴别
如果页面无法显示请联系 18155261033 或 983506039@qq.com