Fast AI:深度學習十四講

前言

深度學習如日中天,熱帖天天有,眼花繚亂,應接不暇。各種線上線下課程也順風而來、層出不窮,有從入門到進階、到精通、到放棄的版本,有從小學到中學、到大學、到跳槽的版本。特別是一些收費課程,大都借鑑國外開放課程的資料,但經常斷章取義、含糊其詞,東拼亂湊,違背開放共享、尊重原創的開源精神。事實上,這些課程更像是國外優秀課程的低配版、甚至山寨版。結合自身的學習歷程,我們以爲,童鞋們當直接學習第一手的原版課程,同時我們極度推崇“費曼學習技巧”,即按照“明確目標->以教促學->化整爲零->總結提煉”四個步驟不斷地迭代學習。

學界不乏優秀的深度學習課程,比如廣受讚譽的斯坦福雙星課程:

吳恩達的 CS230(http://cs230.stanford.edu/)

李飛飛的 CS231(http://cs231n.stanford.edu/)

這些教程大都是按照學術課程的方式展開,從最基本的概念開始,結合大量的數學推導,逐步開展課堂教學,最後才落實到具體的編程任務和大作業上。這種典型的、Bottom-up的教學方式無可厚非,對相關學科、基礎較好的學生來說非常受益。另一方面,對於廣大AI應用方向的學生、工程師來說,往往需要的是“先見森林,再見樹木”的學習方式,先擼一遍代碼,有個基本認識,然後再選擇性集中學習。面對一些急迫性的實際問題時,亂拳打死老師傅也不無道理。

基於上述考慮,結合我們自身學習的歷程,上海交通大學媒體技術實驗室選擇fastai開設的慕課課程爲學習對象(注:fastai的大名大家應該有所耳聞吧?對,就是那個18分鐘訓練ImageNet的團隊),在學習的過程中,童鞋們同步形成較爲系統的課程補充資料(包括PPT、遇到的坑、驗證過的代碼等),通過分享與反饋,爲MOOC和開源社區盡綿薄之力。

課程介紹

相比於典型Bottom-up的方法,fastai課程強調Top-down的學習理念,我們直接從實際任務入手,通過編程快速實現世界領先的結果,可以先對深度學習有一個非常具象的認識,接着我們再逐漸深入這些結構,探尋它們背後的概念和方法。

在這門課程中,深度學習不再神祕,只需要你有一定的編程經驗和一些基本的數學概念,本課程可以幫助你快速入門深度學習。

fastai庫是基於Pytorch實現的,同時做了很多優化,是一個非常強大同時速度極快的深度學習框架。通過上面幾行簡單的代碼,我們便可以對一個分類網絡ResNet34進行訓練。

fastai庫的GitHub鏈接如下:

https://github.com/fastai/fastai

本課程主要分爲兩大部分,第一部分包含7個課時,介紹瞭如何利用深度學習去解決計算機視覺和自然語言處理領域的一些經典任務,同時對深度學習的一些重要概念和模型進行了詳細闡述。第二部分同樣包含7個課時,講授了深度學習領域的一些前沿熱點工作,介紹如何閱讀這些論文並使用最新的技巧實現世界領先的結果。下面我們便簡要介紹一下這14個課時的主要內容。

  • Lesson1 – Recognizing Cats and Dogs

這一課時主要介紹了環境配置、貓狗分類任務以及深度學習簡介,我們將學到如何用短短几行代碼實現領先的分類效果。

  • Lesson2 – Convolutional Neural Networks

這一課時詳細介紹了在使用卷積神經網絡(CNN)時常用的訓練和測試流程,以及相應的技巧,並將此應用於幾個實際的分類任務當中。

  • Lesson3 – Understanding Convolutions

這一課時主要介紹了Keras與fastai庫的對比,通過一個實際的比賽講授如何向Kaggle提交結果,最後對卷積神經網絡進行了詳細的闡述。

  • Lesson4 – Structured, Time Series, & Language Models

這一課時主要介紹了過擬合以及解決過擬合的有效方法—Dropout,同時以rossmann銷量預測爲例介紹了結構化時間序列模型,最後以IMDB影評情感判斷爲例對自然語言處理進行了初步地講解。

  • Lesson5 – Collaborative Filtering; Inside the Training Loop

這一課時通過解決影評預測的任務介紹了協同過濾,特別是embedding的方法,並詳細分析了隨機梯度下降等在深度學習中經常使用的幾種優化方法。

  • Lesson6 – RNNs From Scratch

這一課時主要對隨機梯度下降法進行了代碼實現,初步介紹了循環神經網絡(RNN)的基本結構。

  • Lesson7 – ResNets From Scratch

這一課時通過建立語言模型,詳細介紹了在自然語言處理任務中常用的幾種RNN結構,同時在CIFAR-10數據集上逐步優化我們的CNN結構,並詳細分析了BatchNrom和ResNet。

  • Lesson8 – Object Detection

這一課時詳細介紹了目標檢測任務,並通過代碼實現了對圖片中最大的目標進行檢測。

  • Lesson9 – Single Shot Multibox Detector (SSD)

這一課時首先通過代碼實現了SSD,取得了不錯的目標檢測效果,並詳細分析了該領域最新的幾篇論文,並通過實現它們提升了模型的效果。

  • Lesson10 – NLP Classification and Transfer Learning

這一課時通過之前完成過的影評情感判斷任務,幾乎是開創性地將遷移學習的方法引入這個自然語言處理任務當中,通過代碼實現了世界領先的結果。

  • Lesson11 – Neural Translation; Multi-model Learning

這一課時主要介紹了機器翻譯模型,利用很多最新的技巧如注意力模型等實現了很好的效果,最後對視覺語義嵌入模型進行了簡要的闡述和實現。

  • Lesson12 – DarkNet; Generative Adversarial Networks

這一課時主要分析了DarkNet的網絡結構,接着對生成對抗網絡(GAN)進行了介紹,並通過代碼實現了WGAN模型和Cycle-GAN模型。

  • Lesson13 – Image Enhancement

這一課時主要介紹了fastai庫的一些改進以及Inception Network,接着對圖片風格遷移進行了詳細介紹,並通過代碼實現了初步的風格遷移。

  • Lesson14 – Super Resolution; Segmentation with Unets

這一課時詳細介紹並實現了圖像超分辨率的模型,並將其思想應用於風格遷移,從而優化了上一節課使用的方法,最後通過詳細分析並實現Unet模型解決了Carvana這個圖像分割任務。

看完這些課程介紹,大家是不是已經迫不及待想上手實現了呢?不要着急,這裏有一份詳細的課程資料等着你們去學習~通過費曼學習技巧,我們針對每一個課時都輸出了相應的教學文檔,相信大家通過觀看fastai課程視頻並結合這些文檔,一定能快速入門深度學習!

資料包含了所有14個課時的課件和實現代碼以及原版視頻課程網站,感興趣的同學趕緊去下載吧~

GitHub鏈接

https://github.com/sjtu-medialab/DeepLearning-IntroductionCourse

fastai課程網站

http://course.fast.ai/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章