深度学习基础:线性代数(2)_奇异值分解及numpy、scipy实现

奇异值分解的意义

除了特征分解外,还有另一种分解的方法,称为奇异值分解(SVD),它可以将矩阵分解成奇异值奇异向量。相对特征分解来说,奇异值分解的应用更加广泛,每个实数矩阵都有一个奇异值分解,但不一定有特征分解。例如:非方阵的矩阵没有特征分解,但有奇异值分解。

奇异值分解

将矩阵分解成三个矩阵的乘积:

$$A = UDV^T$$

其中$A$是一个$m \times n$的矩阵,$U$是一个$m \times m$的矩阵,$D$是一个$m \times n$的矩阵,而$V$是一个$n \times n$的矩阵。而且$U$和$V$是正交矩阵,$D$是对角矩阵。

矩阵$D$对角线上的元素被称为矩阵$A$的奇异值,矩阵$U$的列向量称为左奇异向量,矩阵$V$的列向量称为右奇异向量

奇异值和奇异向量的含义

矩阵$A$的左奇异向量是$AA^T$的特征向量,矩阵$A$的右奇异向量是$A^TA$的特征向量,$A$的非零奇异值是矩阵$AA^T$或$A^TA$的特征值的平方根。

Python实现

Numpy

import numpy as np

A = np.array([[1,2,3,4],
            [5,6,7,8],
            [9,10,11,12]])
# 返回三个矩阵
np.linalg.svd(A)

Scipy

import numpy as np
import scipy as sp
from scipy import linalg

A = np.array([[1,2,3,4],
            [5,6,7,8],
            [9,10,11,12]])
# 返回奇异值
print(linalg.svdvals(A))
# 返回三个矩阵
print(linalg.svd(A))

版权声明:
作者:Joe.Ye
链接:https://www.appblog.cn/index.php/2023/04/01/fundamentals-of-deep-learning-linear-algebra-singular-value-decomposition-and-implementation-of-numpy-and-scipy/
来源:APP全栈技术分享
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
打赏
海报
深度学习基础:线性代数(2)_奇异值分解及numpy、scipy实现
奇异值分解的意义 除了特征分解外,还有另一种分解的方法,称为奇异值分解(SVD),它可以将矩阵分解成奇异值和奇异向量。相对特征分解来说,奇异值分解的应用更……
<<上一篇
下一篇>>
文章目录
关闭
目 录