最讚的 PyTorch 免費初學課程,由臉書 AI 團隊教學! — Udacity 課程心得

by 好豪
Published: Updated:

Udacity 的 Intro to Deep Learning with PyTorch 是由 Facebook 的人工智慧團隊開設的線上課程,PyTorch 的主要開發者也是講師之一。重要的是,如果你不太需要修課證書的話,Udacity 的這門線上課程與習題都免費

我過去用過許多機器學習套件,這次為了學習 PyTorch,花了大約總共十個小時的零碎時間完成了這門課,我覺得它很適合想好好練習程式碼實踐深度學習的學生。我將在這則筆記寫下我的課程心得、以及為何喜歡這門課。

為什麼要學 PyTorch


PyTorch 是最初由 Facebook 人工智慧研究團隊開發的深度學習套件,與 NumPy 相似的張量操作語法是它其中一大特色。它最常拿來跟 TensorFlow 與 Keras 比較,簡短而言,我們可以用工作目的來比較這些深度學習套件的選擇:

  • 預測問題不複雜、要求快速構建模型:選擇 Keras(TensorFlow)
  • 需要將模型大規模(或跨平台)部署在產品、或者是要在嵌入式系統執行:選擇 TensorFlow
  • 想要快速做研究、嘗試新的深度學習模型構造:選擇 PyTorch

PyTorch 與 TensorFlow 詳細的比較可以參考 Learning By Hacking 分享的短文。不過,隨著 PyTorch 與 TensorFlow 每年都在快速更新,上述這些套件優勢差異越來越小

筆者好豪自己則是在 Kaggle 上看到新比賽 PyTorch 使用者越來越多,加上常要寫程式實作關注領域的最新論文,認為 PyTorch 是個適合實驗新模型與新訓練方法的套件,所以找到了這門課並完成學習。

PyTorch 在 2020 年的搜尋熱度已經超過 Keras(Source: Google Trend,2020-12-01)

這門課適合什麼樣的人

非常適合想學好 PyTorch 實作的人!這門課 的主軸就是在學 PyTorch 程式碼,課程影片說明跟 PyTorch 程式碼作業的份量幾乎是 1:1,一部分的習題會是選擇題確認學習成效、一部分的習題則是用 Jupyter Notebook 的形式要求你寫出特定功能程式碼,教學團隊將提供參考解答給你檢查正確性。

由於這門課是專注教 PyTorch 在機器學習的應用,所以需要有 Python 基礎才適合來上課。PyTorch 套件本身有很多方便的功能、需要的 Python 知識背景不用太深厚,至少你要會寫 for loop、if else、也知道 function 是什麼,剩下的就邊上課邊學吧!

課程會全面性提到機器學習與深度學習的重點,所以不需要任何機器學習基礎,不過好豪認為每個主題說明都不深入,如果你完全沒學過機器學習的話,上課過程或許需要多點耐心、多查資料補充知識囉。

我認為這門課最適合寫過其他機器學習套件的人,例如使用過 Keras、TensorFlow、Scikit-Learn、XGBoost 等等,有其他機器學習使用經驗,這門課既可以用精美動畫幫你快速複習重要深度學習觀念、也有充足的 PyTorch 練習專案讓你上手這個 Facebook 主導開發的套件。

課程特色

就是要你動手寫 PyTorch

這門課 是一門完整練習 PyTorch 的課程,你需要對 PyTorch 有足夠的好奇心與學習慾望才適合來上課。這門課會從基本的 Tensor 定義教起、到模型建構、訓練與驗證流程,讓你全面地學會操作 PyTorch。課程的程式碼講師都放在 GitHub 上,讓你可以方便的閱讀與複習。

由於覺得官方課程 GitHub 內容有點散亂,好豪個人也推薦在上課的過程對照 yunjey 的 GitHub 程式碼 作為補充教材,很適合放在手邊當作 Cheatsheet、腦袋轉不過來的時候可以隨時參考 PyTorch 語法。

精美動畫教學

就如本文一再強調的,這門課 重視實戰演練,跟深度學習有關的數學講師大多不用公式講解、而是用動畫呈現概念

這門課的深度學習講解動畫是好豪目前為止看過最好理解的,對學習相當有幫助。模型架構有許多複雜的超參數需要調整,用數學公式或文字敘述講解都會有眼花撩亂的感覺,本課程選擇用動畫的方式教學,學生在腦海中形塑出模型運作的畫面,理解模型更直覺。

課程範例:LSTM 教學 (Source)

實戰專案

這門課 會帶你一步步完成兩個大型實戰專案:圖像風格轉換、以及文本情緒辨識。值得一提的是,不只是深度學習架構,連資料處理的工作,課程都會要求你寫程式練習

例如,在文本情緒辨識的專案中,你需要學會:

  • 清理原始文字資料(處理大小寫與特殊符號)
  • 將文字轉成整數編碼
  • One-Hot Encoding 轉換
  • 統一字串長度

這些工作聽起來都沒有深度學習架構本身那麼「酷」,但是,這些都是為了讓深度學習網路「看得懂」我們的資料所做的必要準備,不會這些技能,根本無法做出有效果的深度學習模型預測。這門課的專案內容囊括資料處理、模型建構、訓練、以及預測,讓你完整地練習深度學習實戰所需要的能力。



延伸學習

Udacity 的 Intro to Deep Learning with PyTorch 只能說是學 PyTorch 的敲門磚,我認為下一步需要好好研讀 PyTorch 完整的官方教學文件,包含了各式主題、想必會有能幫助到你研究專案的資訊!

除此之外,如果你跟我一樣有寫過其他深度學習套件、並且有好好跟著這門課寫程式習題的話,會發現 PyTorch 是個有點「囉唆」的套件,比起 Keras 這種方便的工具,就算是任務簡單的機器學習專案也要多寫好幾行程式碼。因此,上完這門課之後,好豪建議接著針對你的研究領域整合學習用來支援 PyTorch 的其他套件,提升工作效率:


結語

涵蓋所有深度學習的重點知識、精美動畫教學、並且滿滿的 PyTorch 實作習題,好豪認為這門 Udacity 課程 Intro to Deep Learning with PyTorch 是最讚的 PyTorch 學習課程!只要你想學好 PyTorch,這門課肯定是不二之選,快挽起袖子、開始上課寫程式吧!

此外,如果你習慣上課的時候有本書可以參考,由 PyTorch 核心開發者撰寫的《PyTorch 深度學習攻略》博客來連結)是優質的入門教材,值得一看。


學完這門課的幾個月後,筆者好豪在 2021 年 3 月結束的影像辨識深度學習競賽中拿到前 5%,這是我首次在專案中運用 PyTorch,想知道 PyTorch 如何運用在實戰中的讀者,歡迎閱讀我的 AIdea 競賽心得文章

推薦閱讀