這裡紀錄了我在學習深度學習時蒐集的一些線上資源。內容由淺入深,而且會不斷更新,希望能幫助你順利地開始學習:)
本文章節
遊玩空間
這節列舉了一些透過瀏覽器就能馬上開始遊玩 / 體驗深度學習的應用。作為這些應用的使用者,你可以先高層次、直觀地了解深度學習能做些什麼。之後有興趣再進一步了解背後原理。
這小節最適合:
- 想要快速體會深度學習如何被應用在真實世界的好奇寶寶
- 想要直觀理解類神經網路(Artifical Neural Network)運作方式的人
- 想從別人的深度學習應用取得一些靈感的開發者
Deep Playground | ConvNetJS |
---|---|
Deep Playground
- 由 Tensorflow 團隊推出,模擬訓練一個類神經網路的過程並了解其運作原理
- 可以搭配這篇 Introduction to Neural Networks: Playground Exercises 學習
ConvNetJS
- 訓練類神經網路來解決經典的 MNIST 手寫數字辨識問題、圖片生成以及增強式學習
- 由 Tesla 的 AI 負責人 Andrej Karpathy 建立
Magenta | Google AI Experiments |
---|---|
Magenta
Google AI Experiments
- 這邊展示了接近 40 個利用圖片、語言以及音樂來與使用者產生互動的機器學習 Apps,值得慢慢探索
- 知名例子有 Quick Draw 以及 Teachable Machine,將在下方介紹
Quick Draw | Teachable Machine |
---|---|
Quick Draw
- 由 Google 推出的知名手寫塗鴉辨識,使用的神經網路架構有常見的卷積神經網路 CNN 以及循環神經網路 RNN
- 該深度學習模型會不斷將最新的筆觸當作輸入來預測使用者想畫的物件。你會驚嘆於她精準且即時的判斷
Teachable Machine
- 利用電腦 / 手機上的相機來訓練能將影像對應到其他圖片、音訊的神經網路,饒富趣味
- 透過這例子,你將暸解機器學習的神奇之處以及其侷限所在
Fast Neural Style | TensorFlow.js |
---|---|
Fast Neural Style
- 展示如何使用 WebGL 在瀏覽器快速地進行神經風格轉換 Neural Style Transfer
- 你可以選擇任何一張圖片,並在此網站上將其畫風轉變成指定的藝術照
- Deepart.io 也提供類似服務
TensorFlow.js
- TensorFlow.js 頁面有多個利用 JavaScript 實現的深度學習應用,如上圖中的人類姿勢估計 Human Pose Estimation。
- 你可以在該應用裡頭打開自己的攝影機,看該應用能不能偵測到你與朋友的姿勢。
GAN Lab | Talk to Transformer |
---|---|
GAN Lab
- 對抗生成網路(Generative Adversarial Network,簡稱GAN)是非監督式學習的一種方法,通過讓兩個神經網路相互博弈的方式進行學習。此網站以 TensorFlow.js 實作 GAN 中兩個神經網路的學習過程,幫助有興趣的你更直觀地理解神奇的 GAN 的運作方式
Talk to Transformer
- 展示了一個由 OpenAI 推出,名為 GPT-2 的無監督式語言模型。該模型以 Google 發表的神經網路架構 Transformer 為基底,在給定一段魔戒或是復仇者聯盟的文字內容,該模型可以自己生成唯妙唯俏的延伸劇情。你也可以嘗試 AllenAI GPT-2 Explorer 來觀察 GPT-2 預測下個字的機率。
- 想要深入了解 Transformer 或 GPT-2,推薦閱讀:
NVIDIA AI PLAYGROUND | Grover |
---|---|
NVIDIA AI PLAYGROUND
- 提供 GauGAN 的線上展示,讓你可以利用簡單的筆觸來生成真實世界的風景圖片,也能上傳自己的圖片做風格轉換
- 提供 Image Impainting 服務,讓使用者自由抹去部分圖片並讓 AI 自動生成被抹去的區塊
Grover
- 一個偵測 / 生成神經假新聞(Neural Fake News)的研究,其網頁展示如何自動生成假新聞。
Waifu Vending Machine | This Waifu Does Not Exist |
---|---|
Waifu Vending Machine
- Waifu 來自日文 ワイフ,指的是一些非常受到歡迎、且被不少玩家/觀眾視為妻子的動漫女性角色。Sizigi Studios 團隊利用 GAN 隨機初始 16 名虛擬動漫角色,讓使用者可以進一步依照喜愛來創造專屬於自己的 Waifu。
- Waifu Vending Machine 產生的 Waifu 品質很高,使用者可以下載並分享自己創造的 Waifu,也可以選擇購買印製該 Waifu 的海報與抱枕。
This Waifu Does Not Exist
- 以 Nvidia 的 StyleGAN 隨機生成的 Waifu(右圖左側)。作者 Gwern 同時也使用開源的小型 GPT-2 隨機生成一段動漫劇情(右圖右側)。自釋出後已超越一百萬使用者拜訪該網站。
- 你也可以用大螢幕查看作者的另個相關網站:These Waifus Do Not Exist,用全畫面一次「觀賞」數十名隨機生成的 Waifus。
AI Notes | Anomagram |
---|---|
AI Notes
- AI Notes 是 吳恩達的 Deep Learning 專項課程的輔助教材,使用數學證明以及由 TensorFlow.js 建立的線上 demo 讓你可以直觀地學習如何初始化神經網路權重及如何最佳化模型權重
- 縮圖為 Parameter optimization in neural networks 單元中使用不同 Optimiziers 訓練模型的線上 demo
Anomagram
- Anomagram 是一個以 Tensorflow.js 實作,可以建立、訓練並測試能夠用來做異常檢測的 Autoencoder。
線上課程
看完遊玩空間的大量實際應用,相信你已經迫不及待地想要開始學習強大的深度學習技術了。
這節列舉了一些有用的線上課程以及學習教材,幫助你掌握深度學習的基本知識(沒有特別註明的話皆為免費存取)。
另外值得一提的是,大部分課程都要求一定程度的 Python 程式能力。
李宏毅教授的機器學習 / 深度學習課程 | Deep Learning Specialization @ Coursera |
---|---|
李宏毅教授的機器學習 / 深度學習課程
- 大概是全世界最好、最完整的深度學習中文學習資源,且作業皆提供 Colab 筆記本範例。
- 影片內容涵蓋基本理論(約 10 小時觀看時間)一直到進階的生成對抗網路 GAN 以及強化學習 RL。
- 想學語音辨識或是自然語言處理則可參考教授的用深度學習處理人類語言。
- 李宏毅机器学习笔记(LeeML-Notes,簡體) 則將教授上課的影片內容轉為筆記,方便瀏覽課程內容。
Deep Learning Specialization @ Coursera
- 原 Google Brain 的吳恩達教授開授的整個深度學習專項課程共分五堂課,從神經網路的基礎到能夠進行機器翻譯、語音辨識的序列模型,每堂課預計 1 個月完成,收費採訂閱制
- 程式作業會交互使用 Numpy、Keras 以及 TensorFlow 來實作深度學習模型
Practical Deep Learning For Coders @ fast.ai | Deep Learning @ Kaggle Learn |
---|---|
Practical Deep Learning For Coders @ fast.ai
Deep Learning @ Kaggle Learn
- 14 堂課程,主要使用 TensorFlow 實作深度學習模型
- 內容主要專注在電腦視覺(Computer Vision)以及如何應用遷移學習(Transfer Learning)
Elements of Artificial Intelligence | MIT Deep Learning |
---|---|
Elements of Artificial Intelligence
- 芬蘭最高學府赫爾辛基大學推出的 AI 課程。此課程目的在於讓所有人都能了解 AI,不需要任何程式經驗。這堂課非常適合完全沒有接觸過深度學習或是相關領域的人
- 課程分 6 個部分,包含「何謂 AI ?」、「真實世界的 AI」、「機器學習」以及「神經網路」等章節
MIT Deep Learning
- 麻省理工學院推出的深度學習課程,內容包含深度學習基礎、深度強化學習以及自動駕駛相關知識。Github Repo 包含了多個教學筆記本,值得參考。
- 上圖是 DeepTraffic,由 MIT 的研究科學家 Lex Fridman 推出的一個深度強化學習競賽。此競賽目標是建立一個可以在高速公路上駕駛汽車的神經網路。你可以在這裡看到線上 Demo 以及詳細說明。
6.S191: Introduction to Deep Learning | AI For Everyone |
---|---|
MIT 6.S191 Introduction to Deep Learning
- 麻省理工學院推出的另一堂基礎深度學習課程,介紹深度學習以及其應用。內容涵蓋機器翻譯、圖像辨識以及更多其他應用。此課程使用 Python 以及 TensorFlow 來實作作業,並預期學生具備基礎的微積分(梯度下降、鏈鎖律)以及線性代數(矩陣相乘)。
AI For Everyone
- Coursera 課程。吳恩達教授在這堂簡短的課程裡頭,針對非技術人士以及企業經理人說明何謂 AI、如何建立 AI 專案以及闡述 AI 與社會的關係。此課程十分適合沒有技術背景的讀者。從 AI For Everyone 學到的 10 個重要 AI 概念則是我個人上完課後整理的心得分享。
CS224n: Natural Language Processing with Deep Learning | CS231n: Convolutional Neural Networks for Visual Recognition |
---|---|
CS224n: Natural Language Processing with Deep Learning
- 由史丹佛 AI 實驗室的 Christopher Manning 教授從語言學、計算機科學的角度講述自然語言處理的所有必要知識,是想要打好 NLP 基礎的人不可不學的一堂課。課程約有 20 部影片,每部約長 1.5 小時。
CS231n: Convolutional Neural Networks for Visual Recognition
- 由史丹佛 Vision Lab 的李飛飛(Fei-Fei Li)教授等人以圖像分類任務為軸心,講述卷積神經網路以及所有電腦視覺的相關基礎知識。這是想要學會使用(卷積)神經網路來處理圖像數據的人不可不學的一堂課。Youtube 上有 16 部 2017 年的課程錄影,每部約長 1 小時。
- 課程中也包含了不少線上展示,如線性分類器的 loss 視覺化、kNN demo 以及圖像分類的 CIFAR-10 demo。
Making Friends with Machine Learning | To be Updated |
---|---|
Making Friends with Machine Learning
- MFML 是一門對 Google 內部開授的 ML/AI 訓練課程,由其 Chief Decision Scientist Cassie Kozyrkov 主講。此課程於 2021/11/25 對外開放。
- 此課程提供從構思 ML 專案到 launch AI 產品的步驟與大局觀,十分適合剛接觸相關領域的產品經理與企業決策者入門。
實用工具
這節列出一些在你的深度學習路上可以幫得上些忙的工具。
Colaboratory | TensorBoard |
---|---|
Colaboratory
- 由 Google 提供的雲端 Jupyter 筆記本環境,讓你只要用瀏覽器就能馬上開始訓練深度學習模型。你甚至還可以使用一個免費的 Tesla K80 GPU 或 TPU 來加速訓練自己的模型
- 該計算環境也能與自己的 Google Drive 做連結,讓運算雲端化的同時將筆記本 / 模型結果都同步到自己的筆電上
TensorBoard
- TensorBoard 是一個視覺化工具,方便我們了解、除錯並最佳化自己訓練的深度學習模型
- 除了 TensorFlow 以外,其他基於 Python 的機器學習框架大多也可以透過 tensorboardX 來使用 TensorBoard
Embedding Projector | Lucid |
---|---|
Embedding Projector
- 我們時常需要將圖片、文字轉成高維數字向量 Embedding 以供神經網路處理,而 Projector 能將此高維向量投影到 2、3 維空間上方便我們理解這些數據
- Projector 網站讓你在線上探索幾個常見的資料集,但事實上你也可以利用 Tensorboard 來視覺化自己的數據。
Lucid
- Lucid 是一個嘗試讓神經網路變得更容易解釋的開源專案,裡頭包含了很多視覺化神經網路的筆記本
- 你可以直接在 Colab 上執行這些筆記本並了解如何視覺化神經網路
Papers with Code | What-If Tool |
---|---|
Papers with Code
- 將機器學習的學術論文、程式碼實作以及 SOTA 的評價排行榜全部整理匯總在一起的網站,非常適合想要持續追蹤學術及業界最新研究趨勢的人
- 在這邊可以瀏覽包含電腦視覺、自然語言處理等各大領域在不同任務上表現最好的論文、實作以及資料集
What-If Tool
- 一個與 TensorBoard 以及 Jupyter Notebook 整合的探索工具,讓使用者不需寫程式碼就能輕鬆觀察機器學習模型的內部運作以及嘗試各種 What-if 問題(如果 ~ 會怎麼樣?)
- 基本上就是用來觀察已訓練的模型在測試資料集上的表現。利用此工具,使用者可以了解(不僅限於)以下的問題:模型在各類別數據上的表現有無差距?模型是否存在偏見?應該如何調整 Native / Positive False 的比例?
- 此工具的一大亮點在於讓非專業領域人士也能探索、理解 ML 模型表現。且只要給定模型與資料集, 就不需要每次為了 What-if 問題就寫用過即丟的程式碼
BertViz | ML Visuals |
---|---|
BertViz
- BertViz 是一個視覺化自注意力機制的工具,可以用來理解如 BERT、GPT-2 及 RoBERTa 等知名 NLP 模型的內部運作
- 以下則是幾篇透過 BertViz 來直觀解說 BERT 與 GPT-2 的文章
ML Visuals
- ML Visuals 是一個社群開源項目,提供超過 100 個常見的機器學習概念 / 深度學習架構圖,可讓任何人在學術論文或是文章直接使用這些圖表。
- 所有圖表都可以直接從 Google slide 上觀看並使用。建議前往 Github repo 查看最新版本。
其他教材
除了線上課程以外,網路上還有無數的學習資源。
這邊列出一些推薦的深度學習教材,大多數皆以數據科學家常用的 Jupyter 筆記本的方式呈現。
你可以將感興趣的筆記本導入實用工具裡提到的 Colaboratory(Colab),馬上開始學習。
Seedbank | Deep Learning with Python |
---|---|
Seedbank
- 讓你可以一覽 Colab 上超過 100 個跟機器學習相關的筆記本,並以此為基礎建立各種深度學習應用
- 熱門筆記本包含神經機器翻譯、音樂生成以及 DeepDream
- 因為是 Google 服務,筆記本大多使用 TensorFlow 與 Keras 來實現模型
Deep Learning with Python
- Keras 作者 François Chollet 在 Deep Learning with Python 一書中用到的所有筆記本。每個筆記本裡頭都清楚地介紹該如何使用 Keras 來實現各種深度學習模型,十分適合第一次使用 Python 實現深度學習的讀者
- 進入 NLP 世界的最佳橋樑:寫給所有人的自然語言處理與深度學習入門指南一文的 Keras 程式碼大多基於此
- 繁體中文的翻譯書籍則為 Deep learning 深度學習必讀 - Keras 大神帶你用 Python 實作
- Keras 在 TensorFlow 2.0 中為其最重要的高層次 API
Stanford CS230 Cheatsheets | practicalAI |
---|---|
Stanford CS230 Cheatsheets
- 史丹佛大學的深度學習課程 CS230 釋出的深度學習小抄總結了目前最新的卷積神經網路及循環神經網路知識,還包含了訓練深度學習時需要使用到的技巧,十分強大
- 此小抄最適合已經熟悉基礎知識的同學隨時複習運用。你也可以從他們的 Github Repo 下載包含上述所有內容的超級 VIP 小抄
- 除了深度學習以外,你也可以查看 CS229 機器學習課程的小抄
practicalAI
- 在 Github 上超過 1 萬星的 Repo。除了深度學習,也有介紹 Python 基礎及 Pandas 的使用方式
- 使用 PyTorch 框架來實現深度學習模型,且所有內容都是 Jupyter 筆記本,可以讓你在 Colab 或本地端執行
AllenNLP Demo | Hands-on Machine Learning 2 |
---|---|
AllenNLP Demo
- 清楚地展示了如機器理解、命名實體識別等多個自然語言處理任務的情境。每個任務的情境包含了任務所需要的輸入、SOTA 模型的預測結果以及模型內部的注意力機制,對理解一個 NLP 任務的實際應用情境有很大幫助
- AllenNLP 是一個由 AI2 以 PyTorch 實現的自然語言處理函式庫
Hands-on Machine Learning 2
- 前 YouTube 影片分類 PM Aurélien Geron 教你如何透過 Scikit-Learn、Keras 以及 TensorFlow 2 來進行機器學習以及深度學習任務與應用的筆記本彙整。
- 第二版專注在 TensorFlow 2,其 Github repo 已有超過 6 千顆星,第一版則有高達 2 萬星。
優質文章
這邊列舉了一些幫助我釐清重要概念的部落格以及網站,希望能加速你探索這個深度學習世界。
只要 Google 一下就能發現這些部落格裡頭很多文章都有中文翻譯。但為了尊重原作者,在這邊都列出原文連結。
- Distill
- 用非常高水準且互動的方式來說明複雜的深度學習概念。Yoshua Bengio、Ian Goodfellow 及 Andrej Karpathy 等知名人士皆參與其中
- R2D3: 圖解機器學習
- 利用非常直覺易懂的視覺化來說明機器學習,連結為中文版
- Christopher Olah's blog
- 詳細解釋不少深度學習概念。作者在這篇就詳細地解釋了長短期記憶 LSTM 的概念與變形;在這篇則解釋何為 CNN 的卷積運算
- Jay Alammar's blog
- Andrej Karpathy's blog
- 現為 Tesla AI 負責人的 Andrej Karpathy 在這篇明確說明何謂循環神經網路 RNN。文中提供不少應用實例及視覺化來幫助我們理解 RNN 模型究竟學到了什麼,是學習 RNN 的朋友幾乎一定會碰到的一篇文章
經典論文
這邊依發表時間列出深度學習領域的經典 / 重要論文。
為了幫助你快速掌握論文內容以及歷年的研究趨勢,每篇論文下會有非常簡短的介紹(WIP)。
但我們推薦有興趣的人自行閱讀論文以深入了解。
自然語言處理 Natural Language Processing (NLP)
- 2003/02 A Neural Probabilistic Language Model
- 2013/01 Efficient Estimation of Word Representations in Vector Space
- 2013/08 Generating Sequences With Recurrent Neural Networks
- 2014/09 Neural Machine Translation by Jointly Learning to Align and Translate
- 2015/08 Effective Approaches to Attention-based Neural Machine Translation
- 2015/12 Semi-supervised Sequence Learning
- 推出一套無監督式的預訓練方法。使用無標籤數據訓練後的 RNN 模型在之後的監督式任務表現更好
- 2017/06 Attention Is All You Need
- Google 推出新的神經網路架構 Transformer。這個基於自注意力機制的架構特別適合語言理解任務
- 2017/06 One Model To Learn Them All
- 2017/08 Learned in Translation: Contextualized Word Vectors
- 監督式預訓練。透過 BiLSTM 與 Encoder-Decoder 架構預先訓練機器翻譯任務並將訓練後的 Encoder 拿來做特徵擷取。將 Encoder 的輸出作為語境向量(Context Vectors, CoVe)處理下游任務
- 2018/01 Universal Language Model Fine-tuning for Text Classification
- 2018/02 Deep contextualized word representations
- ELMo 詞向量,利用兩獨立訓練的 LSTM 獲取雙向訊息
- 2018/06 Improving Language Understanding by Generative Pre-Training
- OpenAI 利用無監督式預訓練以及 Transformer 架構訓練出來的模型表現在多個 NLP 任務表現良好。約使用 8 億詞彙量的資料集
- 2018/10 BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding
- Google 暴力美學。利用深層 Transformer 架構、2 個精心設計的預訓練任務以及約 33 億詞彙量的資料集訓練後,得到表現卓越的語言代表模型,打破 11 項 NLP 任務紀錄
- 2019/05 MASS: Masked Sequence to Sequence Pre-training for Language Generation
- Microsoft 利用 Encoder-Decoder 架構以及連續遮罩(consecutive mask)將 BERT 推廣到自然語言生成(NLG)類型任務
- 2019/05 Unified Language Model Pre-training for Natural Language Understanding and Generation
- 預訓練階段利用不同遮罩控制 context,同時訓練雙向 LM、單向 LM 以及 Seq2Seq LM。其產生的預訓練模型可以處理 NLU 以及 NLG 任務,並在不加入外部數據的情況下打敗 BERT 在 GLUE 的紀錄
電腦視覺 Computer Vision (CV)
類神經網路架構 Neural Network Architecture
- 1998/01 Gradient-Based Learning Applied to Document Recognition (LeNet-5)
- 2012/12 ImageNet Classification with Deep Convolutional Neural Networks (AlexNet)
- 2014/06 DeepFace: Closing the Gap to Human-Level Performance in Face Verification (DeepFace)
- 2014/09 Very Deep Convolutional Networks for Large-Scale Image Recognition (VGG)
- 2014/09 Goint deeper with convolutions (GoogLeNet)
- 2014/11 Fully Convolutional Networks for Semantic Segmentation
- 2015/05 U-Net: Convolutional Networks for Biomedical Image Segmentation (U-Net)
- 2015/12 Deep Residual Learning for Image Recognition (ResNet)
- 2017/04 MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications (MobileNets)
- 2017/07 ShuffleNet: An Extremely Efficient Convolutional Neural Network for Mobile Devices (ShuffleNet)
資料集 Dataset
物體偵測與切割 Object Detection and Segmentation
- 2013/11 Rich feature hierarchies for accurate object detection and semantic segmentation (R-CNN)
- 2013/12 OverFeat: Integrated Recognition, Localization and Detection using Convolutional Networks (OverFeat)
- 2015/04 Fast R-CNN
- 2015/06 Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks (Faster R-CNN)
- 2015/06 You Only Look Once: Unified, Real-Time Object Detection (YOLO)
- 2015/12 SSD: Single Shot MultiBox Detector (SSD)
- 2016/12 YOLO9000: Better, Faster, Stronger (YOLOv2)
- 2017/03 Mask R-CNN
- 2018/04 YOLOv3: An Incremental Improvement (YOLOv3)
生成模型 Generative Models
- 2014/06 Generative Adversarial Networks (GAN)
- 2015/13 Unsupervised Representation Learning with Deep Convolutional Generative Adversarial Networks (DCGAN)
- 2017/01 Wasserstein GAN (WGAN)
- 2017/03 Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks (CycleGAN)
其他整理
這邊列出其他優質的資源整理網站 / Github Repo,供你繼續探索深度學習。
deep-learning-ocean
- 整理了不少深度學習資源,但最值得參考的是數據集以及論文的分類整理。
待辦事項
還有不少內容正在整理,以下是目前我們打算增加的一些項目:
- 深度學習中英術語對照表
- 值得追蹤的業界 / 學界影響人物清單
- 無圖的資源列表版本
- 一些 Jupyter Notebook 範例
如何貢獻
非常歡迎你一起加入改善這個 Repo,讓更多人有方向地學習 Deep Learning:)
如果你有
- 其他值得推薦的深度學習資源
- 針對此 Repo 內容的改善建議
- 其他任何你想得到的東西
都歡迎你提出新的 Issue 來讓我們知道。
如果是想增加新資源的話,只附上連結也是沒有問題的,謝謝!