程式設計師的線性代數教程!Jupyter 程式碼和視訊可能更適合你

紅色石頭發表於2019-05-07

推薦一份適合程式設計師的線性代數教程,包含理論和原始碼。教程地址為:

https://github.com/fastai/numerical-linear-algebra

本教程的重點是以下問題:我們如何以可接受的速度和可接受的精度進行矩陣計算?

這份教程來自於舊金山大學的分析學碩士 2017 暑期課程(為畢業班致力成為資料科學家的學生開設的)。該課程使用 python 和 jupyter 筆記本進行教學,在大多數課程中使用 scikit learn 和 numpy 等庫,以及在一些課程中使用 numba(一個將 python 編譯為 C 以提高效能的庫)和 pytorch(一個替代 numpy 的 GPU 庫)。

筆記本附帶了一個演講視訊的播放列表,可以在 YouTube 上找到。如果你對一個講座感到困惑或者太快,請看下一個視訊的開頭,在這裡會回顧上一個講座的概念,經常從一個新的角度或不同的插圖解釋事情,然後回答問題。

課程內容

本教程所有的內容將以 notebook 來呈現,具體目錄如下:

0. Course Logistics

notebook 地址:

https://nbviewer.jupyter.org/github/fastai/numerical-linear-algebra/blob/master/nbs/0.%20Course%20Logistics.ipynb

視訊地址:

https://www.youtube.com/watch?v=8iGzBMboA0I&index=1&list=PLtmWHNX-gukIc92m1K0P6bIOnZb-mg0hY

1. Why are we here?

我們將對數值線性代數中的一些基本概念進行了高層次的概述。

notebook 地址:

https://nbviewer.jupyter.org/github/fastai/numerical-linear-algebra/blob/master/nbs/1.%20Why%20are%20we%20here.ipynb

視訊地址:

https://www.youtube.com/watch?v=8iGzBMboA0I&index=1&list=PLtmWHNX-gukIc92m1K0P6bIOnZb-mg0hY

2. Topic Modeling with NMF and SVD

我們將使用新聞組資料集來嘗試識別不同文章的主題。我們使用一個表示文件中詞彙頻率的術語文件矩陣。我們使用 NMF 進行因子分析,然後使用 SVD 進行因子分析。

notebook 地址:

https://nbviewer.jupyter.org/github/fastai/numerical-linear-algebra/blob/master/nbs/2.%20Topic%20Modeling%20with%20NMF%20and%20SVD.ipynb

視訊地址:

https://www.youtube.com/watch?v=kgd40iDT8yY&list=PLtmWHNX-gukIc92m1K0P6bIOnZb-mg0hY&index=2

https://www.youtube.com/watch?v=C8KEtrWjjyo&index=3&list=PLtmWHNX-gukIc92m1K0P6bIOnZb-mg0hY

3. Background Removal with Robust PCA

SVD 的另一個應用是識別人群並刪除監控視訊的背景。我們將介紹使用隨機 SVD 的健壯 PCA。而隨機 SVD 則採用 LU 因子分解。

notebook 地址:

https://nbviewer.jupyter.org/github/fastai/numerical-linear-algebra/blob/master/nbs/3.%20Background%20Removal%20with%20Robust%20PCA.ipynb

視訊地址:

https://www.youtube.com/watch?v=C8KEtrWjjyo&index=3&list=PLtmWHNX-gukIc92m1K0P6bIOnZb-mg0hY

https://www.youtube.com/watch?v=Ys8R2nUTOAk&index=4&list=PLtmWHNX-gukIc92m1K0P6bIOnZb-mg0hY

https://www.youtube.com/watch?v=O2x5KPJr5ag&list=PLtmWHNX-gukIc92m1K0P6bIOnZb-mg0hY&index=5

4. Compressed Sensing with Robust Regression

壓縮感測對於允許低輻射的 CT 掃描至關重要——影像可以用較少的資料重建。在這裡,我們將學習該技術並將其應用於 CT 影像。

notebook 地址:

https://nbviewer.jupyter.org/github/fastai/numerical-linear-algebra/blob/master/nbs/4.%20Compressed%20Sensing%20of%20CT%20Scans%20with%20Robust%20Regression.ipynb#4.-Compressed-Sensing-of-CT-Scans-with-Robust-Regression

視訊地址:

https://www.youtube.com/watch?v=YY9_EYNj5TY&list=PLtmWHNX-gukIc92m1K0P6bIOnZb-mg0hY&index=6

https://www.youtube.com/watch?v=ZUGkvIM6ehM&list=PLtmWHNX-gukIc92m1K0P6bIOnZb-mg0hY&index=7

5. Predicting Health Outcomes with Linear Regressions

notebook 地址:

https://nbviewer.jupyter.org/github/fastai/numerical-linear-algebra/blob/master/nbs/5.%20Health%20Outcomes%20with%20Linear%20Regression.ipynb

視訊地址:

https://www.youtube.com/watch?v=SjX55V8zDXI&index=8&list=PLtmWHNX-gukIc92m1K0P6bIOnZb-mg0hY

6. How to Implement Linear Regression

notebook 地址:

https://nbviewer.jupyter.org/github/fastai/numerical-linear-algebra/blob/master/nbs/6.%20How%20to%20Implement%20Linear%20Regression.ipynb

視訊地址:

https://www.youtube.com/watch?v=SjX55V8zDXI&index=8&list=PLtmWHNX-gukIc92m1K0P6bIOnZb-mg0hY

7. PageRank with Eigen Decompositions

我們已經將 SVD 應用於主題建模、背景去除和線性迴歸。SVD 與特徵分解密切相關,因此我們現在將學習如何計算大型矩陣的特徵值。我們將使用 dbpedia 資料,一個維基百科連結的大資料集,因為這裡的主要特徵向量給出了不同維基百科頁面的相對重要性(這是谷歌 pagerank 演算法的基本思想)。我們將研究 3 種不同的計算特徵向量的方法,它們的複雜性越來越高(而且有用性也越來越高!).

notebook 地址:

https://nbviewer.jupyter.org/github/fastai/numerical-linear-algebra/blob/master/nbs/7.%20PageRank%20with%20Eigen%20Decompositions.ipynb

視訊地址:

https://www.youtube.com/watch?v=AbB-w77yxD0&list=PLtmWHNX-gukIc92m1K0P6bIOnZb-mg0hY&index=9

https://www.youtube.com/watch?v=1kw8bpA9QmQ&index=10&list=PLtmWHNX-gukIc92m1K0P6bIOnZb-mg0hY

8. Implementing QR Factorization

notebook 地址:

http://nbviewer.jupyter.org/github/fastai/numerical-linear-algebra/blob/master/nbs/8.%20Implementing%20QR%20Factorization.ipynb

視訊地址:

https://www.youtube.com/watch?v=1kw8bpA9QmQ&index=10&list=PLtmWHNX-gukIc92m1K0P6bIOnZb-mg0hY

課程特色

本課程採用自上而下的教學方法,這與大多數數學課程的操作方式不同。通常,在自下而上的方法中,首先學習將要使用的所有獨立元件,然後逐步將它們構建成更復雜的結構。問題在於,學生經常失去動力,沒有“大局感”,不知道自己需要什麼。

哈佛大學教授大衛·帕金斯(DavidPerkins)有一本書《使學習成為整體》,書中他將棒球作為類比。我們不要求孩子們在我們讓他們玩遊戲之前記住所有的棒球規則和理解所有的技術細節。相反,他們開始玩一種簡單的感覺,然後隨著時間的推移逐漸學習更多的規則/細節。

如果你上的是 fast.ai 人工智慧深度學習課程,那就是我們使用的課程。你可以在這篇博文中聽到我的教學哲學,或者我在舊金山機器學習會議上的演講。這麼說吧,如果你一開始不明白所有的事情,別擔心!你不應該這樣。我們將開始使用一些尚未解釋的“黑盒”或矩陣分解,然後我們將在稍後深入討論較低階別的細節。

首先,集中精力做什麼,而不是做什麼。

最後再附上教程連結:

https://github.com/fastai/numerical-linear-algebra


相關文章