
【我們為什麼要推薦這篇文章】過年放九天是不是怕閒得發慌?我們幫你找到國外最受好評、結合理論、實踐,免費的 AI 課程影片,比打麻將積極進取多了,還能避開詢問你為何單身的親戚,上進有為的青年如你,好課程不要嗎?(責任編輯:鄧天心)
好消息,又有新課程推薦!
國外最受好評、理論+實踐相結合、完全免費的AI課程——「給工程師的實踐深度學習課」,剛剛上線了全新的2019版!
課程出品方、fast.ai創始人Jeremy Howard介紹說,這次的課程,內容100%全新,還包括之前從未介紹過的一些新成果,以及它們的現實應用。
其中有些成果,甚至新到論文都還沒發表。比如說,用遷移學習訓練GAN,訓練時間從幾天縮短到了幾小時。
整個課程一共7節,帶你從理論到應用學成深度學習,計算機視覺、NLP、推薦系統等等一課打盡。
Jeremy發推宣布不到半天,600多人轉發推薦,連機器學習頂會ICML官推都轉了。
前兩期課程的學生和各路網友都跑出來花式讚美,甚至有不少人直接說它是「 最好的深度學習課程 」。
web框架Django的開發者之一Simon Willison就曾經在博客上分享過自己學了一節課,訓練最厲害的圖像分類模型的經歷。
還有學生上課成癮,願意一次又一次地回爐再深造。一位名叫ScoutOrgo的網友就是這麼幹的。他在HackerNews社區評論說:
fast.ai課程每次迭代我都上,每次都覺得很值。最新的2019課程也好優秀,雖然裡邊的很多概念我都學過了,還是每節課都能學到一大堆東西。
課如其名,這套課程的核心是「實踐」。前半部分,幾乎完全集中在實戰技巧上,對於理論只提到了實踐中繞不開的那些;到了後半部分,才逐步深入地探討了理論。
可以找同母語地區的人一起討論,論壇更友善
隨著新版課程一起上線的,還有更國際化的課程社區。
Jeremy介紹說,他們為課程論壇添加了新功能,能按照時區、地點、語言給話題分類,想創建或者尋找同一地區、用母語討論的學習小組更容易了。
不過現在,這個功能似乎出了點小bug,暫時沒上線。Jeremy也說正在修復,歡迎有同學試用成功了告訴我們。
參與到社區中,跟同學們討論本來就是好好學習的一個重要環節,現在,連「讓你和同胞用母語討論」這樣貼心的功能都來了,還有什麼理由不好好學習吶?
論壇地址:https://forums.fast.ai/c/part1-v3
除了各國人民跨語言跨時區討論之外,可能兩小時的影片也會成為很多同學的學習障礙。
因此,新版課程的播放器也是更新過的,非常強大,可以搜索課程內容,並直接跳轉到你要找的視頻部分。
圖像、文本、協同過濾全精通
這套課程總共有七節,每節課除了上課兩小時視頻之外,課後還需要花大約10個小時完成作業。
從頭到尾好好學習需要大約84小時。如果留到春節假期一天一節,就是一天12小時撲在學習上,比打麻將積極進取多了,還能避開詢問你為何單身的親戚。
上課前就要會的基礎知識也不多:要有一年的編程經驗,而且具有高中數學知識(課程中可能穿插了一些大學數學)。
因為是用PyTorch庫教學,所以最好是Python上的編程經驗。
84小時看起來很長,但如果你看看課程涉及的內容,會覺得這個時間,簡直太「速成」了。
課程涉及的應用有四大類,從計算機視覺、NLP、到根據表格數據做預測、推薦系統都要學。具體是這樣的:
- 計算機視覺(例如按品種分類寵物照片)
圖像分類
圖像定位(分割和激活圖)
圖像關鍵
- NLP(例如電影評論情緒分析)
語言建模
文件分類
- 表格數據(例如銷售預測)
分類數據
連續數據
- 協同過濾(例如電影推薦)
這些內容覆蓋的基礎概念也很多,包括參數和激活、隨機初始化和遷移學習、卷積、Dropout、權重衰減等等:

這七節課,可以分為純實踐部分和比較深入的理論部分。
前四節課特別重實踐。
第一課用遷移學習方法訓練圖像分類器;第二課開始自己請洗數據構建數據集;第三課從原來的單標籤數據集過渡到多標籤數據集,還要學習圖像分割;第四課學習NLP和協同過濾,練習用算法給電影評論分類,再推薦電影。
後三節課相比之下就稍微重理論一點點。
第五課要從頭開始搭建自己的神經網絡,在這個過程中理解反向傳播;第六課要學習各種改進訓練防止過擬合的技術、理解卷積,還要討論數據倫理;第七課要從頭開始構建更複雜的ResNet和U-Net,研究各種損失函數,還要進入GAN的領域。
每一節課的具體內容是這樣的:
第一課:圖像分類
新人第一課,要訓練一個圖像分類器,能夠以最高的準確度識別寵物品種。其中的關鍵是使用遷移學習,這也是本課程大部分內容的基礎。

我們將看到如何分析模型以了解其失效模式。在這一部分,我們會發現模型出錯的地方與寵物育種專家可能犯錯的地方相同。
最後,本節課還討論了在訓練神經網絡時如何設置最重要的超參數:學習率。我們將看看標籤這一重要但很少討論的話題,並了解fastai提供的一些功能,這些功能可以輕鬆地將標籤添加到圖像中。
要注意的是,訓練分類器需要連接到雲GPU提供商,或者自己搭建一個合適GPU計算機,還需熟悉Jupyter Notebook環境的基礎知識。
第二課:數據集的創建和清理、從頭開始SGD
這部分內容是教授用戶學習如何使用自己的數據搭建圖像分類模型,包括以下主題:
- 圖片集
- 並行下載
- 創建驗證集
- 數據清理
Jeremy會教我們創建一個模型,用來區分泰迪熊和灰熊。

這節課的後半部分,將從頭開始訓練一個簡單的模型,創建我們自己的梯度下降迴路。

第三課:數據塊、多標籤分類、分割
我們從第3課開始研究一個有趣的數據集:Planet的從太空了解亞馬遜。
為了將這些數據轉化為我們需要用於建模的形式,我們將使用fastai最強大的唯一工具:數據塊API。這個API以後還要用很多次。
學完本課後,如果你準備學習更多關於數據塊API的知識,請查看這篇文章:Wayde Gilliam的《Finding Data Block Nirvana》:
https://blog.usejournal.com/finding-data-block -nirvana-a-journey-through-the-fastai-data-block-api-c38210537fe4
Planet數據集是一個多標籤數據集。也就是說:每個Planet圖像可以包含多個標籤,而我們看過的先前數據集每個圖像只有一個標籤。我們將看看我們需要對多標籤數據集進行哪些更改。
接下來,我們將看一下圖像分割。我們將使用與早期圖像分類模型類似的技術,並進行一些調整。fastai使圖像分割建模和解釋與圖像分類一樣簡單,因此不需要太多的調整。
本課程的這一部分使用的是CamVid數據集,它的誤差遠遠低於其他任何學術論文中的模型。
第四課:NLP、表格數據、協同過濾、嵌入
在這節課中,Jeremy給我們制定的目標是,預測電影評論是積極的還是消極的,稱之為情緒分析。我們將使用IMDb電影評論數據集深入研究自然語言處理(NLP)。
Jeremy將使用最初在2018年課程期間開發的ULMFiT算法,他說這是當今最準確的情緒分析算法。
創建情緒分析模型的基本步驟是:
1、創建語言模型,在大型語料庫(例如維基百科)上訓練,這裡的「語言模型」是學習預測句子的下一個單詞的任何模型
2、使用目標語料庫(IMDb電影評論)微調此語言模型
3、刪除這個微調語言模型中的編碼器,並用分類器替換它。然後,針對最終的分類任務微調這個情緒分析模型。
在進入NLP學習之後,我們將通過覆蓋表格數據以及協同過濾來完成編碼器深度學習的實際應用。
對於表格數據,我們將看到如何使用分類變量和連續變量,以及如何使用fastai.tabular模塊來設置和訓練模型。
然後,我們將看到如何使用類似於表格數據的想法來構建協同過濾模型。
在進入NLP學習之後,我們將通過覆蓋表格數據以及協同過濾來完成編碼器深度學習的實際應用。
對於表格數據,我們將看到如何使用分類變量和連續變量,以及如何使用fastai.tabular模塊來設置和訓練模型。
然後,我們將看到如何使用類似於表格數據的想法來構建協同過濾模型。
進入課程的中段,我們已經研究瞭如何在每個關鍵應用領域中創建和解釋模型。在課程的後半部分,我們將了解這些模型是如何工作的,以及如何從頭開始創建它們。
下面,我們將接觸到以下概念:
- 激活
- 參數
- 圖層
- 損失函數
第五課:反向傳播、加速SGD、從頭開始搭神經網絡
在第5課中,我們將所有訓練組合在一起,以便準確理解反向傳播時發生了什麼,並利用這些知識從頭開始創建和訓練一個簡單的神經網絡。

我們還將看到如何查看嵌入層的權重,以找出電影評論解讀模型對從分類變量中學到了什麼,讓我們避開那些爛片。

儘管嵌入在NLP的單詞嵌入環境中最為廣為人知,但它們對於一般的分類變量也同樣重要,例如表格數據或協同過濾。它們甚至可以與非神經模型一起使用,並取得了巨大成功。

第六課:正規化、卷積、數據倫理
這節課將討論一些改進訓練和避免過度擬合的強大技術:
- Dropout:在訓練期間隨機刪除激活,使模型正規化
- 數據增強:在訓練期間修改模型輸入,有效地增加數據大小
- 批量標準化:調整模型的參數化,使損失表面更平滑。

接下來,我們將學習卷積的所有知識,卷積可以被認為是矩陣乘法的一種變型,並且是現代計算機視覺模型的核心。
我們將利用這些知識創建一個類激活圖,這是一個熱圖,顯示圖像的哪些部分在做出預測時最重要。

最後,我們將討論一個許多學生告訴我們的主題,這是課程中最有趣也是最令人驚訝的部分:數據倫理。
我們將了解模型可能出錯的一些方式,特別關注反饋迴路、它們導致問題的原因以及如何避免這些問題。
我們還將研究數據偏差會導致算法偏差的方式,並討論數據科學家可以也應該提出的問題,以幫助確保他們的工作不會導致意外的負面結果。
第七課:從頭構建ResNet和U-Net、生成(對抗)網絡
最後一節課了,要學習的第一項內容也是「現代架構中最重要的技術之一」:跳躍連接。
關於跳躍連接,這節課會講到ResNet和U-Net架構。
ResNet是跳躍連接最知名的應用,整套課程講圖像識別時也是從頭到尾都在用ResNet。
而U-Net用的是另一種跳躍連接,它的作用是優化分割結果,以及其他輸出和輸入結構差不多的任務。

學習了U-Net之後,就要用它訓練一個超分辨率模型。這個模型不僅能把渣圖變清晰,同時還能清除jpeg圖片上的偽跡和文字水印。
為了讓模型結果更好,這節課還會帶著學生們結合特徵損失(feature loss,或者叫感知損失perceptual loss)和gram損失,創建自定義的損失函數。這是圖像上色等生成任務中常用的技術。
接下來,就要學習GAN裡使用的生成對抗損失了,有些情況下它能犧牲一些速度,增強生成模型的質量。
這節課展示的一些技術來自未發表的研究,包括:
- 用遷移學習更快更可靠地訓練GAN;
- 將架構創新和損失函數以前所未有的方式結合。
Jeremy在課程介紹中保證:結果驚艷,訓練只需幾小時,再也不用像以前一樣花上好幾天。
最後,這節課還要教你從頭開始構建一個循環神經網絡,也就是整套課程NLP內容都在用的基礎模型。實際上,RNN是規則的多層神經網絡的一個簡單重構。
嫌吳恩達老氣的另類「慈善機構」
這門課背後的fast.ai,在深度學習界算是獨樹一幟。
fast.ai由Kaggle大神Jeremy Howard、後悔讀了博的數學博士Rachel Thomas、原本在巴黎教了7年書的Sylvain Gugger聯合創辦。
他們是真正的實踐派,課程以「教實用的東西、高效解決問題」為核心追求,非常重視工程實現細節。
在去年發布更基礎的「 工程師的機器學習入門」課程(Introduction to Machine Learning for Codes)時,他們讚揚了吳恩達老師的入門課worderful之後就接了個「但是」:但是,它現在有顯得太老氣了,特別是作業還得拿Matlab寫。
fast.ai的課程就非常緊跟工程師的實踐潮流,用Python編程,用交互式的Jupyter Notebooks學習。
同時,他們也非常鼓勵學生去參加Kaggle競賽,檢驗自己的能力。
fast.ai不僅課程內容上新潮,還堪稱「慈善組織」:
課程全都免費,連個「收費領取證書」的設定都沒有。
Jeremy曾經說:「我們的商業模式就是:花自己個人的錢做點事情,幫人使用深度學習。」有人擔心「商業模式」不可持續的時候,Jeremy表示:
「Why not?我有足夠的錢。」
「完全獨立,連捐款都不收」的fast.ai積攢了大量好學生。
學生們經常總結、分享課程經驗。比如說,曾經學生總結了「稱霸Kaggle的十大深度學習技巧 」,廣為流傳。
寫筆記總結經驗還不是好學生的最高級形態,自古以來,「為母校爭光」都是要做出新成就的。
fast.ai的學生Andrew Shaw就做到了。他和Jeremy老師、美國國防部的Yaroslav Bulatov就一起實現了低成本18分鐘訓練完ImageNet。
和那些大廠的「X分鐘訓練完ImageNet」不一樣,他們的方法並沒有堆積計算資源,用的雲服務器成本還不到300塊,稱得上人人可用。
這個另類機構的其他成就還有:
配合PyTorch使用,一個API包攬常見深度學習應用的庫:fastai;
https://docs.fast.ai/
打響NLP遷移學習狂歡第一槍的ULMFiT;
http://nlp.fast.ai/category/classification.html
One More Thing
如果你達到了這門課的基本要求,有一年編程經驗和高中數學基礎,那麼,擋在你和它之間的,可能就只剩一大障礙了:
英語。
這事兒靠自身努力也好解決。先看看前阿里人於江水的這份工程師的英語學習指南吧,GitHub上已經5000多星了。
__
(本文經合作夥伴 量子位 授權轉載,並同意 TechOrange 編寫導讀與修訂標題,原文標題為 〈免費!速成!人氣爆棚!國外最火的深度學習實踐課新版發布,100%全新前沿內容〉。首圖來源: pxhere CC licensed)
延伸閱讀
破千顆星的 GitHub 超強資源包,所有好用的「深度學習」資源都在這裡啦!



