國外最火的深度學習實踐課新版發布,100%全新前沿內容
好消息,又有新課程推薦!
國外最受好評、理論+實踐相結合、完全免費的 AI 課程——“給程序員的實踐深度學習課”,剛剛上線了全新的 2019 版!
課程出品方、fast.ai 創始人 Jeremy Howard 介紹說,這次的課程,內容 100% 全新,還包括之前從未介紹過的一些新成果,以及它們的現實應用。
其中有些成果,甚至新到論文都還沒發表。比如說,用遷移學習訓練 GAN,訓練時間從幾天縮短到了幾小時。
整個課程一共 7 節,帶你從理論到應用學成深度學習,計算機視覺、NLP、推薦系統等等一課打盡。
Jeremy 發推宣布不到半天,600 多人轉發推薦,連機器學習頂會 ICML 官推都轉了。
前兩期課程的學生和各路網友都跑出來花式贊美,甚至有不少人直接說它是“***的深度學習課程”。
web 框架 Django 的開發者之一 Simon Willison 就曾經在博客上分享過自己學了一節課,訓練最厲害的圖像分類模型的經歷。
還有學生上課成癮,愿意一次又一次地回爐再深造。一位名叫 ScoutOrgo 的網友就是這么干的。他在極客扎堆兒的 HackerNews 社區評論說:
fast.ai 課程每次迭代我都上,每次都覺得很值。***的 2019 課程也好優秀,雖然里邊的很多概念我都學過了,還是每節課都能學到一大堆東西。
課如其名,這套課程的核心是“實踐”。前半部分,幾乎完全集中在實戰技巧上,對于理論只提到了實踐中繞不開的那些;到了后半部分,才逐步深入地探討了理論。
課程地址:
https://course.fast.ai/
更貼心的論壇,可搜索的視頻
隨著新版課程一起上線的,還有更國際化的課程社區。
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 用的是另一種跳躍連接,它的作用是優化分割結果,以及其他輸出和輸入結構差不多的任務。
△ ResNet 跳躍連接對損失表面的影響
學習了U-Net 之后,就要用它訓練一個超分辨率模型。這個模型不僅能把渣圖變清晰,同時還能清除 jpeg 圖片上的偽跡和文字水印。
為了讓模型結果更好,這節課還會帶著學生們結合特征損失(feature loss,或者叫感知損失 perceptual loss)和 gram 損失,創建自定義的損失函數。這是圖像上色等生成任務中常用的技術。
△ 用特征損失和 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 積攢了大量“自來水”。
學生們經??偨Y、分享課程經驗。比如說,曾經學生總結了“稱霸 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 多星了。