外行怎樣學習線性代數
這裡說的外行,指的是非數學相關專業從業人員。因為數學的複雜性和抽象性,非專業人士難以有足夠的精力去深入學習,所以需要尋找有效的方法,在有限的時間內,了解其知識體系,掌握重要的知識點、方法和模型。
學習數學的目的
我們學習數學的動機也許是個人興趣,或者是工作等方面的需要,具體目的可能有以下幾點:
了解數學的體系
對數學的系統認識既是學習的目的之一,同時也能加速學習的過程和改進學習的效果。遺憾的是,因為數學的抽象層次太深,內容太龐雜,又缺乏相關的科普讀物,外行很難對數學的體系有較全面的認識,只能結合數學史由淺入深的逐步了解。
熟悉數學語言
很多學科和工程上的方法和模型是用數學語言描述的,例如機器學習演算法,不熟悉數學語言的話,連演算法的基本原理和邏輯都很難搞懂,更別說實現細節了。
理解數學的方法、思維方式和模型
數學的存在既是為了探索客觀世界的本質規律,也是為了給其它學科提供應用的工具和模型。例如複利模型、迭代/遞歸的思想和方法、差分方程和微分方程、運籌學裡的各種規劃和優化方法等。模型是人們認識和理解世界的一種重要途徑,數學因為其抽象性,它的模型也就更加深刻和通用。掌握這些方法和模型,不僅可以幫助我們解決實際問題,也能更好的認識這個世界的規律和事物之間的內在聯繫。
鍛煉邏輯思維和抽象思維的能力
很多學科和領域的問題最後都是轉化成建立數學模型和解決相應的數學問題,數學思維的缺乏,會嚴重影響到這些問題的解決。我們大學時學習的數學內容可能會被遺忘,但這種思維能力卻會伴隨我們一生,讓我們能找到辦法應對工作和生活中遇到的各種新的問題。
數學學習的難點
數學的最大特點是抽象,而且抽象層次很深,遠離人的直觀經驗,所以學習和理解起來特別費勁。數學跟哲學很相似,早期知識都來源於人的生產生活體驗,但越到後來,越是抽象,會衍生出很多抽象的概念和理論。例如早期的算術和幾何都比較好懂,即使有些幾何定理證明起來很困難,但至少看上去會比較直觀。到後來的無理數、方程式、微積分、極限、級數、複數、集合論、矩陣等等,就沒那麼直觀了,理解上的難度也逐步提高,而再後來的測度論、複分析、泛函分析、群論、拓撲、非歐幾何、流形...,就更讓外行人望而卻步了。
線性代數的學習
微積分和線性代數是大學數學的兩項主要課程,對大部分人來說,估計線性代數更難懂一些。因為微積分還算的上是高中數學知識的延續,而線性代數里的內容跟高中數學相比,不僅抽象得多,而且還存在著知識點上的斷層,這無疑加大了學習的難度。
就拿矩陣來說,看上去就是一堆數值的排列,除了解線性方程組之外,還有什麼用?為什麼要搞得這麼複雜和怪異?我當時就有很多的不理解,學習也不夠努力,最後雖然考試勉強過關,但實際收穫接近於零。
直到去年我開始重新學習數學,才算是對線性代數有了入門的感覺。總結起來,我覺得有兩點原因,一是找到了一些比較好的學習材料,如孟岩寫的三篇《理解矩陣》的博客和David C. Lay的《線性代數及其應用》,以及《程序員的數學3:線性代數》。二是現在知識面更廣,更容易把要學習的知識跟已有的經驗關聯起來。
以《線性代數及其應用》為例,這本書每一章開頭都會列舉一個真實的應用案例,讓我們能更好的理解線性代數的應用場景和使用方式。例如第一章的例子是:美國哈佛大學教授Wassily Leontief為美國的500個經濟部門各寫一個描述部門產出分配的線性方程,這樣就得到一個包含500個變數和500個方程的線性方程組。由於當時的超級計算機性能有限,所以他把問題簡化成包含42個變數和42個方程的方程組。即使這樣,編寫計算程序還是花了幾個月的時間,程序運行也花了56個小時才得出結果。這樣一個具體的例子就能讓我們體會到矩陣計算的用處和複雜性。
還有這本書的第五章特徵值和特徵向量,以及第六章最小二乘法,都給我留下了很深的印象。看第五章時,我想到的是馬爾可夫過程的狀態轉移矩陣,看第六章時,我想到的是機器學習演算法里的感知機和SVM。雖然我之前對這些聯想到的知識點還不太懂,但在看這本書的時候,這些知識點互相關聯起來,不僅讓我能更好的理解書里講到的內容,對這些聯想到的知識點也有了更深的認識,有時候甚至有種「頓悟」的感覺,好像腦子突然間就開了竅一樣。
學習方法
上面講了我學習線性代數過程的一些感受。基於這些個人的經歷和體會,我歸納了下面一些觀點:
學習的實質
知識是聯繫的,聯繫是普遍的,學習就是在大腦中把新知識和已有知識關聯起來的過程,聯繫越多、越直接,對新知識的理解和認識就越深刻,而且還會加深對已有知識的理解。
這裡說的知識主要是指理論知識和書本知識,至於實踐知識,更多的依賴於動手操作,並不斷總結提取best practice,或者是通過反覆練習來形成「肌肉記憶」,這裡就不多講了。
基本方法和原則
人最初的知識來源於自身的生活體驗,識別各種物體和它們的屬性,然後理解數量關係、從屬關係、因果關係等各種基礎概念,再進一步通過直接的體驗或是間接的學習掌握更抽象的知識。雖然人能夠理解抽象的概念,但具體的東西總是更好懂一些,所以就有了下面這些方法和原則:
- 從易到難
- 從外到內
- 從具體到抽象
- 從熟悉到陌生
- 從上層應用到底層原理
- 尋找好的例子(一個好的例子勝過長篇大論的講解)
- 尋找好的圖表(圖形勝過公式)
- 類比,從共同點和差異點中認識新知識和新模型
- 建立知識體系來組織知識點
- 掌握重要模型,以模型為中心關聯知識點
- 拓展知識面,在不同學科和領域的知識之間建立廣泛的關聯
- 經常思考和總結,對知識點進一步的概括和關聯
這些原則背後的思想是一致的,就是要想辦法在知識點之間建立初始的聯繫,然後儘可能建立更多和更直接的聯繫。對於從應用出發這一條,還可以再多講一下。因為應用領域不只是更貼近人的直觀經驗,而且了解一門知識的用處,可以提高學習的興趣和動力,對學習過程有時候至關重要。
學習的材料
如果拋開學習過程的具體操作,學習的效率和效果很大程度上取決於學習材料的選擇。好的學習材料可以提供恰當的切入點,使新的知識點能跟讀者的背景知識體系建立直接關聯,而且在知識點的銜接上會細心處理,避免有跳躍和斷層。
例如上面提到的3種線性代數的學習材料,《理解矩陣》是把矩陣跟我們熟悉的運動和空間關聯起來,以此來講解矩陣的本質;《線性代數及其應用》是以應用案例為指引,來描述矩陣的使用場景和方式;《程序員的數學3:線性代數》則是通過直觀的圖形來讓我們更好的理解線性變換。
對於像數學這樣比較困難和抽象的學科,要盡量選擇一些容易看懂的書籍來開始學習。例如從學科歷史和科普讀物入門,然後再看一些跟應用關聯緊密的書。再深入理論細節。在這個過程中,還可以擴大泛讀的範圍,了解相關各個領域的知識。
總之,不要局限在當前要學的內容上,要擴大瀏覽範圍,通過不同領域知識的廣泛關聯來加深對知識的認識和理解。
AI與學習
由於每個人的知識背景以及思維能力和思維方式的不同,所以同樣的學習材料對不同的人來說,效果也是不同的。我們需要根據自己的情況,來選擇合適的書籍進行學習。例如基礎好的可以看那些理論性強的書,基礎一般的可以看偏應用的書,甚至可以先看科普類的。總之,選擇的學習材料,既要能看的懂、看的進去,也要有足夠比例的新知識,不然學習的進度就會太慢。
未來如果AI夠智能的話,也許可以基於對人的評測分析,來生成特定的學習材料,甚至可以由AI教師來跟學生做一對一的交互,通過針對性的教學方法來獲得更好的結果。
借鑒別人的學習方法
可以找一些講學習方法的書籍和文章,學習他們的方法,例如參考鏈接4里的整體學習法和參考鏈接5里知乎上總結的各種方法。
結語
回頭來看,這篇文章實際上是以線性代數為例子來談怎樣學習抽象知識。受限於我對線性代數的認識和對學習方法的理解,上面的內容有些凌亂,而且也不夠系統和完備。不過我還是想把它寫出來,作為對前一段時間學習和思考的總結。等以後對數學和學習方法有了更深的認識,我會重新來做更系統的歸納整理。
參考鏈接:
- 理解矩陣(作者: 孟岩)
- 《線性代數及其應用》作者: David C. Lay
- [《程序員的數學3:線性代數》作者: [日] 平岡和幸 / [日] 堀玄 ](https://book.douban.com/subject/26740548/)
- Holistic learning
- 如何高效率學習? - 風緊扯呼的回答 - 知乎
推薦閱讀:
※名人故事:中國偉大的數學家
※五階立方體:初級降階法
※[探科技]淺談真理的不完備
※《皇帝新腦》重讀感想
※分析和代數原理(1)