新課上線:fast.ai推出針對程式設計師的機器學習課程

昨天,數據科學家Jeremy Howard發佈了fast.ai最新的(也是最全面的)課程:Introduction to Machine Learning for Coders

。這門課程在舊金山大學中錄製,是數據科學研究生課程的一部分,涵蓋了目前機器學習中最重要的使用基礎。其中共有12節課,每節課大約2小時。課程要求你有至少一年的編程經驗,以及高中數學基礎。以下是論智對課程內容的大致編譯:

現在網上有很多優秀的機器學習課程了,最出名的Andrew Ng的Coursera課程。但是由於課程推出的時間較早,有些過時,因為其中用到的是Matlab。而我們這次的新課程使用的是現在流行的工具和庫,例如Python、pandas、scikit-learn和PyTorch。與很多領域中的教育資料不同,我們的方法是“編程為先”而不是“數學為先”。這很適合每天編寫代碼的人,但可能不會過多地練習數學知識(我們會在必要的時候穿插講解數學)。更重要的是,這項課程非常“個性化”,我們並不會講到各種類型的模型,只是關注在實踐中真正有用的東西。

在課程中,我們會講到兩種主要類型的模型:基於決策樹的模型(尤其是經過bagging的決策數森林),以及基於梯度下降的模型(邏輯迴歸和它的變體)。決策樹模型搭建的結構如下圖所示(實際工作中你可能會用到比這更大的樹):

新課上線:fast.ai推出針對程序員的機器學習課程

Terence Parr教授和Prince Grover關於決策樹可視化技術的研究,利用了他最新的a

決策樹方法非常靈活易用,用bagging和boosting結合後,可以在很多實用任務上運用。但是,當它們用到訓練之外的數據上時,可能有些困難,而且在圖像、音頻、自然語言等類型的數據上會表現得不太精確。這些問題通常都能用梯度下降的方法解決,這些會在我們課程的下半部分講到,然後簡單地講些深度學習神經網絡的知識作為結尾。(如果你曾經上過我們的Practical Deep Learning for Coders的課程,可能會覺得有些地方概念有重合,但是我們教授的方法是不同的)

你將學會如何從零開始創建完整的決策樹森林,並編寫自己的深度學習模型,從零開始訓練。在這一過程中,你會學到很多有關數據處理、模型測試和產品開發的技巧(包括有關數據產品的道德問題)。

下面是對每節課程的簡要介紹。

Lesson 1—Introduction to Random Forests

第一課將向同學們展示如何創建一個隨機森林,隨機森林也許是應用最廣泛的機器學習模型了,其中會以Kaggle競賽中的Bull Book for Bulldozers項目為例,用隨機森林創造出解決方案,結果可以達到Kaggle排行榜的前25%。你將學到如何用Jupyter Notebook創建並分析模型,如何下載數據,以及其他可能在實踐中用到的機器學習基礎技巧。

新課上線:fast.ai推出針對程序員的機器學習課程

Lesson 2—Random Forest Deep Dive

這節課我們將學習尺度(metrics)、損失函數和過度擬合(這可能是最重要的機器學習概念)。我們會討論如何用驗證集和測試集幫助我們衡量過度擬合。

之後,我們講學習隨機森林是如何運行的。首先,觀察組成森林的每個決策樹,然後學習“bagging”。之後,我們會學習一些能讓隨機森林更快更精確的有用的技術。

新課上線:fast.ai推出針對程序員的機器學習課程

Lesson 3—Performance,Validation and Model Interpretation

這節課我們會講到如何讀取更大的數據集,這個數據集可能都無法在你機器上的RAM中讀取。之後,我們還會學習如何從該數據集中創建一個隨機森林。之後,還會講到軟件工程中的“profiling”的概念,學習如何加速代碼,尤其是在處理大型數據集時。

接著,我們會進一步研究驗證集,講解如何創建好的驗證集,之後會從新的數據集中按此標準選擇好的驗證集。

在這節課的後半部分,我們會講到“模型的可解釋性”——這是用模型理解數據的重要技巧。這裡研究可解釋性主要是看“特徵重要性曲線”,這是該話題下重要的技術。

新課上線:fast.ai推出針對程序員的機器學習課程

Lesson 4—Feature Importance,Tree Interpreter

這節課,我們會深入講解特徵重要性,其中會講到如何才能讓重要性曲線含有更豐富信息的多種方法,如何用它們去修整你的特徵空間,以及用樹狀圖理解特徵關係。

在本節課的後半部分,我們會學到兩種重要的解釋技術:部分依賴圖和樹形解釋圖。

新課上線:fast.ai推出針對程序員的機器學習課程

Lesson 5—Extrapolation and RF from Scratch

這節課會學習“樹解釋器(tree interpreter)”,包括用“瀑布圖”分析輸出。下一步,我們會解釋外推法(extrapolation)的重要概念,這是隨機森林的一個弱點,它無法預測輸入數據範圍之外的值。我們研究瞭如何能確定這一問題的方法,以及如何應對。

在這節課的後半部分,我們會開始編寫自己的隨機森林。

新課上線:fast.ai推出針對程序員的機器學習課程

Lesson 6—Data Products

在課程的前半部分,我們會學習如何用機器學習模型創建數據產品(data products),基於“The Drivetrain Method”。

接下來,我們會更深入地探究外推問題,順便會學習幾個numpy技巧。

新課上線:fast.ai推出針對程序員的機器學習課程

Lesson 7—Introduction to Random Forest

這時我們就要結束對隨機森林的介紹了,同時我們還會簡單介紹“cython”庫,用它對Python代碼稍加改造,就能得到和C代碼一樣的速度。

之後,我們會進入到下一階段——基於梯度下降的方法,例如神經網絡和邏輯迴歸。

新課上線:fast.ai推出針對程序員的機器學習課程

Lesson 8—Gradient Descent and Logistic Regression

繼續梯度下降的課程,首先我們會用PyTorch幫助我們從零開始應用邏輯迴歸,我們會建立一個針對經典手寫數字的MNIST數據集的模型。

新課上線:fast.ai推出針對程序員的機器學習課程

Lesson 9—Regularization,Learning Rates and NLP

這節課繼續建立邏輯迴歸模型,並且我們在其中增加了重要的特徵:正則化。這裡會學習L1和L2正則化,以及如何運用它們。同時,我們還會講到學習率的問題,如何為你的問題選擇學習率。

在本節課的後半部分,我們會討論自然語言的處理。我們會對流行的IMDb文本數據集建立詞袋錶示,用稀疏矩陣保證良好的性能和內存使用。從中我們建立了多個模型,包括樸素貝葉斯和邏輯迴歸,同時還會向其中添加ngram特徵提高性能。

新課上線:fast.ai推出針對程序員的機器學習課程

Lesson 10—More NLP,and Columnar Data

這節課程會繼續創建NLP模型,其中結合了樸素貝葉斯和邏輯迴歸,得出混合的“NB-SVM”模型,它是文本分類的最強基準模型。為了完成這項任務,我們在PyTorch中創建了一個新的類別:nn.Module。

在這節課的後半部分,我們開始用深度學習研究表格和關係數據,藉助Kaggle競賽中的Rossmann數據集。並且開始在這個數據集上研究特徵工程。我們會學習連續變量和分分類變量,以及那種特徵工程可以完成這些變量。

新課上線:fast.ai推出針對程序員的機器學習課程

Lesson 11—Embeddings

首先我們會講解樸素貝葉斯背後的數學原理,然後深入研究嵌入,二者都是用於分類變量和表格數據,也可以用於NLP中的文字。

新課上線:fast.ai推出針對程序員的機器學習課程

Lesson 12—Complete Rossmann,Ethical Issues

在課程的前半部分,我們會把所學到的所有內容進行結合,創造一個針對Rossmann數據集的全面模型,包括分類特徵和連續特徵,以及各種類別的特徵工程。

下半部分,我們會提到在機器學習模型的運用過程中可能出現的一些道德問題,以及為什麼機器學習從業者應該有所警覺,如何解決他們。很多學生表示,這是這次課程最重要的部分!

新課上線:fast.ai推出針對程序員的機器學習課程



分享到:


相關文章: