学习笔记: 线性代数-高维投影和Gram-Schmidt过程

简介: 线性代数个人学习笔记

Gram-Schmidt过程: 对于给定空间的一组基,求取该空间的一组正交基的过程

从二维投影理解更高维的投影问题

上一章节学习了一维投影 ,也就是在一个二维空间中求取一个向量$\vec v$在$\vec u$向量上的投影$\vec p$的过程:
通过向量$\vec v$ 向向量$\vec u$作垂线,则垂足所在点的向量就是$\vec v$在$\vec u$上的投影$ \vec p = \frac {\vec u \cdot \vec v}{\vec u \cdot \vec u} \cdot {\vec u}$; 从而与向量$\vec u$正交的向量就可以表示为$\vec v - \vec p$;

求取三维空间的一组正交基

在三维空间中,给出空间的一组基$\vec u, \vec v ,\vec w$,但是它们不是一组正交基,也即不满足两两正交这样的条件,求取这个空间的一组正交基

首先,可以选择其中的两个向量,比如先把$\vec u, \vec v$处理成两个垂直的向量$\vec p_1 ,\vec p_2 $,然后再处理第三个向量$\vec w$,令$\vec w$垂直于$\vec p_1,\vec p_2$也即相当于找出$\vec w$的一个分量,这个分量垂直于$\vec p_1,\vec p_2$所在的平面。由高中的立体几何知识可知,由向量$\vec w$所在线段的末端向$\vec p_1,\vec p_2$所在的平面引一根垂线,相应的就会有一个垂足的位置,这样就可以在$\vec p_1 ,\vec p_2$所在的平面上以垂足的位置为末端作出向量$\vec w$在平面的投影向量$\vec p$,这就是所谓的高维投影,我们现在是在一个二维平面上进行投影:

那么通过投影向量$\vec p$,就可以得到与$\vec p_1 ,\vec p_2$正交的那个向量$\vec p_3 = \vec w - \vec p$,所以此时问题的核心变成了求取$\vec w$向量在$\vec p_1 ,\vec p_2$所在平面的投影向量$\vec p$;

投影向量$\vec p$的求取过程
由于$\vec p_1 ,\vec p_2$已经是一组正交向量,所以这两个向量就是$\vec p_1 ,\vec p_2$所在平面这样一个子空间的一组正交基,则向量$\vec p$可以由$\vec p_1 ,\vec p_2$的一组线性组合所表示$\vec p = k_1 \cdot \vec p_1 + k_2 \cdot \vec p_2$,在这里,直接求取$k_1, k_2$这两个系数显然不方便; 其实对于向量$\vec p$,它存在于$\vec p_1 ,\vec p_2$所在的平面,那么如果把$\vec p$这个向量向$\vec p_1$和$\vec p_2$作垂线,那么在$\vec p_1$和$\vec p_2$方向上就有两个分向量$\vec a$和$\vec b$,然后$\vec p = \vec a + \vec b$ , 然后求解向量$\vec p$的问题就变成了求解向量$\vec a$和$\vec b$:
$\to \vec p = k_1 \cdot \vec p_1 + k_2 \cdot \vec p_2 = \vec a + \vec b$

根据高中立体几何的知识可知

  • $\vec a$其实也是$\vec w$在 $\vec p_1$上的投影
  • $\vec b$其实也是$\vec w$在 $\vec p_2$上的投影

进而,求出$\vec w$在 $\vec p_1$和 $\vec p_2$上的投影就求出来$\vec a$和$\vec b$,进而就能够得到投影向量$\vec p$,最后构造出垂直于$\vec p_1 ,\vec p_2 $的第三个向量$p_3 = \vec w - \vec p = \vec w - \vec a - \vec b $。这个二维投影问题就变成了一维投影问题;

计算向量$\vec w$在 $\vec p_1,\vec p_2$上的投影,直接代入一维投影计算公式可得
$\vec a = \frac {\vec w \cdot \vec p_1}{\| {\vec p_1} \| ^2} \cdot \vec p_1 \ \ \ , \ \ \vec b = \frac {\vec w \cdot \vec p_2}{\| {\vec p_2} \| ^2} \cdot \vec p_2$

从而,$\vec p_3 = \vec w - \vec p = \vec w - \frac {\vec w \cdot \vec p_1}{\| {\vec p_1} \| ^2} \cdot \vec p_1 - \frac {\vec w \cdot \vec p_2}{\| {\vec p_2} \| ^2} \cdot \vec p_2 $


推广到$n$维度空间

如果已知一组基:$\vec v_1 , \vec v_2 , \cdots , \vec v_n$,相应的求出这组基所代表的$n$维空间的一组正交基的过程就是:
$\vec p_1 = \vec v_1$
$\vec p_2 = \vec v_2 - \frac {\vec p_1 \cdot \vec v_2}{\|{\vec p_1}\|} \cdot {\vec p_1}$
$\vec p_3 = \vec v_3 - \frac {\vec p_1 \cdot \vec v_3}{\|{\vec p_1}\|} \cdot {\vec p_1} - \frac {\vec p_2 \cdot \vec v_3}{\|{\vec p_2}\|} \cdot {\vec p_2}$
$\vec p_4 = \vec v_4 - \frac {\vec p_1 \cdot \vec v_4}{\|{\vec p_1}\|} \cdot {\vec p_1} - \frac {\vec p_2 \cdot \vec v_4}{\|{\vec p_2}\|} \cdot {\vec p_2} - \frac {\vec p_3 \cdot \vec v_4}{\|{\vec p_3}\|} \cdot {\vec p_3}$
...
$\vec p_n = \vec v_n - \frac {\vec p_1 \cdot \vec v_n}{\|{\vec p_1}\|} \cdot {\vec p_1} - \frac {\vec p_2 \cdot \vec v_n}{\|{\vec p_2}\|} \cdot {\vec p_2} - \frac {\vec p_3 \cdot \vec v_n}{\|{\vec p_3}\|} \cdot {\vec p_3} - \cdots - \frac {\vec p_{n-1} \cdot \vec v_n}{\|{\vec p_{n-1}}\|} \cdot {\vec p_{n-1}}$

以上算法过程称为"格拉姆-斯密特过程(Gram-Schmidt)"。这样一步步计算出来的正交向量组$\vec p_1 ,\vec p_2, \cdots , \vec p_n $就是$\vec v_1 , \vec v_2 , \cdots , \vec v_n$这组基所代表的空间的正交基,进一步的对正交基的向量进行归一化$\hat u = \frac {1}{\|\vec u\|} \cdot \vec u$就可以得到空间的一组标准正交基

目录
相关文章
|
存储 消息中间件 Kafka
ClickHouse 23.8 (LTS) 版本发布说明
以下是ClickHouse 23.8 (LTS) 版本一些亮点功能...这次发布涵盖了向量的算术运算、tuple的连接、cluster/clusterAllReplicas的默认参数、从元数据中计数(对于Parquet来说速度提高了5倍)、文件内跳数(对Parquet有巨大提升)、从对象存储中流式消费数据,等等
|
算法 Java Apache
运筹优化工具库介绍(二)
运筹优化工具库介绍
1806 0
Laplacian(拉普拉斯)边缘检测
【6月更文挑战第7天】Laplacian(拉普拉斯)边缘检测。
251 1
|
10月前
|
机器学习/深度学习 人工智能 PyTorch
Transformer模型变长序列优化:解析PyTorch上的FlashAttention2与xFormers
本文探讨了Transformer模型中变长输入序列的优化策略,旨在解决深度学习中常见的计算效率问题。文章首先介绍了批处理变长输入的技术挑战,特别是填充方法导致的资源浪费。随后,提出了多种优化技术,包括动态填充、PyTorch NestedTensors、FlashAttention2和XFormers的memory_efficient_attention。这些技术通过减少冗余计算、优化内存管理和改进计算模式,显著提升了模型的性能。实验结果显示,使用FlashAttention2和无填充策略的组合可以将步骤时间减少至323毫秒,相比未优化版本提升了约2.5倍。
450 3
Transformer模型变长序列优化:解析PyTorch上的FlashAttention2与xFormers
ly~
|
12月前
|
存储 监控 安全
如何评估云数据库的安全性?
评估云数据库安全性需关注基础架构与物理安全、网络基础设施、电力与冷却系统;访问控制与身份验证,包括多因素身份验证、基于角色的访问控制、身份验证强度;数据加密,涉及传输加密、存储加密、密钥管理;备份与恢复,涵盖备份策略、恢复测试、异地备份;安全审计与监控,如审计日志、实时监控、漏洞扫描与渗透测试;合规性,包括法规遵循、认证与合规证明;以及云服务提供商的信誉与技术支持。
ly~
369 4
|
开发工具 git
成功解决:Svnion not found. installat
这篇文章分享了作者在使用VSCode进行SVN版本控制时遇到的一个问题,即SVN插件提示找不到`svn.exe`的问题。原因是在安装SVN时没有选择客户端工具,导致没有`svn.exe`文件。文章提供了解决方案,包括重新安装SVN时选择客户端工具,并在VSCode的`setting.json`文件中配置SVN的路径。
成功解决:Svnion not found. installat
|
存储 分布式计算 负载均衡
什么是 HBase?其组件起什么作用?
【8月更文挑战第12天】
1617 4
|
XML 缓存 搜索推荐
RSS 解析:全球内容分发的利器及使用技巧
RSS(Really Simple Syndication)是一种 XML 格式,用于网站内容的聚合和分发,让用户能快速浏览和跟踪更新。RSS 文档结构包括 `<channel>` 和 `<item>` 元素,允许内容创作者分享标题、链接和描述。通过 RSS,用户可以定制新闻源,过滤不相关信息,提高效率。RSS 支持不同版本,如 RSS 0.91 和 RSS 2.0,其中 RSS 2.0 语法简单且广泛使用。RSS 提高网站流量,适用于新闻、博客、日历等频繁更新的站点。RSS 的历史始于 1997 年,至今仍无官方标准,但已成为内容共享的重要工具。
932 0
|
人工智能 搜索推荐 算法
爱思唯尔的KBS——模板、投稿、返修、接收的总结
爱思唯尔的KBS——模板、投稿、返修、接收的总结
|
Java 关系型数据库 MySQL
全网最实用的 IDEA Debug 调试技巧(超详细案例)
Debug 是程序员的开发神器,使用好了可以帮助我们非常高效的工作、学习、排查问题等。毫不客气的说,是决定我们进阶到更高层级的一个重要技能。 今天跟大家分享一下 IDEA 中 Debug 调试的各种奇技淫巧。
3450 0
全网最实用的 IDEA Debug 调试技巧(超详细案例)