郭震 AI公众号:郭震AI

22 奇异值分解之奇异值的计算

发布日期:

最近更新:

分类: AI线性代数小白

预计阅读: 4 分钟

阅读次数: 0

系列进度

AI 线性代数必备 · 第 22 / 26

预计阅读4 分钟
结构重点6 个
图文要点6 张
正文规模1.9k 字

整理说明

这篇内容怎么整理

郭震 · 2026-06-04

独立整理围绕 6 个结构重点拆成环境、步骤、验证点和常见误区,尽量让读者能照着复现。
图文对照保留 6 张和配置、流程、判断结果有关的图片,方便快速定位正文重点。
持续校对工具、模型和命令变化较快,后续优先修正入口、参数和风险提醒。

阅读路线

先按这条路线读

先抓住主线,再回到代码、配置和图文细节,读起来会更稳。

图文要点

先看本文图文节点

按图先建立主线,再跳回正文核对步骤、配置和判断标准。

奇异值的计算概念图查看大图
奇异值的计算概念图

手算奇异值可以从 A^T A 的特征值入手。工程里通常交给数值库,但理解来源能帮助读懂结果。

奇异值的计算核对图查看大图
奇异值的计算核对图

我会确认奇异值非负且通常按降序排列。顺序错了,低秩近似也会跟着错。

在上一篇中,我们讨论了奇异值分解(SVD)的概念,理解了为何它在数据科学和机器学习中如此重要。本篇将深入探讨如何计算奇异值,帮助你掌握这一核心技术,为后续的应用打下坚实的基础。

1. 理论基础

奇异值分解是一种矩阵分解方法,将任意矩阵AA分解为三个矩阵的乘积。具体地说,若AA是一个m×nm \times n的矩阵,则可以表示为:

奇异值计算判断卡查看大图
奇异值计算判断卡

计算奇异值时,先看矩阵转置乘积、特征值、开方关系、奇异向量、维度变化和数值稳定性。

A=UΣVTA = U \Sigma V^T

其中:

  • UU是一个m×mm \times m的正交矩阵;
  • Σ\Sigma是一个m×nm \times n的对角矩阵,其中包含了AA的奇异值;
  • VTV^TVV的转置,VV是一个n×nn \times n的正交矩阵。

奇异值是矩阵AA在某种意义上的“特征”,它们反映了AA的结构特征和信息。从Σ\Sigma中提取奇异值,方法如下:

  1. 计算ATAA^T AAATA A^T
  2. 获取这两个矩阵的特征值。
  3. 将特征值开平方得到奇异值。

2. 奇异值的计算步骤

为了获得奇异值,我们可以遵循这些步骤:

步骤1:计算ATAA^T A

给定一个矩阵AA,首先计算其转置矩阵ATA^T,然后计算乘积ATAA^T A。这个结果是一个n×nn \times n的矩阵。

步骤2:求特征值

然后,我们需要计算ATAA^T A的特征值λi\lambda_i。如果AA是一个m×nm \times n的矩阵,ATAA^T A将是一个n×nn \times n的矩阵,可以使用求解特征多项式的方法来找出特征值。

步骤3:计算奇异值

奇异值sis_i是特征值的非负平方根:

si=λis_i = \sqrt{\lambda_i}

对所有的特征值λi\lambda_i执行这一操作,得到的就是所有的奇异值。

3. 示例案例

我们通过一个实际的矩阵来演示如何计算奇异值。设矩阵AA为:

线性代数阅读地图卡查看大图
线性代数阅读地图卡

《奇异值分解之奇异值的计算》可以按“场景、概念、动作、结果”来读。先把这四件事对齐,再回到正文里的参数、代码或流程。

A=(123456)A = \begin{pmatrix} 1 & 2 \\ 3 & 4 \\ 5 & 6 \end{pmatrix}

计算步骤详解

  1. 计算ATAA^T A

    AT=(135246)A^T = \begin{pmatrix} 1 & 3 & 5 \\ 2 & 4 & 6 \end{pmatrix}

    所以,

    ATA=(135246)(123456)=(35444456)A^T A = \begin{pmatrix} 1 & 3 & 5 \\ 2 & 4 & 6 \end{pmatrix} \begin{pmatrix} 1 & 2 \\ 3 & 4 \\ 5 & 6 \end{pmatrix} = \begin{pmatrix} 35 & 44 \\ 44 & 56 \end{pmatrix}
  2. 求特征值:特征值λ\lambda需要解这个方程:

    det(ATAλI)=0\text{det}(A^T A - \lambda I) = 0

    这里II是单位矩阵,计算可以得到特征值为:

    λ1=91,λ2=0\lambda_1 = 91, \quad \lambda_2 = 0
  3. 计算奇异值:

    s1=λ1=919.54s_1 = \sqrt{\lambda_1} = \sqrt{91} \approx 9.54 s2=λ2=0=0s_2 = \sqrt{\lambda_2} = \sqrt{0} = 0

最终,矩阵AA的奇异值为9.54和0。

4. Python代码实现

通过Python库NumPy,我们可以轻松实现这些计算,代码如下:

import numpy as np

# 定义矩阵A
A = np.array([[1, 2], [3, 4], [5, 6]])

# 计算奇异值
U, s, VT = np.linalg.svd(A)

# 输出奇异值
print("奇异值:", s)

运行上述代码将输出:

奇异值: [9.52551809 0.51449576]
奇异值分解之奇异值的计算应用复盘卡查看大图
奇异值分解之奇异值的计算应用复盘卡

学完《奇异值分解之奇异值的计算》后,不妨换一个自己的场景试一次,重点观察输入、处理和输出是否能对应起来。

奇异值分解之奇异值的计算应用检查卡查看大图
奇异值分解之奇异值的计算应用检查卡

如果想把《奇异值分解之奇异值的计算》用到自己的任务里,可以先缩小场景,只验证一个最关键的判断点。

小结

本篇文章详细介绍了奇异值的计算过程,包括理论基础和实际案例,此外还用Python实现了计算奇异值的代码。这一知识对于理解奇异值分解及其应用至关重要。在下一篇中,我们将探讨奇异值分解在实际中的应用场景,例如在推荐系统和图像处理中的使用。

请持续关注我们的系列教程,深入掌握线性代数在AI中的重要性!

继续阅读

从这篇继续找到相关教程

AI 教程总索引

常见问题

读前先确认这三点

奇异值分解之奇异值的计算适合谁读?

这是 AI 线性代数必备 系列第 22 / 26 篇,适合正在学习AI 线性代数必备,并且需要把概念落到操作步骤或判断标准里的读者。

读这篇AI 线性代数必备教程要多久?

按中文技术文章阅读速度估算,通读大约 4 分钟;如果要跟着复现,建议把命令、配置和结果检查分开做。

这篇文章里的图文节点怎么用?

正文里有 6 个图文节点,可以先用它们抓住流程、配置和判断点,再回到对应段落细读。

分享文章

转发到常用平台

微信/朋友圈可先复制链接

相关教程

AI 教程总索引

继续阅读

继续找到相关 AI 教程

返回栏目

Reader Messages

读者留言

有问题、补充资料或实测结果,可以直接留下。这里不需要登录。

最多 800 字

为了防刷,每条留言会做长度、链接数量和提交频率限制。

0/800

留言列表

0
正在加载留言...