這裡紀錄了我在學習深度學習時蒐集的一些線上資源。內容由淺入深,而且會不斷更新,希望能幫助你順利地開始學習:)
這節列舉了一些透過瀏覽器就能馬上開始遊玩 / 體驗深度學習的應用。作為這些應用的使用者,你可以先高層次、直觀地了解深度學習能做些什麼。之後有興趣再進一步了解背後原理。
這小節最適合:
- 想要快速體會深度學習如何被應用在真實世界的好奇寶寶
- 想要直觀理解類神經網路(Artifical Neural Network)運作方式的人
- 想從別人的深度學習應用取得一些靈感的開發者
Deep Playground | ConvNetJS |
---|---|
- 由 Tensorflow 團隊推出,模擬訓練一個類神經網路的過程並了解其運作原理
- 可以搭配這篇 Introduction to Neural Networks: Playground Exercises 學習
- 訓練類神經網路來解決經典的 MNIST 手寫數字辨識問題、圖片生成以及增強式學習
- 由 Tesla 的 AI 負責人 Andrej Karpathy 建立
Magenta | Google AI Experiments |
---|---|
- 這邊展示了接近 40 個利用圖片、語言以及音樂來與使用者產生互動的機器學習 Apps,值得慢慢探索
- 知名例子有 Quick Draw 以及 Teachable Machine,將在下方介紹
Quick Draw | Teachable Machine |
---|---|
- 由 Google 推出的知名手寫塗鴉辨識,使用的神經網路架構有常見的卷積神經網路 CNN 以及循環神經網路 RNN
- 該深度學習模型會不斷將最新的筆觸當作輸入來預測使用者想畫的物件。你會驚嘆於她精準且即時的判斷
- 利用電腦 / 手機上的相機來訓練能將影像對應到其他圖片、音訊的神經網路,饒富趣味
- 透過這例子,你將暸解機器學習的神奇之處以及其侷限所在
Fast Neural Style | TensorFlow.js |
---|---|
- 展示如何使用 WebGL 在瀏覽器快速地進行神經風格轉換 Neural Style Transfer
- 你可以選擇任何一張圖片,並在此網站上將其畫風轉變成指定的藝術照
- Deepart.io 也提供類似服務
- TensorFlow.js 頁面有多個利用 JavaScript 實現的深度學習應用,如上圖中的人類姿勢估計 Human Pose Estimation。
- 你可以在該應用裡頭打開自己的攝影機,看該應用能不能偵測到你與朋友的姿勢。
看完遊玩空間的大量實際應用,相信你已經迫不及待地想要開始學習強大的深度學習技術了。
這節列舉了一些有用的線上課程以及學習教材,幫助你掌握深度學習的基本知識(沒有特別註明的話皆為免費存取)。
另外值得一提的是,大部分課程都要求一定程度的 Python 程式能力。
李宏毅教授的機器學習 / 深度學習課程 | Deep Learning Specialization @ Coursera |
---|---|
- 大概是全世界最好、最完整的 Deep Learning 中文學習資源。
- 影片內容涵蓋基本理論(約 10 小時觀看時間)一直到進階的生成對抗網路 GAN 以及強化學習 RL
- 你也可以從這邊看到教授的 Youtube 課程清單
- 原 Google Brain 的吳恩達教授開授的整個深度學習專項課程共分五堂課,從神經網路的基礎到能夠進行機器翻譯、語音辨識的序列模型,每堂課預計 1 個月完成,收費採訂閱制
- 程式作業會交互使用 Numpy、Keras 以及 TensorFlow 來實作深度學習模型
Practical Deep Learning For Coders @ fast.ai | Deep Learning @ Kaggle Learn |
---|---|
- 14 堂課程,主要使用 TensorFlow 實作深度學習模型
- 內容主要專注在電腦視覺(Computer Vision)以及如何應用遷移學習(Transfer Learning)
Elements of Artificial Intelligence | MIT Deep Learning |
---|---|
- 芬蘭最高學府赫爾辛基大學推出的 AI 課程。此課程目的在於讓所有人都能了解 AI,不需要任何程式經驗。這堂課非常適合完全沒有接觸過深度學習或是相關領域的人
- 課程分 6 個部分,包含「何謂 AI ?」、「真實世界的 AI」、「機器學習」以及「神經網路」等章節
- 麻省理工學院推出的深度學習課程,內容包含深度學習基礎、深度強化學習以及自動駕駛相關知識。Github Repo 包含了多個教學筆記本,值得參考
- 上圖是 DeepTraffic,由 MIT 的研究科學家 Lex Fridman 推出的一個深度強化學習競賽。此競賽目標是建立一個可以在高速公路上駕駛汽車的神經網路。你可以在這裡看到線上 Demo 以及詳細說明
這節列出一些在你的深度學習路上可以幫得上些忙的工具。
Colaboratory | TensorBoard |
---|---|
- 由 Google 提供的雲端 Jupyter 筆記本環境,讓你只要用瀏覽器就能馬上開始訓練深度學習模型。你甚至還可以使用一個免費的 Tesla K80 GPU 或 TPU 來加速訓練自己的模型
- 該計算環境也能與自己的 Google Drive 做連結,讓運算雲端化的同時將筆記本 / 模型結果都同步到自己的筆電上
- TensorBoard 是一個視覺化工具,方便我們了解、除錯並最佳化自己訓練的深度學習模型
- 除了 TensorFlow 以外,其他基於 Python 的機器學習框架大多也可以透過 tensorboardX 來使用 TensorBoard
Embedding Projector | Lucid |
---|---|
- 我們時常需要將圖片、文字轉成高維數字向量 Embedding 以供神經網路處理,而 Projector 能將此高維向量投影到 2、3 維空間上方便我們理解這些數據
- Projector 網站讓你在線上探索幾個常見的資料集,但事實上你也可以利用 Tensorboard 來視覺化自己的數據。
- Lucid 是一個嘗試讓神經網路變得更容易解釋的開源專案,裡頭包含了很多視覺化神經網路的筆記本
- 你可以直接在 Colab 上執行這些筆記本並了解如何視覺化神經網路
除了線上課程以外,網路上還有無數的學習資源。
這邊列出一些推薦的深度學習教材,大多數皆以數據科學家常用的 Jupyter 筆記本的方式呈現。
你可以將感興趣的筆記本導入實用工具裡提到的 Colaboratory(Colab),馬上開始學習。
Seedbank | Deep Learning with Python |
---|---|
- 讓你可以一覽 Colab 上超過 100 個跟機器學習相關的筆記本,並以此為基礎建立各種深度學習應用
- 熱門筆記本包含神經機器翻譯、音樂生成以及 DeepDream
- 因為是 Google 服務,筆記本大多使用 TensorFlow 與 Keras 來實現模型
- Keras 作者 François Chollet 在 Deep Learning with Python 一書中用到的所有筆記本。每個筆記本裡頭都清楚地介紹該如何使用 Keras 來實現各種深度學習模型,十分適合第一次使用 Python 實現深度學習的讀者
- 進入 NLP 世界的最佳橋樑:寫給所有人的自然語言處理與深度學習入門指南一文的 Keras 程式碼大多基於此
- 附註:Keras 在 TensorFlow 2.0 中將成為其最重要的高層次 API
Stanford CS230 Cheatsheets | practicalAI |
---|---|
- 史丹佛大學的深度學習課程 CS230 釋出的深度學習小抄總結了目前最新的卷積神經網路及循環神經網路知識,還包含了訓練深度學習時需要使用到的技巧,十分強大
- 此小抄最適合已經熟悉基礎知識的同學隨時複習運用。你也可以從他們的 Github Repo 下載包含上述所有內容的超級 VIP 小抄
- 除了深度學習以外,你也可以查看 CS229 機器學習課程的小抄
- 在 Github 上超過 1 萬星的 Repo。除了深度學習,也有介紹 Python 基礎及 Pandas 的使用方式
- 使用 Pytorch 框架來實現深度學習模型,且所有內容都是 Jupyter 筆記本,可以讓你在 Colab 或本地端執行
AllenNLP Demo | To Be Updated |
---|---|
- 清楚地展示了如機器理解、命名實體識別等多個自然語言處理任務的情境。每個任務的情境包含了任務所需要的輸入、SOTA 模型的預測結果以及模型內部的注意力機制,對理解一個 NLP 任務的實際應用情境有很大幫助
- AllenNLP 是一個由 AI2 以 PyTorch 實現的自然語言處理函式庫
這邊列舉了一些幫助我釐清重要概念的部落格以及網站,希望能加速你探索這個深度學習世界。
只要 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)。
但我們推薦有興趣的人自行閱讀論文以深入了解。
- 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
- 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 任務紀錄
- 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)
- 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)
- 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)
還有不少內容正在整理,以下是目前我們打算增加的一些項目:
- 深度學習中英術語對照表
- 值得追蹤的業界 / 學界影響人物清單
- 無圖的資源列表版本
- 一些 Jupyter Notebook 範例
非常歡迎你一起加入改善這個 Repo,讓更多人有方向地學習 Deep Learning:)
如果你有
- 其他值得推薦的深度學習資源
- 針對此 Repo 內容的改善建議
- 其他任何你想得到的東西
都歡迎你提出新的 Issue 來讓我們知道。
如果是想增加新資源的話,只附上連結也是沒有問題的,謝謝!