Think Linear Algebra: A Code-First Approach to Mathematical Foundations

對於許多開發者和數據科學家來說,線性代數通常被呈現為一堵由抽象符號和理論證明構成的畏人高牆。雖然它是幾乎所有現代技術躍進的基礎——從建立 Google 的 PageRank 演算法到驅動 LLM 的 transformer 架構——但傳統的教學方式往往讓那些透過實作來學習的人感到挫折。

Allen Downey 所著的 Think Linear Algebra 試圖翻轉這一局面。它不從數學形式主義開始,而是採用「程式優先」的哲學,使用 Python 和 Jupyter notebooks 來將抽象概念轉化為具體的、可執行的模擬。透過將每一章節都圍繞著現實世界的問題展開,這本書將線性代數從一套需要死記硬背的規則轉化為一種解決複雜問題的語言。

Learning by Doing: The Case-Based Curriculum

Think Linear Algebra 的核心優勢在於其對案例導向學習的承諾。這本書並非先教一個概念,然後提供作業問題,而是從問題開始,並推導出解決問題所需的數學知識。

目前章節中的關鍵範例包括:

  • Network Analysis: 使用矩陣乘法和 eigenvectors 進行博物館流量建模,並實作 PageRank 演算法。
  • Kinematics: 利用向量加法和減法來分析 GPS 追蹤數據,透過數值微分來估算速度和加速度。
  • Physics Simulations: 應用向量投影和正交性來模擬撞球的彈性碰撞。
  • Computer Graphics: 實作 affine transforms(縮放、旋轉、剪切)來重建經典遊戲 Asteroids
  • Engineering & Chemistry: 使用 LU decomposition 處理電路,並透過 rank 和 nullspace 的視角來分析化學計量學。
  • Data Science: 使用 QR decomposition 實作最小二乘法回歸,透過 General Social Survey (GSS) 分析政治意識形態趨勢。

The Power of the Interactive Notebook

透過利用 Jupyter notebooks 和 Google Colab,這本書提供了一個讓學習者能獲得即時回饋的環境。這種互動式方法允許讀者探索「如果...會怎樣」的情境——例如改變矩陣中的一個變數,並立即看到它如何影響 2D 圖形或結構桁架模擬。

這種方法論引起了現代學習者的共鳴,因為他們可能在傳統教學中感到掙扎。正如一位社群成員所提到的,在 notebook 中實驗概念的能力對於試圖理解複雜現代架構的人來說是無價的:

"I realized I understand more when I look into the mathematical foundations... Explaining the concepts in a Jupyter notebook that you can change/experiment with [helps tremendously]."

A Departure from Tradition

由於這本書優先考慮應用,它偶爾會偏離傳統的教學路徑。例如,有些讀者指出,在向量加法之前引入矩陣乘法是一種對學術經典如 Linear Algebra Done Right 中序列的偏離。

然而,對於程式設計師來說,這種「由上而下」的方法通常更直觀。它反映了軟體開發的過程:你從高層級的功能(「是什麼」)開始,然後隨著需求出現時再深入研究底層機制(「如何做」)。

Expanding the Toolkit

雖然目前的課程涵蓋了方程組和回歸的基本要素,但對於進一步擴展到進階統計主題的需求顯而易見。潛在的增補內容,如 Principal Component Analysis (PCA) 和 Canonical Correlation Analysis (CCA),將使學習者能精確地看到像 scikit-learn 這樣的函式庫如何在其底層實作 SVD (Singular Value Decomposition)。

對於喜歡這種學習風格的人,Allen Downey 有著製作高品質、開源資源的歷史。他的其他「Think」系列書籍——包括 Think Complexity, Think DSP, Think Stats, 和 Think Bayes——都遵循著類似的哲學,即透過計算來使複雜的技術主題變得易於理解。

Conclusion

Think Linear Algebra 代表了向計算素養的轉向。透過將線性代數視為一種用於模擬和視覺化的工具,而非一系列的證明,它降低了門檻,讓任何想要掌握機器學習、機器人技術和科學計算背後的數學知識的人都能參與其中。

Sources