7種架構範例的深度學習,每個範例都提供了TensorFlow教程

2021-01-08 電子發燒友

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

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

作為講座的一部分,Lex Fridman 撰文概述了 7 種架構範例的深度學習,每個範例都提供了 TensorFlow 教程的連結。

深度學習是表示學習 (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. 深度強化學習 (Deep RL)

強化學習 (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

打開APP閱讀更多精彩內容

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容圖片侵權或者其他問題,請聯繫本站作侵刪。 侵權投訴

相關焦點

  • GitHub標星2000+,如何用30天啃完TensorFlow2.0?
    如果時間足夠,最好Tensorflow2和Pytorch都要學習掌握。理由如下:1,在工業界最重要的是模型落地,目前國內的大部分網際網路企業只支持TensorFlow模型的在線部署,不支持Pytorch。並且工業界更加注重的是模型的高可用性,許多時候使用的都是成熟的模型架構,調試需求並不大。2,研究人員最重要的是快速迭代發表文章,需要嘗試一些較新的模型架構。
  • TensorFlow 2.0開源工具書,30天「無痛」上手
    該教程與 TensorFlow 的差異如下所示:圖片來自項目作者提供的開源文檔。從課程大綱來看,有一定基礎的讀者只需三十天就可以學完整個教程,而且每天都被安排得明明白白。在過去的 2019 年,幾乎每個學術頂會都有大量論文用 PyTorch 實現。但在工業界,TensorFlow 仍然是主導框架。原因在於,工業界最重要的是模型落地以及模型的高可用性,許多時候使用的都是成熟的模型架構,調試需求並不大。
  • 教程| 如何用TensorFlow在安卓設備上實現深度學習推斷
    對於個人和公司來說,存在許多狀況是更希望在本地設備上做深度學習推斷的:想像一下當你在旅行途中沒有可靠的網際網路連結時,或是要處理傳輸數據到雲服務的隱私問題和延遲問題時。邊緣計算(Edge computing)是一種在物理上靠近數據生成的位置從而對數據進行處理和分析的方法,為解決這些問題提供了方案。
  • 什麼是TensorFlow,TensorFlow教程
    TensorFlow教程目的:在今天的TensorFlow教程中,我們將學習什麼是TensorFlow,它在哪裡使用,它的不同特性,TensorFlow應用程式,最新版本及其優缺點,以及如何在項目中使用它。
  • TFLearn:為TensorFlow提供更高級別的API 的深度學習庫
    TFlearn是一個基於Tensorflow構建的模塊化透明深度學習庫。它旨在為TensorFlow提供更高級別的API,以促進和加速實驗,同時保持完全透明並與之兼容。TFLearn功能包括:通過教程和示例,易於使用和理解用於實現深度神經網絡的高級API。
  • 用GPU加速深度學習: Windows安裝CUDA+TensorFlow教程
    背景在Windows上使用GPU進行深度學習一直都不是主流,我們一般都首選Linux作為深度學習作業系統。但很多朋友如果只是想要了解深度學習,似乎沒有必要專門裝雙系統或者改用Linux。現實生活中,很多使用學校或者公司電腦的朋友也沒有操作權限改換系統。那麼到底是否可以在Windows系統上設置深度學習框架,開發深度學習模型呢?
  • TensorFlow 2.X,會是它走下神壇的開始嗎?|tensorflow|深度學習|...
    我們再去討論深度學習框架,吐槽它們的體驗,會不會有點過時?並不會,新模型與新算法,總是框架的第一生產力。  從 Theano 一代元老,到 TensorFlow 與 PyTorch 的兩元世界,到現在各個國產框架與工具組件的興起。深度學習框架,總是跟隨前沿 DL 技術的進步而改變。
  • TensorFlow極簡教程:創建、保存和恢復機器學習模型
    TensorFlow 機器學習範例——Naked Tensor連結:https://github.com/jostmey/NakedTensor?bare在每個例子中,我們用一條直線擬合一些數據。使用梯度下降(gradient descent)確定最適合數據的線的斜率和 y 截距的值。
  • 資料|30天吃掉Tensorflow
    但本書在篇章結構和範例選取上做了大量的優化。不同於官方文檔混亂的篇章結構,既有教程又有指南,缺少整體的編排邏輯。本書按照內容難易程度、讀者檢索習慣和TensorFlow自身的層次結構設計內容,循序漸進,層次清晰,方便按照功能查找相應範例。
  • ...雅虎BigML團隊開源大數據分布式深度學習框架TensorFlowOnSpark
    選自雅虎作者:Lee Yang,、Jun Shi、 Bobbie Chern、 Andy Feng機器之心編譯參與:杜夏德、朱思穎雅虎 Big ML 團隊今日宣布開源 TensorFlowOnSpark,用於在大數據集群上進行分布式深度學習。下面是該團隊官方發布的開源說明。近幾年,深度學習發展的非常迅速。
  • 開源| 雅虎BigML團隊開源大數據分布式深度學習框架TensorFlowOn...
    選自雅虎作者:Lee Yang,、Jun Shi、 Bobbie Chern、 Andy Feng機器之心編譯參與:杜夏德、朱思穎雅虎 Big ML 團隊今日宣布開源 TensorFlowOnSpark,用於在大數據集群上進行分布式深度學習。下面是該團隊官方發布的開源說明。近幾年,深度學習發展的非常迅速。
  • 深度學習/目標檢測之tensorflow——莫煩教程總結(1-13)
    最近刷完了莫煩的tensorflow教程,寫個文章總結一下,流量警告,本文圖多,而且很長。一、tf.Variable和tensorflow線性回歸 通過tf.Variable定義weights和bias,進行簡單的線性回歸
  • 從零開始搭建深度學習伺服器:TensorFlow + PyTorch + Torch
    本教程轉載於深度學習中文社區(studydl.com).在深度學習大行其道的今天,我們不應該停留於觀望的階段,我們應該多多上手進行實踐,下面將為大家介紹一下最簡單也是最基礎的內容,配置一個自己的深度學習伺服器.1.
  • 如何使用TensorFlow Hub的ESRGAN模型來在安卓app中生成超分圖片
    深度學習,尤其是對抗生成網絡 GAN,已經被成功應用在超分任務上,比如 SRGAN 和 ESRGAN 都可以生成比較真實的超分圖片。那麼在本文裡,我們將介紹一下如何使用TensorFlow Hub上的一個預訓練的 ESRGAN 模型來在一個安卓 app 中生成超分圖片。最終的 app 效果如下圖,我們也已經將完整代碼開源給大家參考。
  • 基於TensorFlow2.0的中文深度學習開源書來了!GitHub趨勢日榜第一
    主要介紹神經網絡的核心理論和共性知識,助於理解深度學習的本質。第四部分是10-15章。主要介紹常見的算法與模型。除此之外,每個章節裡的內容編排也是理論與實戰相結合。在這個repo中,作者根據章節也給出了原始碼和數據,但同時他也表示:時間倉促,原始碼還沒有整理完全。有興趣的讀者可以跟進這個repo的更新。
  • Tensorflow 全網最全學習資料匯總之Tensorflow 的入門與安裝【2】
    《TensorFlow學習筆記1:入門》連結:http://www.jeyzhang.com/tensorflow-learning-notes.html本文與上一篇的行文思路基本一致,首先概括了TensorFlow的特性,然後介紹了graph、session、variable 等基本概念的含義,以具體代碼的形式針對每個概念給出了進一步的解釋。
  • TensorFlow發布JavaScript開發者的機器學習框架TensorFlow.js
    發布新的 TensorFlow 官方博客(http://blog.tensorflow.org/)與 TensorFlow YouTube 頻道;2. 面向 JavaScript 開發者的全新機器學習框架 TensorFlow.js;3.
  • 人工智慧領域之深度學習環境配置,CentOS7.5系統下配置GPU環境
    近幾年在科研領域深度學習憑藉著超強的實力脫穎而出,人工智慧也走進了各行各業,因此相關領域的方向也成為學術界的愛寵,絕大多數相關領域的導師都開展了深度學習的相關課題。當然在很多高校和科研院所的導師以前一直是做這個方向的,同學們學習起來肯定會更加便捷,在學習深度學習的過程中配置環境變成了一個大難題,筆者之前在Ubuntu16.04LTS系統下配置深度學習GPU計算環境,在訓練的過程中經常出現一系列問題,系統出現了許多故障,因此筆者開始進行在Centos7.5環境下進行配置GPU計算環境,此環境經過一年使用非常穩定,因此發布此教程,希望可以對剛剛入門做深度學習相關領域的有一些幫助
  • 深度學習框架tensorflow之環境搭建
    深度學習的tensorflow框架是目前最流行的一種框架。本文先就環境搭建做一介紹。tensorflow的運行語言主要是python,所以電腦上要首先安裝python,推薦直接安裝anaconda,因為anaconda帶了很多tensorflow需要使用的python數學的運算庫,如果自己安裝,可能會遇到各種依賴問題,安裝好了anoconda,後面安裝tensorflow就非常簡單。1.
  • TensorFlow與PyTorch之爭,哪個框架最適合深度學習
    選自builtin作者:Vihar Kurama機器之心編譯參與:吳攀、杜偉谷歌的 Tensorflow 與 Facebook 的 PyTorch 一直是頗受社區歡迎的兩種深度學習框架。那麼究竟哪種框架最適宜自己手邊的深度學習項目呢?