目录
SVD技巧第1部分
all right。我们来看一下解。这里我假设只有两点,点1和点n中间有很多点。okay。我得到矩阵A乘以m等于0(如图1)。矩阵A有多大? Well,它有12个列(如图2)。right? 因为有12 ms(如图3),
1 2 3
它有多少行? 它有2乘以n, n是点的个数。所以它是一个2n×12的矩阵(如图)。M就是M×1的向量,这是长度为2n的0向量。okay? 现在我们来解这个。一步一步来。all right。
这就是我们的目标,right? 我们说过,我们想要一个最小化Am的单位向量。使Am最小的m的单位向量。我们来做奇异值分解(如图)我假设你们之前见过,至少在某些地方见过。但是这个想法是任何矩阵都可以分解成这种UDV转置格式,其中V是真正的正交矩阵。所以在我们的例子中,它可能是一个12×12矩阵。U是一个更大的矩阵。它说,正交,但我应该,可以更精确。每一列都是正交的,在这个例子中是2n×12。最重要的是,D是一个对角矩阵。所以它只有对角线上的值按照绝对值递减的顺序来写。从最大的D到最小的,all right? 所以我们要写A等于UDV转置。
所以最小化Am等于最小化UDV转置m,明白了吗? 到目前为止,除了使用Matlab中的奇异值分解代码之外,没有其他重要的事情。这是第一个有点棘手的部分,即UDV转置m的模等于DV转置m的模(如图1)。为什么? 这U只是单位向量。right? U和V也是由正交的单位向量组成的。所以它们相乘不会改变矩阵的大小,这就是为什么这些大小是相同的。这也是为什么m的模等于转置m的模(如图3)。
1 2
3
对于那些思考这些的人,V在这个特殊的例子中是正交的。在这种情况下,12×12矩阵。你可以把它想象成一个旋转矩阵。所以当你旋转一个向量时,你不会改变它的大小。所以m的模等于V转置m的模。这就意味着,我们不需要最小化UDV的转置m,我们只要最小化DV的转置m,而不是受制于m等于1,受制于V的转置m等于1。明白了吗?
SVD技巧第2部分
现在你可能会问,为什么要做这个变换? 这是为什么。我们来做一些很酷的替换。所以我们在最小化DV转置m,我们把y = v转置m代入。现在我们求Dy的最小值。根据y = 1的大小。right? 因为等于y。它的大小是1。okay。
所以y是一个单位向量。为什么? 为什么不呢? 不,没关系。因为它是。all right? 但是想想。all right? 在这里。记住,D是一个对角矩阵,它的元素是递减的。的最小值是多少? 什么时候是最小值? 当 y 把它所有的权值都放进去时,它就是最小值,记住y是单位向量,就在最后一个元素里,all right? 所以在D是递减阶对角线矩阵的前提下,求Dy最小值的最佳y就是0 0 0 0 1,okay。这是使Dy最小化的 y 。既然我们定义 ,那么。为什么?
记得我说过V是正交的。right。所以当V正交时,它的转置就是它的逆。所以如果,它的逆就是V,所以。现在我们已经用 y 表示出了 m,但是 V 和 y,但是记住。Y 等于0,0,0...一直到0,1 。这就意味着这个方程只是把V中的最后一列提出来。All right,因为如果我取一个矩阵,我把它乘以一个向量它从0到1。这个1乘以最后一列。我把最后一列提出来。
SVD技巧第3部分
So,是最后一列。这里的东西,只是因为我们之前所说的A,这些奇异值,即d,Well,A的奇异值的平方根是 和 V的列是A的转置矩阵的特征向量。所以,我可以给你们看这个,它实际上很漂亮,我想说,但是如果我把它写出来,因为A是我们知道的写成UDV转置。okay。A转置A,就是这个转置,就是VD转置U转置。Well,okay,U是一个正交向量(如图),所以U的转置也是U的逆,所以这是一个恒等式,okay,这就消去了。D转置D,Well,D是一个对角矩阵,所以D转置D就是,我把它叫做D平方,它就是平方的值,okay? V转置V,我只是写A转置A等于VD方V转置,这就是特征分解(eigen-decomposition)的方程,V是,A转置A的特征向量。通过拉出最后一个,我拉出特征向量A转置A的最小值。
回顾一下。已知,我们有对于某个长A,我们要做的是找到A转置A的特征向量具有最小的特征值,这是我们的m,这是为我们创建校准矩阵的一组值。cool。
有些代码不应该被忘记,也没有源代码不应该被记住。