You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

71 lines
7.6 KiB
Markdown

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# 开篇词 | 从今天起,学会线性代数
你好,我是朱维刚。欢迎你跟我一起重学线性代数!
## 我们为什么要学线性代数?
“数学”其实是一个老生常谈的话题。我出生在80年代在我这一代父母一直给我们灌输“学好数理化走遍天下都不怕”的思想。我们每个人都是从很小的时候就开始学习数学了。那你有没有想过学了那么多年数学我们到底把这些数学知识都学到哪里去了呢它们到底可以用在什么地方呢
我自己对数学这个学科比较感兴趣,从小就在想这些问题,但是一直百思不得其解。一直到了大学和研究生阶段,学了工程数学之后,我才真正恍然大悟——原来数学可以用在各类工程上,比如我现在正在从事的人工智能中的机器学习项目。
说起来,我与机器学习结缘还是比较早的。
2006年年初我开始接触机器学习加入了IronPort后来被思科收购了公司的TDAThreat Data Analyst团队。当时公司的主要业务集中在“反垃圾邮件”这个领域我们这些工程师的主要职责就是每天分析全球大量邮件数据、人工打分类标签、写匹配规则来优化机器学习引擎。其实有点类似如今的数据分析师和数据科学家可以说基本上每天都在跟“数学”打交道。如今14年过去了目前我致力于建筑行业数字孪生的工作我希望通过人工智能技术推动建筑行业进入“智慧建造”时代。
做了这么多年机器学习,我经常听到有人跟我说,机器学习很难啊,你到底是怎么学会的?
其实,我想说,机器学习本身没有多大难度,因为经过多年的积累后,很多规则已经成型了。对于我们来说真正难的,是机器学习背后的算法所涉及的基础数学原理,包括向量、矩阵等等。
我们可以来看下机器学习的整个知识体系。单从数学角度来看,这个覆盖范围非常广,有向量积分、矩阵分解等等,但最最核心的还是线性代数。所以说,不要再问我为什么自己学不会机器学习、人工智能了,因为你没有学好线性代数。
![](https://static001.geekbang.org/resource/image/29/75/293733525270cdb930e0e1f7d10fee75.png)
不过,你可千万不要觉得,学了线性代数之后,实际应用就只有机器学习。如果这么想,那就太局限了。
线性代数是计算机很多领域的基础。比如如何让3D图形显示到二维屏幕上这是线性代数在图形图像学中的应用。如何提高密码被破译的难度这个密码学问题用线性代数中的有限向量空间可以很好地解决。
线性代数的应用真的非常广泛。掌握了线性代数这样的基础学科知识,我们其实就相当于有了数学这个利器,为其他领域的实际应用打下了非常好、非常扎实的基础。最简单、最直接的利益——你不仅可以在工作中进行算法调优,还能成为公司创新团队的主力。
## 到底该怎么学线性代数?
既然线性代数是机器学习最底层的知识,如果我们想要在机器学习上有所作为,学会线性代数是必须的。那该怎么学呢?
我估计你肯定看过外面很多书或者课程,我也看过。它们无一例外都是直接上来就给你讲机器学习的应用实践,然后里面穿插了一些数学知识,从实践的角度切入。这样编排课程当然没问题,优点是入门容易,但它的缺点也是显而易见的。这样学下来,很多时候,你只知道固定的应用场景,死记硬背几个知识点容易,但是数学知识并不牢固。当遇到实际问题的时候,你除了套公式之外,还是只能干瞪眼,根本没有真正吃透背后的原理。
因此,从我自己学习的经验出发,在技术领域里,我更推荐**自下而上**的学习方式,也就是从底层基础概念开始,一步步循序渐进往上走,一直走到应用实践。当然,这个方式也有缺点,那就是入门的时候困难,可能会遇到很多知识阻碍,很多人都会中途放弃。这些学习经历我都深有体会。
所以,我运用了自下而上的方式来进行讲解,同时,讲解每个知识点的时候,我都会加入一些和理论有关的实践讲解。这样就能够帮你由里及表,融会贯通,在搭建起知识体系的同时,可以获得螺旋式上升的学习效果。
为了让你能更加系统地学习线性代数,在设计“重学线性代数”这门课时,我还真是下了一番苦功夫。下面就给你详细介绍下这门课的两大模块。
![](https://static001.geekbang.org/resource/image/a8/aa/a845db49d6524fc3400f2e76c8818caa.png)
第一个模块是**基础篇**,我们主要讲线性代数的理论基础。
我会从最简单、也是你最熟悉的线性方程组说起在这基础上引出向量和矩阵并通过矩阵来讲“解线性方程组”的不同方法有直接法也有实践中用得最多的间接迭代法。然后我会在向量和矩阵的基础上讲线性空间因为在实践中更多的是对集合的操作也就是对线性空间的操作。线性空间好比是容器它包含了向量以及向量的运算。基础篇的最后我还会为你介绍解析几何是解析几何使得向量从抽象走向了具象让向量具有了几何的含义比如计算向量的长度、之间的距离和角度这在机器学习的主成分分析PCA中是非常有用的。
第二个模块是**应用篇**,我会结合线性代数的基础理论,讲解线性代数在计算机科学中的应用。
有了之前的基础后,你再来看应用实践就会觉得简单很多。当其中会涉及一些线性代数以外的数学领域时,我也会给予一定的说明。
特别地,我要强调一下。在每一讲最后我都特意设计了“线性代数练习场”,带你通过练习来巩固学到的知识点。所以,这个小板块一定要重视起来,期待和你一起在实践中探索。
所以从整体来说,“重学线性代数”可以满足你四个层次的需求:
![](https://static001.geekbang.org/resource/image/b8/57/b867ee13ab166a609f1dd86a168aaa57.png)
* 第一层次:在研究应用领域时,希望能够理解数学公式的意义。
* 第二层次:在阅读线性代数参考书时,希望理解书中的内容。
* 第三层次:能够自己实践、自己计算。
* 第四层次:能够踏入大规模矩阵计算的世界。
好了,到这里,我想说的已经差不多了,不知道你有没有准备好,跟我一起学习了呢?
进入DT时代后很多企业都开始着手做数字化转型。站在从业者的角度有了数字化的基础数据我相信终有一天人工智能将定义下一代软件解决方案这是一个巨大的机会。
我希望在这个机会真正到来前,你能和我一起,一步步地、深入浅出地学习线性代数这门数学基础课,成为企业研究机构的创新力量之一。我也非常希望,通过这门课程的学习,你能对线性代数能有一个重新的认识,让线性代数融入到你的工作和生活中,真正改变你的工作和生活,让它成为你的翅膀。
当然,线性代数只是一个开始,在实际解决问题时,还需要用到很多其它的数学知识,我也会继续保持学习的心态,来和你一起探讨数学,一起更新最新的前沿知识,学习永无止境。
最后,让我们整装出发,一起来探索线性代数的世界,感受腾飞的乐趣吧!