<audio id="audio" title="开篇词 | 从今天起，学会线性代数" controls="" preload="none"><source id="mp3" src="https://static001.geekbang.org/resource/audio/c2/ed/c2be81eb53b8d687d7c2b893cdca3fed.mp3"></audio>

你好，我是朱维刚。欢迎你跟我一起重学线性代数！

## 我们为什么要学线性代数？

“数学”其实是一个老生常谈的话题。我出生在80年代，在我这一代，父母一直给我们灌输“学好数理化，走遍天下都不怕”的思想。我们每个人都是从很小的时候就开始学习数学了。那你有没有想过，学了那么多年数学，我们到底把这些数学知识都学到哪里去了呢？它们到底可以用在什么地方呢？

我自己对数学这个学科比较感兴趣，从小就在想这些问题，但是一直百思不得其解。一直到了大学和研究生阶段，学了工程数学之后，我才真正恍然大悟——原来数学可以用在各类工程上，比如我现在正在从事的人工智能中的机器学习项目。

说起来，我与机器学习结缘还是比较早的。

2006年年初，我开始接触机器学习，加入了IronPort（后来被思科收购了）公司的TDA（Threat Data Analyst）团队。当时公司的主要业务集中在“反垃圾邮件”这个领域，我们这些工程师的主要职责，就是每天分析全球大量邮件数据、人工打分类标签、写匹配规则来优化机器学习引擎。其实有点类似如今的数据分析师和数据科学家，可以说基本上每天都在跟“数学”打交道。如今14年过去了，目前我致力于建筑行业数字孪生的工作，我希望通过人工智能技术，推动建筑行业进入“智慧建造”时代。

做了这么多年机器学习，我经常听到有人跟我说，机器学习很难啊，你到底是怎么学会的？

其实，我想说，机器学习本身没有多大难度，因为经过多年的积累后，很多规则已经成型了。对于我们来说真正难的，是机器学习背后的算法所涉及的基础数学原理，包括向量、矩阵等等。

我们可以来看下机器学习的整个知识体系。单从数学角度来看，这个覆盖范围非常广，有向量积分、矩阵分解等等，但最最核心的还是线性代数。所以说，不要再问我为什么自己学不会机器学习、人工智能了，因为你没有学好线性代数。

<img src="https://static001.geekbang.org/resource/image/29/75/293733525270cdb930e0e1f7d10fee75.png" alt="">

不过，你可千万不要觉得，学了线性代数之后，实际应用就只有机器学习。如果这么想，那就太局限了。

线性代数是计算机很多领域的基础。比如，如何让3D图形显示到二维屏幕上？这是线性代数在图形图像学中的应用。如何提高密码被破译的难度？这个密码学问题，用线性代数中的有限向量空间可以很好地解决。

线性代数的应用真的非常广泛。掌握了线性代数这样的基础学科知识，我们其实就相当于有了数学这个利器，为其他领域的实际应用打下了非常好、非常扎实的基础。最简单、最直接的利益——你不仅可以在工作中进行算法调优，还能成为公司创新团队的主力。

## 到底该怎么学线性代数？

既然线性代数是机器学习最底层的知识，如果我们想要在机器学习上有所作为，学会线性代数是必须的。那该怎么学呢？

我估计你肯定看过外面很多书或者课程，我也看过。它们无一例外都是直接上来就给你讲机器学习的应用实践，然后里面穿插了一些数学知识，从实践的角度切入。这样编排课程当然没问题，优点是入门容易，但它的缺点也是显而易见的。这样学下来，很多时候，你只知道固定的应用场景，死记硬背几个知识点容易，但是数学知识并不牢固。当遇到实际问题的时候，你除了套公式之外，还是只能干瞪眼，根本没有真正吃透背后的原理。

因此，从我自己学习的经验出发，在技术领域里，我更推荐**自下而上**的学习方式，也就是从底层基础概念开始，一步步循序渐进往上走，一直走到应用实践。当然，这个方式也有缺点，那就是入门的时候困难，可能会遇到很多知识阻碍，很多人都会中途放弃。这些学习经历我都深有体会。

所以，我运用了自下而上的方式来进行讲解，同时，讲解每个知识点的时候，我都会加入一些和理论有关的实践讲解。这样就能够帮你由里及表，融会贯通，在搭建起知识体系的同时，可以获得螺旋式上升的学习效果。

为了让你能更加系统地学习线性代数，在设计“重学线性代数”这门课时，我还真是下了一番苦功夫。下面就给你详细介绍下这门课的两大模块。

<img src="https://static001.geekbang.org/resource/image/a8/aa/a845db49d6524fc3400f2e76c8818caa.png" alt="">

第一个模块是**基础篇**，我们主要讲线性代数的理论基础。

我会从最简单、也是你最熟悉的线性方程组说起，在这基础上引出向量和矩阵，并通过矩阵来讲“解线性方程组”的不同方法（有直接法，也有实践中用得最多的间接迭代法）。然后，我会在向量和矩阵的基础上讲线性空间，因为在实践中，更多的是对集合的操作，也就是对线性空间的操作。线性空间好比是容器，它包含了向量以及向量的运算。基础篇的最后，我还会为你介绍解析几何，是解析几何使得向量从抽象走向了具象，让向量具有了几何的含义，比如：计算向量的长度、之间的距离和角度，这在机器学习的主成分分析PCA中是非常有用的。

第二个模块是**应用篇**，我会结合线性代数的基础理论，讲解线性代数在计算机科学中的应用。

有了之前的基础后，你再来看应用实践就会觉得简单很多。当其中会涉及一些线性代数以外的数学领域时，我也会给予一定的说明。

特别地，我要强调一下。在每一讲最后我都特意设计了“线性代数练习场”，带你通过练习来巩固学到的知识点。所以，这个小板块一定要重视起来，期待和你一起在实践中探索。

所以从整体来说，“重学线性代数”可以满足你四个层次的需求：

<img src="https://static001.geekbang.org/resource/image/b8/57/b867ee13ab166a609f1dd86a168aaa57.png" alt="">

- 第一层次：在研究应用领域时，希望能够理解数学公式的意义。
- 第二层次：在阅读线性代数参考书时，希望理解书中的内容。
- 第三层次：能够自己实践、自己计算。
- 第四层次：能够踏入大规模矩阵计算的世界。

好了，到这里，我想说的已经差不多了，不知道你有没有准备好，跟我一起学习了呢？

进入DT时代后，很多企业都开始着手做数字化转型。站在从业者的角度，有了数字化的基础数据，我相信，终有一天人工智能将定义下一代软件解决方案，这是一个巨大的机会。

我希望在这个机会真正到来前，你能和我一起，一步步地、深入浅出地学习线性代数这门数学基础课，成为企业研究机构的创新力量之一。我也非常希望，通过这门课程的学习，你能对线性代数能有一个重新的认识，让线性代数融入到你的工作和生活中，真正改变你的工作和生活，让它成为你的翅膀。

当然，线性代数只是一个开始，在实际解决问题时，还需要用到很多其它的数学知识，我也会继续保持学习的心态，来和你一起探讨数学，一起更新最新的前沿知识，学习永无止境。

最后，让我们整装出发，一起来探索线性代数的世界，感受腾飞的乐趣吧！
