当前位置: 首页 > news >正文

线性代数--AI数学基础复习

原文链接:Github-Funny_Mr_Zhi GNN_playground

参考:麻省理工公开课 线性代数 MIT Linear Algebra

Chapter1

可以带着问题去读,线性代数到底是什么,矩阵又是什么。尽管深入学习数学需要一种抽离出现实和直观理解的高度抽象思维,前期利用一些具体的现实映射示例有助于更好地理解和接受一套理论。

最终结论:矩阵分解A=LU是高斯消元求解n元方程组的抽象表示,高斯消元求解也是矩阵分解的一种具体现实映射,它帮助我们初步了解矩阵的妙用与可能的理解方式,为后续更广泛而奇妙的应用打下基础!(看到第一章最后就可以理解这句话,理解了这句话这一章也就学会了)

需要重点理解的用红色大字体标出

Class 1

Class 1:Explanation of the geometic equation system 方程组的几何解释

基本问题:N linear equations , n unknowns. 求解N个线性等式的n个未知数

三种视角

  • Row picture
  • column picture
  • matrix from

以二元一次方程组为例
2 x − y = 0 − x + 2 y = 3 \begin{align} 2x - y = 0\\ -x+2y = 3 \end{align} 2xy=0x+2y=3
用线性代数表示
[ 2 − 1 − 1 2 ] [ x y ] = [ 0 3 ] \left[ \begin{array}{ccc} 2 & -1 \\ -1 & 2 \end{array} \right] \left[ \begin{array}{ccc} x\\y \end{array} \right] = \left[ \begin{array}{ccc} 0\\3 \end{array} \right] [2112][xy]=[03]

  • Row picture看,是二维空间的两条直线,交点即为解
  • column picture看,是二维空间的两个向量,通过linear combination线性组合合成(0, 3)
  • Matrix form看,计算左侧结构,可以当成矩阵乘法,也可以分解为column picture求解

具体解法中,图解只能在低维度使用,高维度不够直观,会用系统性的消元法解。这里重点关注线性组合,也就是理解列视角的看问题的方式。

一个常见的基本问题:

  • Can I solve Ax = b for every b
  • or say: Do the linear combinations of the columns fill N-D space
  • 这个问题的答案与奇异\非奇异,可逆\非可逆有关

Class 2

elimination消元法解方程组

以三元一次方程组为例,一个自然的想法是利用消元法求解。

对应到矩阵上 A x = b Ax = b Ax=b,对角线上的元素称为主元,消元最终目的是主元下方的元素全部为0,且主元不为零。满足条件后,说明求解成功,通过回代可以求出所有变量的解。

  • 从第一行开始,若当前主元行的主元不为零,则讲该行整体叠加到下面的行,确保主元下方元素都为0
  • 若当前行主元为零,则可以交换主元行和其它行的位置,再次尝试第一步
  • 逐行处理,若对角线主元全部非零且主元下方全部为零(上三角矩阵),则求解成功
    • 回代:在所有过程中间矩阵右侧补充b列,称为argumented matrix增广矩阵
    • b同步叠加操作,结果从最后一行开始向上逐行解出变量值
  • 若无法满足上一步的要求,求解失败

该处理步骤可以和直接在方程组上进行消元的操作一一对应,直接目的就是消元。

从另一个角度理解:如何看待矩阵运算(一种行列变换)

|a b c| |x|      |a|     |b|     |c|
|d e f| |y| =  x |d| + y |e| + z |f|    //右侧列分解列叠加
|g h i| |z|      |g|     |h|     |i||a b c|    
|x y z| |d e f| = x |a b c| + y |d e f| + z |g h i|  //左侧行分解行叠加|g h i||a b|   |0 1| 
|c d|   |1 0|   等效于对左侧矩阵进行列置换,右侧变换矩阵进行列变换|0 1|   |a b|   
|1 0|   |c d|   等效于对右侧矩阵进行行置换,左侧变换矩阵进行行变换|1 0|   |a   b|    |a    b|
|2 1|   |-2a d|  = |0 d+2b|
等效于对右侧矩阵进行行变换,第一行不变,第二行为二倍第一行叠加过来

深入理解矩阵乘与行列变换的对应关系!

有了上面的理解,消元无非是行变换,也就是在A左侧不断乘上新的矩阵达到消元的目的。即消元过程可表示为 E x … ( E 1 A ) = U E_{x}\dots(E_{1}A) = U Ex(E1A)=U 其中U为上三角矩阵。(这里注意,矩阵乘法有结合律,但没有交换律)

进一步可以思考逆矩阵的概念,从上面的理解角度,就是通过逆变换消除原来变换的影响

|1  0| |1   0| |a b|
|3  1| |-3  1| |c d|
以上两个左侧矩阵为逆变换,先是R2 = R2 - 3R1再是R2 = R2 + 3R1,还原回A

Class 3

  • Matrix mutiplication
  • Inverse of A
  • Gauss-Jordan find A − 1 A^{-1} A1

首先学习矩阵乘法的四种计算方式,结果是一样的,四种方式事实上从四个角度理解矩阵乘法

矩阵乘法

对于矩阵乘法 A B = C AB = C AB=C

  • 方式一: C i j = ( R o w j o f A ) ⋅ ( C o l i o f B ) C_{ij} = (Row_j\quad of\quad A)\quad ·\quad ( Col_i\quad of\quad B) Cij=(RowjofA)(ColiofB)

C i j = ∑ k = 1 n a i k b k j C_{ij} = \sum_{k=1}^n a_{ik}b_{kj} Cij=k=1naikbkj

  • 方式二:C的每一列由A的列的线性组合得到,C的第k列由B的第K列与A矩阵定义的线性组合得到
  • 方式三:C的每一行由B的行的线性组合得到,C的第k行由A的第K行与B矩阵定义的线性组合得到
  • 方式四: C = ∑ k = 1 n ( ( C o l k o f A ) ⋅ ( R o w k o f B ) ) C = \sum_{k=1}^{n}((Col_k\quad of \quad A) · (Row_k\quad of\quad B)) C=k=1n((ColkofA)(RowkofB))

这种理解方式是从多个视角观察矩阵乘法时到底发生了什么。
从AB角度看,可以拆分为行列乘、矩阵与列乘、行与矩阵乘、列行乘
从C角度看,可以认为是一次计算一个元素、一次计算一列,一次计算一行,一次计算整个矩阵的部分分量

矩阵的逆与Gauss-Jordan

对于一个矩阵A,定义A的逆为 A − 1 A^{-1} A1
A − 1 A = I = A A − 1 A^{-1}A = I = AA^{-1} A1A=I=AA1

关注两个问题:A的逆是否存在,以及如何求A的逆(此时可以与解方程组联系起来)

定理:若能找到非零向量x使得, A x = 0 Ax=0 Ax=0,则A不可逆

反正法解释:若存在A的逆, A x = 0 Ax=0 Ax=0说明 I x = A − 1 0 = 0 Ix = A^{-1}0 = 0 Ix=A10=0,若x非零显然矛盾,单位矩阵乘非零向量不可能为零。

Gauss-Jordan目的是一次解多个N元方程组

|1 3|  |a c| = |x y|
|2 7|  |b d|   |i j|    可以理解为解两组方程第一组是:
|1 3|  |a| = |x|
|2 7|  |b|   |i|        第二组由B和C的另外一列构成,省略解法为将原A和C拼接,写成增广矩阵|A C|
|1 3 x y|
|2 7 i j|
然后对左侧A部分进行消元
|1 3 x    y   |
|0 1 i-2x j-2y|         
以上是Guass做法,Jordan继续消除A对角线以外其它元素(矩阵内运算替代回代过程)
|1 0 -3i+7x -3j+7y|
|0 1 i-2x   j-2y  | 
这样就解出a, b和c, d了求逆是可以利用Gauss-jordan,令右侧C=I
|A I|进行Gauss-jordan计算求解
得到|I E|这里,由于EA=I,则可以得出E即为要求解的A的逆

到这里为止,线性代数可以看作对于 A B = C AB = C AB=C中,知道任意两个矩阵,求另一个矩阵的范畴。

对于AB = Col of C,可以等效为求解一个N元方程。这是矩阵乘法和多元方程求解的对应关系。

通过矩阵分块和矩阵运算在等式两侧同时乘上一个矩阵,等式仍成立(以及矩阵运算分配律、结合律)可以通过一些有趣的方法实现系统性的计算过程。

理解Gauss-Jordan算法中用到的矩阵运算技巧,以及每一个运算过程对应的实际含义

Class4

  • 矩阵求逆和转置的公式
  • 矩阵分解 A = LU
  • 矩阵分解复杂度
  • 矩阵置换的组合与群

矩阵求逆和

( A B ) − 1 = B − 1 A − 1 ( 1 ) (AB)^{-1} = B^{-1}A^{-1}\quad (1) (AB)1=B1A1(1)
前提是在A,B有逆。该公式较为容易理解,(AB)的逆应该与(AB)左乘右乘都为I, B − 1 A − 1 B^{-1}A^{-1} B1A1显然满足

( A T ) − 1 = ( A − 1 ) T ( 2 ) (A^T)^{-1} = (A^{-1})^T\quad (2) (AT)1=(A1)T(2)
以式子 ( A B ) T = B T A T (AB)^T = B^TA^T (AB)T=BTAT为基础, ( A − 1 ) T A T = ( A A − 1 ) T = I (A^{-1})^TA^T = (AA^{-1})^T = I (A1)TAT=(AA1)T=I,即 A T A^{T} AT的逆为 ( A − 1 ) T (A^{-1})^T (A1)T

矩阵分解

一种较为基础的分解:将A分解为L和上三角矩阵U

  • 在高斯消元法中,为了得到上三角矩阵 U U U,使用E与A相乘得到U。
  • 通常,E可以表示为若干步骤的行变换(若A可解的话)
    • e.g.对3x3矩阵,E可分解为 E 32 E 31 E 21 E_{32}E_{31}E_{21} E32E31E21,其中 E i j E_{ij} Eij表示E为在I的基础上,第i行j列非零的矩阵,即将j行叠加到i行以消除A中主元下方i行的元素的变换
  • 对于 E A = U EA = U EA=U可以写成 A = E − 1 U A = E^{-1}U A=E1U,这里 E − 1 E^{-1} E1就是我们要求的L
  • 通常 E − 1 E^{-1} E1写成若干 ( E i j ) − 1 (E_{ij})^{-1} (Eij)1相乘的形式,若采用这种分开写的形式和行变换视角理解矩阵乘和求逆计算,求解L的整个过程不需要任何演算,全部心算即可完成。

以下为示例

以3x3矩阵为例
假设E = E32 E21 (A31天然为0, 简化说明过程)
不妨令|1 0 0| |1 0 0|
E = |0 1 0|*|4 1 0||0 3 1| |0 0 1|
则L = E32的逆 * E21的逆|1  0 0| |1  0 0|
L = |-4 1 0|*|0  1 0||0  1 1| |0 -3 1|  利用行变换思路理解求逆,直接加负号就行|1  0 0|
L = |-4 1 0||0 -3 1|  利用行变换思路求矩阵乘,很快

对于求L的过程,如果严格按照分解E的过程来写,并从行变换角度理解矩阵求逆和矩阵乘法。整个过程会很简单。因为过程中出现的所有矩阵求逆和矩阵乘法的结果从行变换的角度来看都可以一眼看出结果

由此再观察矩阵分解式子: A = L U A = LU A=LU。我们关注的就只是E代表的矩阵列表,得到这个列表后只需求逆,然后逆序相乘即可。

矩阵分解复杂度分析

每一次求加法或减法视为一次计算

对于n*n的矩阵

  • 第一次讲(1, 1)主元下的元素全部消为0,涉及下面(n-1)行的叠加计算,共(n*n-1)次计算,近似为 n 2 n^2 n2
  • 第二次为 ( n − 1 ) 2 (n-1)^2 (n1)2,后续以此类推
  • 总共需要 n 2 + ( n − 1 ) 2 + … 1 2 n^2 + (n-1)^2 + \dots 1^2 n2+(n1)2+12次计算,利用微积分知识可近似为 1 / 3 n 3 1/3n^3 1/3n3

该矩阵分解的过程事实上是在模拟高斯消元的过程,对于右侧b的变化其复杂度可以近似为 n 2 n^2 n2

矩阵置换的组合与群

对于一个n*n的矩阵,行(列)置换共有n(n-1)种可能

由于置换组合已经覆盖了所有可能的置换方式,所有置换组合相乘或取逆,其结果仍是一种置换,也就仍是置换的一种。这种不论如何计算结果仍在原先集合内的性质,比较类似群的概念。

第一章小结

至此第一章完结,从最开始的解n元方程组入手,逐步引入了矩阵的概念

认识矩阵有多种方式,矩阵也有很多奇妙的性质。通过矩阵的运算,也可以理解为矩阵的变换,我们从一个完全不同的角度尝试了n原方程组的求解。基本的矩阵分解的一种形式(A = LU)事实上模拟了高斯消元的过程,但整个过程种只包含非常简单的矩阵运算(或者更直观一点说是变换)。

本质上我们做的事还是求解n元方程组,但是矩阵用一种高度概括和抽象的视角抽离出问题求解的关键所在,并用优雅且简单的抽象变换完成了问题的求解。

矩阵的变换和直接在n原方程上进行加减叠加消元的每一步操作是可以完全对应上的。就是对问题本质的高度抽象。然而这是n元方程求解的全部,但不是线性代数的全部,矩阵的应用远不止这些。后续章节应该会更深入的理解线性代数及其用途。

矩阵分解A=LU是高斯消元求解n元方程组的抽象表示,高斯消元求解也是矩阵分解的一种具体现实映射,它帮助我们初步了解矩阵的妙用与可能的理解方式,为后续更广泛而奇妙的应用打下基础!

http://www.lryc.cn/news/581701.html

相关文章:

  • 深度学习6(多分类+交叉熵损失原理+手写数字识别案例TensorFlow)
  • Chunking-free RAG
  • Web-API-day2 间歇函数setInterval与事件监听addEvenListener
  • 【Note】《Kafka: The Definitive Guide》第四章:Kafka 消费者全面解析:如何从 Kafka 高效读取消息
  • Apache Spark 4.0:将大数据分析提升到新的水平
  • A O P
  • 金融级B端页面风控设计:操作留痕与异常预警的可视化方案
  • 深度学习篇---深度学习常见的应用场景
  • 容声W60以光水离子科技实现食材“主动养鲜”
  • [Qt] visual studio code 安装 Qt插件
  • FastAPI + Tortoise-ORM + Aerich 实现数据库迁移管理(MySQL 实践)
  • 深度学习 必然用到的 线性代数知识
  • 嵌入式 数据结构学习(五) 栈与队列的实现与应用
  • React Ref 指南:原理、实现与实践
  • 【PyTorch】PyTorch中torch.nn模块的卷积层
  • 零基础,使用Idea工具写一个邮件报警程序
  • Solidity——什么是状态变量
  • 计算机网络:(七)网络层(上)网络层中重要的概念与网际协议 IP
  • Kafka “假死“现象深度解析与解决方案
  • UI前端大数据可视化进阶:交互式仪表盘的设计与应用
  • 数据驱动实时市场动态监测:让商业决策跑赢时间
  • 【LeetCode 热题 100】240. 搜索二维矩阵 II——排除法
  • 黑马点评系列问题之实战篇02短信登录 利用资料中的mysql语句创建数据表时报错
  • 关于 栈帧变化完整流程图(函数嵌套)
  • Java 双亲委派机制笔记
  • QML 使用QtObject定义私有变量
  • 基于Flask和机器学习开发的米其林餐厅数据可视化平台
  • 单片机:STM32F103的开发环境搭建
  • 单片机物联网应用中的 Pogopin、串口与外围模组通信技术解析
  • ABP VNext + Tye:本地微服务编排与调试