本課程的重點是這個問題:我們如何以可接受的速度和可接受的精度進行矩陣計算?
本課程在 2017 年夏季舊金山大學分析理學碩士課程中教授(面向正在學習成為資料科學家的研究生)。該課程透過Jupyter Notebooks 使用Python 進行授課,大多數課程使用Scikit-Learn 和Numpy 等庫,以及Numba(一個將Python 編譯為C 以獲得更快性能的庫)和PyTorch(用於GPU 的Numpy 的替代品)在幾節課中。
筆記本附帶一個講座影片播放列表,可在 YouTube 上找到。如果您對講座感到困惑或講得太快,請查看下一個影片的開頭,我在其中回顧上一講座的概念,通常從新的角度或使用不同的插圖來解釋事物,並回答問題。
您可以使用我們 fast.ai 討論論壇上的計算線性代數類別提出問題或分享您的想法和資源。
以下列表連結到此儲存庫中的筆記本,透過 nbviewer 服務呈現。涵蓋的主題:
我們首先對數值線性代數中的一些基本概念進行高階概述。
我們將使用新聞組資料集來嘗試識別不同貼文的主題。我們使用術語-文檔矩陣來表示文檔中詞彙的頻率。我們使用 NMF 對其進行分解,然後使用 SVD。
SVD 的另一個應用是識別人員並去監控影片的背景。我們將介紹使用隨機 SVD 的穩健 PCA。隨機 SVD 使用 LU 分解。
壓縮感測對於以較低輻射進行 CT 掃描至關重要——可以用更少的資料重建影像。在這裡,我們將學習該技術並將其應用於 CT 影像。
我們已將 SVD 應用於主題建模、背景去除和線性回歸。 SVD 與特徵分解密切相關,因此我們現在將學習如何計算大型矩陣的特徵值。我們將使用 DBpedia 數據,這是一個維基百科連結的大型數據集,因為這裡的主特徵向量給出了不同維基百科頁面的相對重要性(這是 Google 的 PageRank 演算法的基本思想)。我們將研究 3 種不同的計算特徵向量的方法,這些方法的複雜性不斷增加(並且實用性不斷增加!)。
本課程採用自上而下的教學方法,這與大多數數學課程的運作方式不同。通常,在自下而上的方法中,您首先學習將使用的所有單獨組件,然後將它們逐漸建構成更複雜的結構。這樣做的問題是,學生常常失去動力,沒有「大局」意識,也不知道自己需要什麼。
哈佛大學教授大衛‧帕金斯(David Perkins)有一本書《讓學習變得完整》(Making Learning Whole),其中他用棒球作為類比。在讓孩子們玩遊戲之前,我們不要求孩子們記住所有棒球規則並了解所有技術細節。相反,他們開始玩遊戲的一般意義,然後隨著時間的推移逐漸了解更多規則/細節。
如果您參加了 fast.ai 深度學習課程,那就是我們使用的課程。您可以在這篇部落格文章或我在舊金山機器學習聚會上發表的演講中了解更多關於我的教學理念的資訊。
綜上所述,如果您一開始不明白所有內容,請不要擔心!你不應該這樣做。我們將開始使用一些尚未解釋的“黑盒子”或矩陣分解,然後我們稍後將深入研究較低級別的細節。
首先,專注於事物的作用,而不是它們是什麼。