美文网首页微积分程序员
外行怎样学习线性代数

外行怎样学习线性代数

作者: hindsights | 来源:发表于2018-06-04 16:22 被阅读363次

    这里说的外行,指的是非数学相关专业从业人员。因为数学的复杂性和抽象性,非专业人士难以有足够的精力去深入学习,所以需要寻找有效的方法,在有限的时间内,了解其知识体系,掌握重要的知识点、方法和模型。

    学习数学的目的

    我们学习数学的动机也许是个人兴趣,或者是工作等方面的需要,具体目的可能有以下几点:

    了解数学的体系

    对数学的系统认识既是学习的目的之一,同时也能加速学习的过程和改进学习的效果。遗憾的是,因为数学的抽象层次太深,内容太庞杂,又缺乏相关的科普读物,外行很难对数学的体系有较全面的认识,只能结合数学史由浅入深的逐步了解。

    熟悉数学语言

    很多学科和工程上的方法和模型是用数学语言描述的,例如机器学习算法,不熟悉数学语言的话,连算法的基本原理和逻辑都很难搞懂,更别说实现细节了。

    理解数学的方法、思维方式和模型

    数学的存在既是为了探索客观世界的本质规律,也是为了给其它学科提供应用的工具和模型。例如复利模型、迭代/递归的思想和方法、差分方程和微分方程、运筹学里的各种规划和优化方法等。模型是人们认识和理解世界的一种重要途径,数学因为其抽象性,它的模型也就更加深刻和通用。掌握这些方法和模型,不仅可以帮助我们解决实际问题,也能更好的认识这个世界的规律和事物之间的内在联系。

    锻炼逻辑思维和抽象思维的能力

    很多学科和领域的问题最后都是转化成建立数学模型和解决相应的数学问题,数学思维的缺乏,会严重影响到这些问题的解决。我们大学时学习的数学内容可能会被遗忘,但这种思维能力却会伴随我们一生,让我们能找到办法应对工作和生活中遇到的各种新的问题。

    数学学习的难点

    数学的最大特点是抽象,而且抽象层次很深,远离人的直观经验,所以学习和理解起来特别费劲。数学跟哲学很相似,早期知识都来源于人的生产生活体验,但越到后来,越是抽象,会衍生出很多抽象的概念和理论。例如早期的算术和几何都比较好懂,即使有些几何定理证明起来很困难,但至少看上去会比较直观。到后来的无理数、方程式、微积分、极限、级数、复数、集合论、矩阵等等,就没那么直观了,理解上的难度也逐步提高,而再后来的测度论、复分析、泛函分析、群论、拓扑、非欧几何、流形...,就更让外行人望而却步了。

    线性代数的学习

    微积分和线性代数是大学数学的两项主要课程,对大部分人来说,估计线性代数更难懂一些。因为微积分还算的上是高中数学知识的延续,而线性代数里的内容跟高中数学相比,不仅抽象得多,而且还存在着知识点上的断层,这无疑加大了学习的难度。

    就拿矩阵来说,看上去就是一堆数值的排列,除了解线性方程组之外,还有什么用?为什么要搞得这么复杂和怪异?我当时就有很多的不理解,学习也不够努力,最后虽然考试勉强过关,但实际收获接近于零。

    直到去年我开始重新学习数学,才算是对线性代数有了入门的感觉。总结起来,我觉得有两点原因,一是找到了一些比较好的学习材料,如孟岩写的三篇《理解矩阵》的博客和David C. Lay的《线性代数及其应用》,以及《程序员的数学3:线性代数》。二是现在知识面更广,更容易把要学习的知识跟已有的经验关联起来。

    以《线性代数及其应用》为例,这本书每一章开头都会列举一个真实的应用案例,让我们能更好的理解线性代数的应用场景和使用方式。例如第一章的例子是:美国哈佛大学教授Wassily Leontief为美国的500个经济部门各写一个描述部门产出分配的线性方程,这样就得到一个包含500个变量和500个方程的线性方程组。由于当时的超级计算机性能有限,所以他把问题简化成包含42个变量和42个方程的方程组。即使这样,编写计算程序还是花了几个月的时间,程序运行也花了56个小时才得出结果。这样一个具体的例子就能让我们体会到矩阵计算的用处和复杂性。

    还有这本书的第五章特征值和特征向量,以及第六章最小二乘法,都给我留下了很深的印象。看第五章时,我想到的是马尔可夫过程的状态转移矩阵,看第六章时,我想到的是机器学习算法里的感知机和SVM。虽然我之前对这些联想到的知识点还不太懂,但在看这本书的时候,这些知识点互相关联起来,不仅让我能更好的理解书里讲到的内容,对这些联想到的知识点也有了更深的认识,有时候甚至有种“顿悟”的感觉,好像脑子突然间就开了窍一样。

    学习方法

    上面讲了我学习线性代数过程的一些感受。基于这些个人的经历和体会,我归纳了下面一些观点:

    学习的实质

    知识是联系的,联系是普遍的,学习就是在大脑中把新知识和已有知识关联起来的过程,联系越多、越直接,对新知识的理解和认识就越深刻,而且还会加深对已有知识的理解。

    这里说的知识主要是指理论知识和书本知识,至于实践知识,更多的依赖于动手操作,并不断总结提取best practice,或者是通过反复练习来形成“肌肉记忆”,这里就不多讲了。

    基本方法和原则

    人最初的知识来源于自身的生活体验,识别各种物体和它们的属性,然后理解数量关系、从属关系、因果关系等各种基础概念,再进一步通过直接的体验或是间接的学习掌握更抽象的知识。虽然人能够理解抽象的概念,但具体的东西总是更好懂一些,所以就有了下面这些方法和原则:

    • 从易到难

    • 从外到内

    • 从具体到抽象

    • 从熟悉到陌生

    • 从上层应用到底层原理

    • 寻找好的例子(一个好的例子胜过长篇大论的讲解)

    • 寻找好的图表(图形胜过公式)

    • 类比,从共同点和差异点中认识新知识和新模型

    • 建立知识体系来组织知识点

    • 掌握重要模型,以模型为中心关联知识点

    • 拓展知识面,在不同学科和领域的知识之间建立广泛的关联

    • 经常思考和总结,对知识点进一步的概括和关联

    这些原则背后的思想是一致的,就是要想办法在知识点之间建立初始的联系,然后尽可能建立更多和更直接的联系。对于从应用出发这一条,还可以再多讲一下。因为应用领域不只是更贴近人的直观经验,而且了解一门知识的用处,可以提高学习的兴趣和动力,对学习过程有时候至关重要。

    学习的材料

    如果抛开学习过程的具体操作,学习的效率和效果很大程度上取决于学习材料的选择。好的学习材料可以提供恰当的切入点,使新的知识点能跟读者的背景知识体系建立直接关联,而且在知识点的衔接上会细心处理,避免有跳跃和断层。

    例如上面提到的3种线性代数的学习材料,《理解矩阵》是把矩阵跟我们熟悉的运动和空间关联起来,以此来讲解矩阵的本质;《线性代数及其应用》是以应用案例为指引,来描述矩阵的使用场景和方式;《程序员的数学3:线性代数》则是通过直观的图形来让我们更好的理解线性变换。

    对于像数学这样比较困难和抽象的学科,要尽量选择一些容易看懂的书籍来开始学习。例如从学科历史和科普读物入门,然后再看一些跟应用关联紧密的书。再深入理论细节。在这个过程中,还可以扩大泛读的范围,了解相关各个领域的知识。

    总之,不要局限在当前要学的内容上,要扩大浏览范围,通过不同领域知识的广泛关联来加深对知识的认识和理解。

    AI与学习

    由于每个人的知识背景以及思维能力和思维方式的不同,所以同样的学习材料对不同的人来说,效果也是不同的。我们需要根据自己的情况,来选择合适的书籍进行学习。例如基础好的可以看那些理论性强的书,基础一般的可以看偏应用的书,甚至可以先看科普类的。总之,选择的学习材料,既要能看的懂、看的进去,也要有足够比例的新知识,不然学习的进度就会太慢。

    未来如果AI够智能的话,也许可以基于对人的评测分析,来生成特定的学习材料,甚至可以由AI教师来跟学生做一对一的交互,通过针对性的教学方法来获得更好的结果。

    借鉴别人的学习方法

    可以找一些讲学习方法的书籍和文章,学习他们的方法,例如参考链接4里的整体学习法和参考链接5里知乎上总结的各种方法。

    结语

    回头来看,这篇文章实际上是以线性代数为例子来谈怎样学习抽象知识。受限于我对线性代数的认识和对学习方法的理解,上面的内容有些凌乱,而且也不够系统和完备。不过我还是想把它写出来,作为对前一段时间学习和思考的总结。等以后对数学和学习方法有了更深的认识,我会重新来做更系统的归纳整理。

    参考链接:

    1. 理解矩阵(作者: 孟岩)

    2. 《线性代数及其应用》作者: David C. Lay

    3. 《程序员的数学3:线性代数》作者: [日] 平冈和幸 / [日] 堀玄

    4. Holistic learning

    5. 如何高效率学习? - 风紧扯呼的回答 - 知乎

    相关文章

      网友评论

        本文标题:外行怎样学习线性代数

        本文链接:https://www.haomeiwen.com/subject/jodysftx.html