MIT深度學習教程:一文看懂CNN、RNN等7種範例(TensorFlow教程)

2021-02-14 機器學習算法與自然語言處理

  新智元報導  

來源:medium

作者:Lex Fridman  編輯:肖琴

【新智元導讀】作為MIT的深度學習基礎系列課程的一部分,本文概述了7種架構範例的深度學習,每個範例都提供了TensorFlow教程的連結。

我們不久前介紹了 MIT 的深度學習基礎系列課程,由 MIT 學術研究員 Lex Fridman 開講,將介紹使用神經網絡解決計算機視覺、自然語言處理、遊戲、自動駕駛、機器人等領域問題的基礎知識。

更多閱讀:

【免費資源】MIT《深度學習基礎》第一課 68 分鐘視頻 + 69 頁 PPT

作為講座的一部分,Lex Fridman 撰文概述了 7 種架構範例的深度學習,每個範例都提供了 TensorFlow 教程的連結。以下是麻省理工學院課程 6.S094 的深度學習基礎課程第一課的視頻:

深度學習是表示學習 (representation learning):從數據中自動形成有用的表示。我們如何表示世界,可以讓複雜的東西對我們人類和我們構建的機器學習模型來說都顯得更簡單。

對於前者,我最喜歡的例子是哥白尼於 1543 年發表的日心說,日心說認為太陽是宇宙的中心,完全推翻了之前把地球放在中心的地心說。在最好的情況下,深度學習可以讓我們自動完成這一步,從 「特徵工程」 過程中去掉哥白尼 (即,去掉人類專家)。

日心說 (1543) vs 地心說 (6th century BC)

在高級別上,神經網絡可以是編碼器,可以是解碼器,也可以是兩者的組合

編碼器在原始數據中找到模式,以形成緊湊、有用的表示 (representations)。

解碼器從這些表示中生成高解析度數據。生成的數據可以是新的示例,也可以是描述性知識。

其餘的則是一些聰明的方法,可以幫助我們有效地處理視覺信息、語言、音頻 (第 1–6項),甚至可以在一個基於這些信息和偶爾的獎勵的世界中採取行動 (第 7 項)。下面是一個總體的圖示:

在下面的部分中,我將簡要描述這 7 種架構範例,並提供每個範例的演示性TensorFlow 教程的連結。請參閱最後的 「基礎拓展」 部分,該部分討論了深度學習的一些令人興奮的領域,不完全屬於這七個類別。

TensorFlow 教程地址:

https://github.com/lexfridman/mit-deep-learning/blob/master/tutorial_deep_learning_basics/deep_learning_basics.ipynb

1.  前饋神經網絡 (FFNNs)

前饋神經網絡 (Feed Forward Neural Networks, FFNNs) 的歷史可以追溯到 20 世紀 40年代,這是一種沒有任何循環的網絡。數據以單次傳遞的方式從輸入傳遞到輸出,而沒有任何以前的 「狀態記憶」。從技術上講,深度學習中的大多數網絡都可以被認為是FFNNs,但通常 「FFNN」 指的是其最簡單的變體:密集連接的多層感知器 (MLP)

密集編碼器用於將輸入上已經很緊湊的一組數字映射到預測:分類 (離散) 或回歸 (連續)

TensorFlow 教程:請參閱我們的深度學習基礎教程的第 1 部分,其中有一個用于波士頓房價預測的 FFNNs 示例,它是一個回歸問題:

網絡學習時在訓練集和驗證集上的誤差

2.  卷積神經網絡(CNN)

CNN(又名 ConvNets) 是一種前饋神經網絡,它使用一種空間不變性技巧來有效地學習圖像中的局部模式,這種方法在圖像中最為常見。空間不變性 (Spatial-invariance ) 是指,比如說,一張貓臉的圖像上,左上角的貓耳與圖像右下角的貓耳具有相同的特徵。CNN 跨空間共享權重,使貓耳以及其他模式的檢測更加高效。

CNN 不是只使用密集連接的層,而是使用卷積層 (卷積編碼器)。這些網絡用於圖像分類、目標檢測、視頻動作識別以及任何在結構上具有一定空間不變性的數據 (如語音音頻)。

TensorFlow 教程:請參閱我們的深度學習基礎教程的第 2 部分,了解用於對 MNIST 數據集中的手寫數字進行分類的一個 CNN 示例。

分類預測 (右),生成的手寫數字 (左)。

3.  循環神經網絡(RNN)

RNN 是具有循環的網絡,因此具有 「狀態記憶」。它們可以及時展開,成為權重共享的前饋網絡。正如 CNN 在 「空間」 上共享權重一樣,RNN 在 「時間」 上共享權重。這使得它們能夠處理並有效地表示序列數據中的模式。

RNN 模塊有許多變體,包括 LSTM 和 GRU,以幫助學習更長的序列中的模式。它的應用包括自然語言建模、語音識別、語音生成等。

TensorFlow 教程:訓練循環神經網絡是很有挑戰性的,但同時也允許我們對序列數據進行一些有趣而強大的建模。使用 TensorFlow 生成文本的教程是我最喜歡的教程之一,因為它用很少的幾行代碼就完成了一些了不起的事情:在字符基礎上生成合理的文本:

使用 TensorFlow 生產文本

使用 TensorFlow 生產文本教程:

https://www.tensorflow.org/tutorials/sequences/text_generation

4.  Encoder-Decoder 架構

前 3 節中介紹的 FFNN、CNN 和 RNN 都只是分別使用密集編碼器、卷積編碼器或循環編碼器進行預測的網絡。這些編碼器可以組合或切換,取決於我們試圖形成有用表示的原始數據類型。「Encoder-Decoder」 架構是一種更高級的概念,通過對壓縮表示進行上採樣的解碼步驟來生成高維輸出,而不是進行預測。

請注意,編碼器和解碼器可以彼此非常不同。例如, image captioning 網絡可能有卷積編碼器 (用於圖像輸入) 和循環解碼器 (用於自然語言輸出)。Encoder-Decoder 架構的應用包括語義分割、機器翻譯等。

TensorFlow 教程:請參閱駕駛場景分割的教程,該教程演示了針對自主車輛感知問題的最先進的分割網絡:

使用 TensorFlow 的駕駛場景分割

地址:

https://github.com/lexfridman/mit-deep-learning/blob/master/tutorial_driving_scene_segmentation/tutorial_driving_scene_segmentation.ipynb

5.  自動編碼器(Autoencoder)

自動編碼器 (Autoencoder) 是一種採用 encoder-decoder 架構的更簡單的 「無監督學習」 形式,並學習生成輸入數據的精確副本。由於編碼的表示比輸入數據小得多,網絡被迫學習如何形成最有意義的表示。

由於 ground truth 數據來自輸入數據,所以不需要人工操作。換句話說,它是自我監督的。自動編碼器的應用包括無監督嵌入、圖像去噪等。最重要的是,它的 「表示學習」 的基本思想是下一節的生成模型和所有深度學習的核心。

TensorFlow 教程:在這個 TensorFlow Keras 教程中,你可以探索自動編碼器對 (1) 輸入數據去噪和 (2) 在 MNIST 數據集進行嵌入的能力。

地址:

https://www.kaggle.com/vikramtiwari/autoencoders-using-tf-keras-mnist

6.  生成對抗網絡(GAN)

GAN 是一種用於訓練網絡的框架,GAN 網絡經過優化,可以從特定的表示中生成新的逼真樣本。最簡單的形式是,訓練過程涉及兩個網絡。其中一個網絡稱為生成器(generator),它生成新的數據實例,試圖欺騙另一個網絡,即鑑別器 (discriminator),後者將圖像分類為真實圖像和假圖像。

在過去的幾年裡,GAN 出現了許多變體和改進,包括從特定類別生成圖像的能力、從一個域映射到另一個域的能力,以及生成圖像的真實性的驚人提高。例如,BigGAN (https://arxiv.org/abs/1809.11096) 從單一類別 (毒蠅傘) 中生成的三個樣本:

BigGAN 生成的圖像

TensorFlow 教程:有關 GAN 變體的示例,請參閱關於 conditional GAN 和 DCGAN 的教程。隨著課程的進展,我們將在 GitHub 上發布一個關於 GAN 的最新教程。

conditional GAN:

https://github.com/tensorflow/tensorflow/blob/r1.13/tensorflow/contrib/eager/python/examples/pix2pix/pix2pix_eager.ipynb

DCGAN:

https://github.com/tensorflow/tensorflow/blob/r1.11/tensorflow/contrib/eager/python/examples/generative_examples/dcgan.ipynb

7.  深度強化學習(DeepRL)

強化學習 (RL) 是一個框架,用於教一個 agent 如何以一種最大化回報的方式行動。當學習由神經網絡完成時,我們稱之為深度強化學習 (Deep Reinforcement learning, Deep RL)。

RL 框架有三種類型:基於策略的 (policy-based)、基於價值 (value-based) 的和基於模型的 (model-based)。區別在於神經網絡的任務是學習。詳細解讀請參見本系列課程的第 6 講。

Deep RL 允許我們在需要做出一系列決策時,在模擬或現實環境中應用神經網絡。包括遊戲、機器人、神經架構搜索等等。

教程:我們的 DeepTraffic 環境提供了一個教程和代碼示例,可以快速地在瀏覽器中探索、訓練和評估深度 RL 智能體,我們將很快在 GitHub 上發布一個支持 GPU 訓練的TensorFlow 教程。

MIT DeepTraffic: Deep Reinforcement Learning Competition

MIT DeepTraffic:

https://selfdrivingcars.mit.edu/deeptraffic-documentation/

https://github.com/lexfridman/deeptraffic

4.  擴展概念

在深度學習中有幾個重要的概念並不是由上述架構直接表示的,包括變分自編碼器(VAE)、LSTM/GRU 或神經圖靈機中的 「記憶」 概念、膠囊網絡,以及注意力機制、遷移學習元學習概念,以及 RL 中基於模型、基於價值、基於策略的方法和 actor-critic 方法的區別。

最後,許多深度學習系統將這些結構以複雜的方式組合起來,共同從多模態數據中學習,或者共同學習解決多個任務。這些概念在本系列課程的其他課程中都有涉及,更多的概念將在接下來的課程中介紹:

推薦閱讀:

給大家拜個早年,送千元現金紅包

漫話:如何給女朋友解釋為什麼雙11無法修改收貨地址

2019 AI 國際頂級學術會議全在這裡,請查收!

相關焦點

  • 一文看懂CNN、RNN等7種範例(TensorFlow教程)
    ,本文概述了7種架構範例的深度學習,每個範例都提供了TensorFlow教程的連結。更多閱讀:【免費資源】MIT《深度學習基礎》第一課 68 分鐘視頻 + 69 頁 PPT作為講座的一部分,Lex Fridman 撰文概述了 7 種架構範例的深度學習,每個範例都提供了 TensorFlow 教程的連結。
  • 7種架構範例的深度學習,每個範例都提供了TensorFlow教程
    作為MIT的深度學習基礎系列課程的一部分,本文概述了7種架構範例的深度學習,每個範例都提供了TensorFlow教程的連結。 我們不久前介紹了 MIT 的深度學習基礎系列課程,由 MIT 學術研究員 Lex Fridman 開講,將介紹使用神經網絡解決計算機視覺、自然語言處理、遊戲、自動駕駛、機器人等領域問題的基礎知識。
  • MIT 深度學習基礎教程:七個基本框架TensorFlow代碼實戰
    專知以前介紹的MIT深度學習課程:作為麻省理工學院深度學習系列講座和GitHub教程的一部分,我們將介紹使用神經網絡解決計算機視覺、自然語言處理、遊戲、自動駕駛、機器人等領域問題的基礎知識。 這篇博客文章提供了7個架構範例的深度學習概述,每個範例都有TensorFlow教程的連結。
  • GitHub趨勢榜第一:TensorFlow+PyTorch深度學習資源大匯總
    來源:Github編輯整理:元子【新智元導讀】該項目是Jupyter Notebook中TensorFlow和PyTorch的各種深度學習架構內容非常豐富,適用於Python 3.7,適合當做工具書。本文搜集整理了Jupyter Notebook中TensorFlow和PyTorch的各種深度學習架構,模型和技巧,內容非常豐富,適用於Python 3.7,適合當做工具書。大家可以將內容按照需要進行分割,列印出來,或者做成電子書等,隨時查閱。
  • Tensorflow教程-雙向的LSTM文本分類
    原始碼:https://github.com/PrivateThink/tensorflow_tutorial/blob/master/15.py在Tensorflow今天的教程就是利用雙向的LSTM進行文本分類,單向的LSTM的文本分類可以參考Tensorflow教程-循環神經網絡文本分類。
  • TensorFlow 實現流行的機器學習算法的教程匯集
    這是使用 TensorFlow 實現流行的機器學習算法的教程匯集。本匯集的目標是讓讀者可以輕鬆通過案例深入 TensorFlow。這些案例適合那些想要清晰簡明的 TensorFlow 實現案例的初學者。本教程還包含了筆記和帶有註解的代碼。
  • 可能是史上最全的Tensorflow學習資源匯總
    ,一步步帶你從入門到精通,是初學者學習Tensorflow的最佳教程。2)從Tensorflow基礎知識到有趣的項目應用:https://github.com/pkmital/tensorflow_tutorials同樣是適合新手的教程,從安裝到項目實戰,教你搭建一個屬於自己的神經網絡。
  • 深度學習100+經典模型TensorFlow與Pytorch代碼實現大集合
    【導讀】深度學習在過去十年獲得了極大進展,出現很多新的模型,並且伴隨TensorFlow和Pytorch框架的出現,有很多實現,但對於初學者和很多從業人員
  • 《30天吃掉那隻 TensorFlow2.0 》全新TF2.0教程收穫1000 Star
    Keras可以看成是一種深度學習框架的高階接口規範,它幫助用戶以更簡潔的形式定義和訓練深度學習網絡。使用pip安裝的Keras庫同時在tensorflow,theano,CNTK等後端基礎上進行了這種高階接口規範的實現。而tf.keras是在TensorFlow中以TensorFlow低階API為基礎實現的這種高階接口,它是Tensorflow的一個子模塊。
  • TensorFlow圖像分類教程
    兩年前,Google大腦團隊開發了TensorFlow,並將深度學習巧妙的應用於各個領域。現在,TensorFlow則超越了很多用於深度學習的複雜工具。利用TensorFlow,你可以獲得具有強大能力的複雜功能,其強大的基石來自於TensorFlow的易用性。在這個由兩部分組成的系列中,我將講述如何快速的創建一個應用於圖像識別的卷積神經網絡。
  • 大數據下基於Tensorflow框架的深度學習示例教程
    當數據膨脹到一定規模時,基於機器學習對海量複雜數據的分析更能產生較好的價值,而深度學習在大數據場景下更能揭示數據內部的邏輯關係。本文就以大數據作為場景,通過自底向上的教程詳述在大數據架構體系中如何應用深度學習這一技術。
  • 教程| 如何用TensorFlow在安卓設備上實現深度學習推斷
    對於個人和公司來說,存在許多狀況是更希望在本地設備上做深度學習推斷的:想像一下當你在旅行途中沒有可靠的網際網路連結時,或是要處理傳輸數據到雲服務的隱私問題和延遲問題時。邊緣計算(Edge computing)是一種在物理上靠近數據生成的位置從而對數據進行處理和分析的方法,為解決這些問題提供了方案。
  • 使用Python+Tensorflow的CNN技術快速識別驗證碼
    北京 上海巡迴站 | NVIDIA DLI深度學習培訓NVIDIA 深度學習學院 帶你快速進入火熱的DL領域正文共2929個字,17張圖,預計閱讀時間:8分鐘。近年來,機器學習變得愈加火熱,中國選手柯潔與AlphaGo的人機大戰更是引起熱議。目前,在圖像識別和視覺分析研究中,卷積神經網絡(CNN)技術的使用越來越多。
  • TensorFlow中RNN實現的正確打開方式
    上周寫的文章《完全圖解RNN、RNN變體、Seq2Seq、Attention機制》介紹了一下RNN的幾種結構,今天就來聊一聊如何在TensorFlow中實現這些結構,這篇文章的主要內容為:一、學習單步的RNN:RNNCell如果要學習TensorFlow中的RNN,第一站應該就是去了解「RNNCell」,它是TensorFlow中實現RNN的基本單元,每個RNNCell都有一個
  • TensorFlow 中文資源全集,學習路徑推薦
    安裝教程,安裝之後跑起來。入門教程,簡單的模型學習和運行。實戰項目,根據自己的需求進行開發。/GitHub:https://github.com/tensorflow安裝教程中文安裝教程Mac安裝:http://www.cnblogs.com/tensorflownews/p/7298646.htmlubuntu 16.04 安裝 tensorflow-gpu:http://www.tensorflownews.com/2017/09/02/tensorflow-gpu-install-ubuntu
  • 谷歌雲官方:一小時掌握深度學習和 TensorFlow(視頻+50PPT)
    材料有兩部分,是面向工程師的實用型講解,分別為只有 3 小時的忙人和只有 1 小時的超級忙人準備。新智元節選後者,讓你在 2017 春節來臨前,拿出 1 小時學會 TensorFlow 和深度學習。另外,視頻也方便已經是熟手的你複習,說不定還能從中得到新的啟示。
  • 200種機器學習教程匯總!
    Nutshell中的深度學習http://nikhilbuduma.com/2014/12/29/deep-learning-in-a-nutshell/深度學習教程http://ai.stanford.edu/~quocle/tutorial1
  • 教程 | 用TensorFlow Estimator實現文本分類
    讀者無需閱讀所有之前的內容,如果想重溫某些概念,可以查看以下連結:第一部分重點討論了預建評估器(https://developers.googleblog.com/2017/09/introducing-tensorflow-datasets.html)第二部分討論了特徵列(https://developers.googleblog.com/2017/11/introducing-tensorflow-feature-columns.html
  • TensorFlow 1.9 新增 tf.keras 官方入門教程(Keras與TF的深度集成)
    【導讀】Keras是深度學習框架中最適合工程化的框架之一,具有簡單友好的接口。
  • 深度學習建模方法,首先需要了解建模的思路
    在當前人工智慧人才缺口大的前提下,編程課成為很多學校選擇重點投入的科目,但是有些學校的老師在校內教學方法上存在一些問題,授課講解的不夠系統,無法進行深度學習建模操作。深度學習建模方法的教學,首先需要講解建模的思路,然後才是使用的計算機建模工具的使用,目前有相關主流程式語言的入門教程,可以推薦華為雲安全部門負責人張勇教授的,其介紹了linux編程環境下如何操作建模機器學習深度學習的環境配置,並分享了多年經驗的建模實踐和驗證過程。