简介:《线性代数及其应用》第五版英文原版教材的PDF电子书,作者为马里兰大学David C. Lay,并由Steven R. Lay与Judi J. McDonald参与修订。本书面向高校理工科与经管类学生、考研复习者,以及人工智能和机器学习方向的自学读者,可用它系统建立线性代数知识框架,并为后续矩阵计算、特征值分解等应用打好基础。资源包内仅有1个PDF文件,大小约10.6MB,为完整教材单册,便于在电脑、平板与手机上直接阅读和检索,也可按章节拆分打印。目前已有1510人学习下载。全书延续几何直观与数值计算并重的写法,从线性方程组与矩阵运算讲起,逐步推进到向量空间、特征值与特征向量、正交性、最小二乘,以及对称矩阵与二次型等内容,并配有大量例题、习题与章节复习,适合课前预习、课堂跟读以及考前查漏补缺。
1. 到底什么是线性代数:一排推子、一张表格和一门共同语言
调音台上有排推子,某个推子往上推一格,声音变化是固定的;同时推两个,听到的是两段声音叠在一起,彼此不干扰。线性代数研究的就是这类“叠加起来不打架”的关系:给每个输入配一个固定倍数,再把结果加起来。说得更直白些,线性代数是研究向量与线性变换的学科,而矩阵就是记录这种变换的一张表格——表格里第几行第几列填什么,决定了输入怎么变成输出。
它值得花时间搞懂,是因为它早已不是数学系的专属工具。手机拍照降噪、地图算路线、搜索排序、推荐系统、神经网络训练,底层都在反复做同一件事:把一堆数排成表,乘另一张表,再观察结果。这也是“人工智能 线性代数”被反复绑在一起说的原因,并非蹭热度。搞清这门语言,你以后看到公式里的Wx + b、A^T A、UΣV^T,就不会只剩一脸懵。
2. 为什么人工智能离不开线性代数:从一张图片的“数字身世”说起
2.1 进模型之前,一张图片先被拉成一列数字
一张 1024×1024 的彩色图片,在计算机内存里是三个 1024×1024 的表格,分别存红、绿、蓝三个通道的亮度。表格里每个格子是 0 到 255 之间的整数。模型并不认识“猫”这个概念,它只认识这些整数。于是第一步是把这个三维的块状结构按固定顺序摊平,拉直成一列 3,145,728 个数字——在线性代数的语境里,这就是一个 314 万维的向量。
文字和声音也一样。一句十来个词的句子,会被切成词元,每个词元查表换成一个几百维的向量,整句话就成了一串向量或者一张矩阵。一段一秒的音频,按每秒上万次采样变成一列数字。所有输入最终都会被翻译成同一种形式:数字排成的表。这一步不做完,后面任何运算都无从谈起。
理解这一点很关键,因为它解释了为什么线性代数是人工智能的公共底座。不管模型处理的是图、是文、是声音,进入运算层之后,处理的都是矩阵和向量。所谓“模型看懂了一张图”,本质上是这个数字表经过若干次变换之后,输出端得到了一个概率分布。中间没有任何神秘环节,全是加减乘除,只是数量级大到人脑无法手算。
2.2 矩阵乘法:训练和推理里最费力气的那件事
神经网络里最典型的一层叫全连接层,它做的事情一句话能说完:把输入向量乘以一个权重矩阵,加上一个偏置向量。写成式子就是y = Wx + b。这里W的形状是 m 行 n 列,x是 n 维列向量,乘出来的y是 m 维列向量。形状规则必须对上:W的列数要等于x的长度,否则乘法没有定义。这个规则看着像刁难人,其实是保证“每个输入特征都恰好被用一次”。
import numpy as np # 3 个样本,每个样本 4 个特征 X = np.random.randn(3, 4) # 4 个输入特征映射到 5 个输出特征 W = np.random.randn(4, 5) b = np.random.randn(5) Y = X @ W + b print(Y.shape) # (3, 5)这段代码把一批样本一次性乘过去:X是 3×4,W是 4×5,矩阵乘法的规则决定结果一定是 3×5,即 15 个输出值。b是长度为 5 的向量,靠广播机制加到结果的每一行上。主流深度学习框架里的线性层,剥掉自动求导那层壳,做的事情就是这几行。
为什么非得用矩阵乘,而不是老老实实写循环逐个算?因为矩阵乘法内部每一步互不依赖,可以同时开工。图形处理器有上万个计算核心,正好干这种活。一层 4096 个输入、4096 个输出的全连接层,权重矩阵就有 1677 万个数字,一次前向传播要完成 1677 万次乘法再求和。用循环写,等一晚上也跑不完一批数据;换成矩阵乘,几毫秒的事。所以矩阵乘法不只是数学上的简洁写法,它直接决定了训练跑得动还是跑不动。
还有一个常被忽略的点:矩阵乘法的顺序不能随便换。平时算数字,2×3 和 3×2 一样;矩阵不遵守这条。AB和BA往往不是同一个东西,有时候干脆算不了——A是 3×4、B是 5×3,AB根本没有定义。这背后是变换的叠加有先后之分,先旋转后拉伸,和先拉伸后旋转,出来的形状确实不一样。调模型结构的时候,形状对不上报的错,十有八九就出在这里。
2.3 最小二乘与奇异值分解:模型“差不多就行”的数学底盘
训练模型常被描述成“让预测接近真实”。这句话在数学上可以写得很具体:手上有一堆观测数据,想找一条曲线穿过它们,但数据点通常多于未知参数,方程数比未知数多,几乎不可能有精确解。比如 100 个测量点拟合一条直线y = a + bt,只有 a、b 两个未知数却有 100 个方程,这就是超定方程组。工程上的处理方式是退一步:不追求误差为零,转而找让误差平方和最小的那组参数,这套方法叫最小二乘。
import numpy as np # 100 个观测点,拟合 y = a + b*t t = np.linspace(0, 10, 100) y = 2.5 + 1.8 * t + np.random.randn(100) * 0.4 # 第一列常数项,第二列 t,构成 100×2 的设计矩阵 A = np.column_stack([np.ones_like(t), t]) coef, resid, rank, sv = np.linalg.lstsq(A, y, rcond=None) print(coef) # 约等于 [2.5, 1.8] print(rank) # 2,列满秩,解唯一A的每一行对应一个观测点,每一列对应一个待定系数。rank输出 2,说明两列线性无关,这种情况下最小二乘解唯一。如果输出小于 2,说明数据本身给不出足够信息,解有无穷多个,得额外加约束才能定下来。这个判断在真实项目里非常有用:模型训不动,有时不是学习率的问题,而是设计矩阵本身秩亏。
另一件常被提到的东西是奇异值分解,把一个矩阵拆成三个矩阵相乘的形式。它的实用价值在于压缩和降维:一张图像对应的矩阵,大部分信息集中在少数几个大的奇异值上,只保留前几十个,图像体积能小一大截,肉眼却看不出太大差别。推荐系统里把“用户×物品”的大表格拆开,也能从稀疏的评分里找出潜在偏好。这些方法在教材的第七、八章有完整推导。
3. 这本教材的骨架:十章内容是怎么排布的
3.1 前四章在铺一条路:把“解方程”翻译成“向量语言”
第一章从最熟悉的地方开始——线性方程组。但它很快做了一件关键的事:同一个问题给你三种说法。拿x₁ + 2x₂ = 3, 2x₁ + 5x₂ = 8举例,它可以是两个方程联立的方程组,可以是两个列向量的线性组合x₁(1,2) + x₂(2,5) = (3,8),也可以写成矩阵方程Ax = b。三种说法描述的是同一件事,教材在开头几节里反复在它们之间切换,目的是让读者形成条件反射:看到方程组就想到矩阵,看到矩阵就想到变换。
这个转换的价值在于,后两种视角能推广到无法画图的高维空间。两个变量可以画平面上的两条线,三个变量画空间里的三个平面,四个变量以上就画不出来了,但向量的语言照样成立。第二章讲矩阵运算、逆矩阵、可逆矩阵的等价刻画、分块矩阵、矩阵分解,还顺带讲了投入产出模型和计算机图形学里的应用。第三章行列式篇幅不长,重点是把行列式理解成“变换对面积或体积的缩放倍数”,而不是一堆展开公式。第四章向量空间是全书的分水岭:子空间、零空间、列空间、基、坐标、维数、秩、基变换,这些词一旦立住,后面几章就顺了。
一个容易被跳过的细节是行化简。它看起来只是机械操作——换行、乘一个数、把一行加到另一行——但它决定了后面几乎所有判断:方程组有没有解、解集是点还是线还是面、一组向量是否线性无关、矩阵的秩是多少。手算几遍行化简,比背十条定理更能建立直觉。
3.2 特征值、正交与奇异值分解:三块硬骨头绕不开
第五章讲特征值与特征向量。通俗地说,一个矩阵作用在大多数向量上都会改变方向,但有那么几个特殊方向,作用完方向不变,只是长度被拉长或压短,伸缩的倍数就叫特征值。这个性质在动力系统里极其有用:系统演化的长期趋势,往往由最大的那个特征值决定。教材里用离散动力系统、微分方程、迭代估计几个场景把它落实,包括一个关于斑点猫头鹰种群数量的经典例子。
第六章讲正交性。核心是正交投影和最小二乘:把一个点投影到某个子空间上,得到的最近点怎么算。格拉姆-施密特方法把一组线性无关的向量改造成互相垂直的一组,方便后续计算。这章的应用落在线性模型上,也就是前面说的拟合问题的完整版。
第七章把对称矩阵、二次型、约束优化和奇异值分解串在一起,应用指向图像处理和统计。对称矩阵有一条很漂亮的结论:它的特征值全是实数,特征向量可以选成互相垂直的。奇异值分解则是这套理论的通用版,任何矩阵都能拆,不只是方阵。
第八章换了视角,从代数转向几何:仿射组合、凸组合、超平面、多面体、曲线与曲面。这几节的内容在做优化和计算几何时会反复遇到。第九、十章以在线形式提供,讲矩阵博弈、线性规划的几何解法与单纯形法、对偶,以及有限状态马尔可夫链、稳态向量、状态分类和基本矩阵,配套案例涉及网页排序和体育统计。
3.3 应用案例不是装饰:它们决定了概念为什么长这样
这本教材每一章开头都放了一个引入案例,位置很讲究——先抛出真实问题,再引入概念。第一章用经济学和工程中的线性模型开场,第二章用飞行器设计中的计算机模型,第三章用随机路径与形变,第六章用卫星定位导航里的坐标系转换,第七章用多通道图像处理。这些案例的共同作用是回答“学这个干嘛”,而且答案不是许愿式的“以后会用到”,是当场就用。
第五版相比前几版有三处明显变化。一是补充了交互式电子版本,图可以拖动,矩阵可以现场改数字看结果,几何直观这块补得比较实在。二是增加了概念与证明类的练习,每个小节大多配了一道需要动脑推理而非套公式的题。三是习题更新比例超过四分之一,计算类题目换血较多。另外全书正文里穿插的例题和习题答案(奇数题)都在书后,便于自查。
章节顺序也值得说一句。它没有把应用集中到最后,而是每一章都带一点,这样读者在学概念的时候就知道它落在哪。缺点是前后依赖比较紧:第四章的秩没弄明白,第五章判断可对角化就会卡;第六章的正交投影不熟,第七章的奇异值分解基本读不下去。所以这本书不适合跳着读,适合顺着推。
4. 常见误区与易混概念:几个一混就踩坑的地方
4.1 易混点一:矩阵乘法不满足交换律
很多人刚学矩阵时,会本能地把矩阵当成“排成方阵的数字”,于是觉得AB和BA差不多。这是最常见的翻车起点。矩阵在这里代表的是一个变换,AB的意思是先做 B 再做 A,顺序换了,结果自然不同。
拿两个具体矩阵看。A = [[0,-1],[1,0]]表示逆时针旋转 90 度,B = [[2,0],[0,1]]表示水平方向拉伸两倍。算一下AB = [[0,-1],[2,0]],而BA = [[0,-2],[1,0]],两个结果长得就不一样。更要紧的是,非方阵相乘时,AB有定义而BA根本没定义,这跟数字乘法的经验完全不同。
区分方法很简单:把矩阵乘法读成“先……再……”,顺序读出来就对了。写代码时如果形状报错,先检查是不是把两个矩阵的顺序写反了,这比怀疑数据有问题更高效。
4.2 易混点二:行列式等于零,不等于方程组一定无解
行列式为零说明矩阵不可逆,很多人由此直接推出“方程组无解”。这个推理缺了一步。不可逆只意味着解不唯一,具体是无解还是无穷多解,还要看增广矩阵。
对比两个方程组就清楚了。第一个:x + y = 2和2x + 2y = 4,第二个方程就是第一个的两倍,系数矩阵行列式为零,但解有无穷多个,整条直线上的点都满足。第二个方程组:x + y = 2和2x + 2y = 5,系数行列式同样为零,但这两个方程互相矛盾,无解。
区分办法是看秩:系数矩阵的秩和增广矩阵的秩相等,就有解(此时秩小于未知数个数则有无穷多解);两者不相等,就无解。行列式只能回答“方阵可不可逆”,回答不了“方程组解的情况”,这是两件事。
4.3 易混点三:特征值和奇异值不是一回事
两个词都带“值”,都能做分解,都在降维和数据压缩里出现,混起来毫不奇怪。区别在于定义域:特征值只对方阵有定义,而且可能是复数;奇异值对任意形状的矩阵都有定义,一定是非负实数。
还是拿旋转 90 度那个矩阵举例。A = [[0,-1],[1,0]]把平面上的向量转四分之一圈,除了零向量,没有任何向量在变换后保持方向不变。它的特征值是 ±i,两个纯虚数,在实数范围内根本不存在。但它的奇异值都是 1,因为旋转不改变长度。这个例子最能说明问题:一个在实数里找不到特征值的矩阵,奇异值却好端端地存在。
区分记忆法:特征值回答“哪个方向不被转向”,所以必须是方阵,才谈得上方向不变;奇异值回答“最多能把向量拉长多少倍”,任何矩阵都能拉,所以不限形状。对称正定矩阵是个特例,此时两者数值相同,这也正是容易搞混的源头。
4.4 易混点四:秩、维数、基的大小不是同一个数
三个说法都用一个整数回答“有多大”,于是常被当成同义词。实际上它们描述的对象不同。秩是矩阵的列空间的维数,也就是行化简后主元的个数;维数是某个向量空间的“自由度”;基的大小则是一个具体的基里包含几个向量。
举个具体矩阵:A = [[1,2,3],[2,4,6]]。两行成比例,行化简后只有一个主元,秩为 1。列空间是一条直线,维数是 1。零空间的维数是列数减秩,等于 2。如果你想给这个零空间找一组基,那组基里必须正好有 2 个向量,不多不少。所以“基的大小”等于“维数”,但维数本身不是基,它是基里向量个数的那个数。
区分的关键是问自己:现在说的是一个矩阵,还是一个空间?矩阵谈秩,空间谈维数,基是一组具体的向量。三者关系由秩-零化度定理串起来:列数 = 秩 + 零空间维数。
4.5 易混点五:正交和线性无关长得像,但不是一回事
正交的向量一定线性无关,但线性无关的向量不一定正交。这条单向关系很多人记反。原因大概是两个词都给人“彼此独立、不重复”的感觉。
看两组向量。(1,1)和(1,-1)内积为零,互相垂直,它们也确实线性无关,这组两个条件都满足。换成(1,0)和(1,1),内积是 1,不垂直,但它们线性无关——你没法用其中一个的倍数表示另一个。所以正交是更强的条件,要求夹角正好 90 度;线性无关只要求谁也不在别人的张成空间里。
区分办法:算内积。内积为零就是正交,内积不为零但不共线就是线性无关。做数值计算时这个区别很实际,正交基算投影只需一次内积,非正交基要先解方程,工作量差一个量级。
5. 怎么读才不白读:从“会算”走到“会用”的路径
5.1 手算一遍,再让机器算一遍
现在随手就能调用现成的库把行列式、特征值、最小二乘全算出来,那还手算干什么?答案是建立可预测的直觉。手算过的 3×3 行列式,看到矩阵元素变大变小,你能预判行列式大概往哪个方向走;没手算过,只能等程序输出再看。
import numpy as np A = np.array([[2, 1, 0], [1, 3, 1], [0, 1, 2]]) print(np.linalg.det(A)) # 8.0 print(np.linalg.matrix_rank(A)) # 3 print(np.linalg.eigvals(A)) # 三个实数特征值这个例子可以手工验算:按第一行展开,det = 2×(3×2 − 1×1) − 1×(1×2 − 1×0) + 0 = 10 − 2 = 8,和程序输出对得上。秩为 3 说明三行线性无关,因此矩阵可逆,行列式非零。这个 3×3 矩阵还是对称的,所以特征值必然是实数,程序输出的结果能用手算的结论去校验。
建议的做法是:每学一个新概念,先挑一个二乘二或三乘三的小矩阵手算,再用代码复核。手算负责建立方向感,代码负责处理真实规模的数据。两边对不上,就是理解有缺口的地方,正好回去补。
5.2 证明题要不要啃:看你想走多远
第五版特意加强了概念与证明类的练习,几乎每个小节都配了需要推理的题。对只想快速上手调包的人来说,这部分可以暂时跳过;但如果你打算长期在人工智能或数据方向做下去,跳过它会在某个时刻付出代价。
举个具体的。为什么A^T A在 A 列满秩时一定可逆?这条结论是最小二乘法的地基。证明不长:假设A^T A x = 0,两边左乘x^T得x^T A^T A x = 0,也就是(Ax)^T (Ax) = 0,一个向量和自身的内积为零,只能它本身是零向量,所以Ax = 0。而 A 列满秩意味着零空间只有零向量,于是x = 0。这样就证明了A^T A的零空间只有零向量,它可逆。
这段推理的价值不在考试,而在于它告诉你:一旦数据的两列高度相关(现实中很常见,比如两个几乎相同的特征),列满秩的条件就被破坏,A^T A接近不可逆,解会变得极其不稳定,参数数值乱飞。这解释了为什么做回归前要先检查特征之间是否共线。不懂证明,就只能在结果崩掉之后靠猜;懂了,就知道该去查什么。
5.3 英文原版的真实门槛,比想象中低
这本书是英文原版,不少读者第一反应是发怵。实际门槛没那么高:数学英语的句式比文学英语简单得多,长句少,被动语态多,词汇高度重复。真正需要过的关是一小撮术语,撑死了几十个。
把附录里的术语表过一遍,基本就能读正文了。核心词无非这些:span(张成)、basis(基)、rank(秩)、null space(零空间)、column space(列空间)、eigenvalue 与 eigenvector(特征值与特征向量)、orthogonal(正交)、projection(投影)、determinant(行列式)、invertible(可逆)、linearly independent(线性无关)、diagonalization(对角化)、least squares(最小二乘)、singular value(奇异值)。这些词在书里会以相同的含义反复出现几百次,看三五页就熟了。
文字可复制这一点对读英文版很有帮助。遇到读不顺的段落,复制出来对照术语表逐词拆解,比整段丢进翻译工具更能学到东西;做笔记时也能直接把原文里的定义句摘下来,不至于转述走样。读英文教材最忌讳的是逐句翻译成中文再理解,正确姿势是让这些术语在英文形态下直接对应到概念,省掉中间一层转换。
5.4 配套资源和习题的正确用法
书后的奇数题答案是一份被低估的资源。做完题立刻对答案,错了就回去看是哪一步出了岔子,比攒一堆题最后统一对答案有效得多。因为错误刚发生时,你还记得当时的思路,能定位到具体哪个概念没搞清;隔两天再回头看,只剩一个错号和一片茫然。
交互式电子版本适合用来补几何直观。线性变换、特征向量、投影这些概念,文字描述再准确也不如亲手拖动一下看得明白:改改矩阵里的数字,看图形怎么变形,看哪些方向保持不变。抽象概念一旦有了画面,后面读定理时的抵触感会小很多。
配套在线作业系统的价值在于即时反馈,尤其适合计算类技能的训练。行化简、求逆、算特征值这些操作,错了立刻知道,不至于带着错误方法练一下午。但要注意它替代不了纸笔推导,快速点选出来的答案容易造成“我会了”的错觉,回头手写一遍可能还是会卡。
6. 什么时候用这本书,什么时候先放一放
判断这本书适不适合你,核心看两件事:你现在缺的是概念理解,还是快速上手。这本教材的定位很明确——把线性代数的基础概念讲透,并且让你看到它们怎么落在真实问题上。它不负责教你怎么调模型、怎么部署服务,也不承诺读完就能写深度学习代码。如果你要的是三小时跑通一个 demo,它太慢了;如果你发现自己调了半天参数,却说不清模型内部那些矩阵到底在干什么,那它正好补上这一块。
| 你的处境 | 适合程度 | 建议读法 |
|---|---|---|
| 学完两学期大学数学,准备进入人工智能或数据方向 | 很适合 | 顺读一至七章,第八至十章按需 |
| 已经在用现成框架,但看不懂论文里的矩阵推导 | 很适合 | 重点四、五、六、七章,配合术语表 |
| 只想知道某个 API 怎么调 | 不合适 | 先看框架文档,回头再来补 |
| 做图像、信号、控制方向 | 很适合 | 六、七章连同应用小节精读 |
| 只想补计算、完全不碰证明 | 部分适合 | 跳过证明类练习,主攻例题与计算题 |
| 时间只剩一周,还要应付考试 | 谨慎 | 抓行化简、基与维数、特征值三块,别贪多 |
真正需要提醒的是别把它当词典用。有人习惯遇到问题翻一下对应小节,看完公式就走,结果每次都得重新翻。这本书的章节之间有明确的依赖链:秩的概念没立住,可逆矩阵的等价刻画就记不牢;正交投影没弄明白,最小二乘和奇异值分解就只能硬背。顺着读一遍的收益,远大于零散查阅十次。
我自己的教训发生在第一次读第五章的时候。当时觉得特征值不就是解个多项式方程嘛,跳过前面的动力系统例子直接做题,做完对答案全对,心里还挺得意。过了几个月去看一个图像压缩的实现,里面用到奇异值分解,我怎么都想不通为什么保留前几个奇异值就能还原出大致图像。回头翻书才发现,答案在第五章那个被我跳过的例子里——矩阵反复作用在向量上,方向不变的那些分量会被不断放大,其余分量相对衰减,所以最大的那几个特征方向携带了主要信息。跳过例子的代价,是后来花了两倍时间补同一块内容。
从那以后我每次读这类教材,都强制自己把每章开头的应用例子先读完再往下走,哪怕当时看不出它跟后面的公式有什么关系。这个习惯救过我很多次。如果你也准备开始读,不妨从第一章那个经济学与工程的模型例子看起,先让概念有个落点,再去啃定义和证明。这份英文原版资料文字可复制、结构完整,配合术语表慢慢推,比想象中好读。希望帮到你。
本文还有配套的精品资源,点击获取