作為MIT的深度學(xué)習(xí)基礎(chǔ)系列課程的一部分,本文概述了7種架構(gòu)范例的深度學(xué)習(xí),每個范例都提供了TensorFlow教程的鏈接。
我們不久前介紹了MIT的深度學(xué)習(xí)基礎(chǔ)系列課程,由MIT學(xué)術(shù)研究員Lex Fridman開講,將介紹使用神經(jīng)網(wǎng)絡(luò)解決計算機視覺、自然語言處理、游戲、自動駕駛、機器人等領(lǐng)域問題的基礎(chǔ)知識。
作為講座的一部分,Lex Fridman撰文概述了7種架構(gòu)范例的深度學(xué)習(xí),每個范例都提供了TensorFlow教程的鏈接。
深度學(xué)習(xí)是表示學(xué)習(xí)(representation learning):從數(shù)據(jù)中自動形成有用的表示。我們?nèi)绾伪硎臼澜纾梢宰審?fù)雜的東西對我們?nèi)祟惡臀覀儤?gòu)建的機器學(xué)習(xí)模型來說都顯得更簡單。
對于前者,我最喜歡的例子是哥白尼于1543年發(fā)表的日心說,日心說認(rèn)為太陽是宇宙的中心,完全推翻了之前把地球放在中心的地心說。在最好的情況下,深度學(xué)習(xí)可以讓我們自動完成這一步,從“特征工程”過程中去掉哥白尼(即,去掉人類專家)。
日心說(1543) vs地心說(6th century BC)
在高級別上,神經(jīng)網(wǎng)絡(luò)可以是編碼器,可以是解碼器,也可以是兩者的組合:
編碼器在原始數(shù)據(jù)中找到模式,以形成緊湊、有用的表示(representations)。
解碼器從這些表示中生成高分辨率數(shù)據(jù)。生成的數(shù)據(jù)可以是新的示例,也可以是描述性知識。
其余的則是一些聰明的方法,可以幫助我們有效地處理視覺信息、語言、音頻(第1–6項),甚至可以在一個基于這些信息和偶爾的獎勵的世界中采取行動(第7項)。下面是一個總體的圖示:
在下面的部分中,我將簡要描述這7種架構(gòu)范例,并提供每個范例的演示性TensorFlow教程的鏈接。請參閱最后的“基礎(chǔ)拓展”部分,該部分討論了深度學(xué)習(xí)的一些令人興奮的領(lǐng)域,不完全屬于這七個類別。
TensorFlow教程地址:
https://github.com/lexfridman/mit-deep-learning/blob/master/tutorial_deep_learning_basics/deep_learning_basics.ipynb
1.前饋神經(jīng)網(wǎng)絡(luò)(FFNNs)
前饋神經(jīng)網(wǎng)絡(luò)(Feed Forward Neural Networks, FFNNs)的歷史可以追溯到20世紀(jì)40年代,這是一種沒有任何循環(huán)的網(wǎng)絡(luò)。數(shù)據(jù)以單次傳遞的方式從輸入傳遞到輸出,而沒有任何以前的“狀態(tài)記憶”。從技術(shù)上講,深度學(xué)習(xí)中的大多數(shù)網(wǎng)絡(luò)都可以被認(rèn)為是FFNNs,但通常“FFNN”指的是其最簡單的變體:密集連接的多層感知器(MLP)。
密集編碼器用于將輸入上已經(jīng)很緊湊的一組數(shù)字映射到預(yù)測:分類(離散)或回歸(連續(xù))。
TensorFlow教程:請參閱我們的深度學(xué)習(xí)基礎(chǔ)教程的第1部分,其中有一個用于波士頓房價預(yù)測的FFNNs示例,它是一個回歸問題:
網(wǎng)絡(luò)學(xué)習(xí)時在訓(xùn)練集和驗證集上的誤差
2.卷積神經(jīng)網(wǎng)絡(luò)(CNN)
CNN(又名ConvNets)是一種前饋神經(jīng)網(wǎng)絡(luò),它使用一種空間不變性技巧來有效地學(xué)習(xí)圖像中的局部模式,這種方法在圖像中最為常見。空間不變性(Spatial-invariance )是指,比如說,一張貓臉的圖像上,左上角的貓耳與圖像右下角的貓耳具有相同的特征。CNN跨空間共享權(quán)重,使貓耳以及其他模式的檢測更加高效。
CNN不是只使用密集連接的層,而是使用卷積層(卷積編碼器)。這些網(wǎng)絡(luò)用于圖像分類、目標(biāo)檢測、視頻動作識別以及任何在結(jié)構(gòu)上具有一定空間不變性的數(shù)據(jù)(如語音音頻)。
TensorFlow教程:請參閱我們的深度學(xué)習(xí)基礎(chǔ)教程的第2部分,了解用于對MNIST數(shù)據(jù)集中的手寫數(shù)字進行分類的一個CNN示例。
分類預(yù)測(右),生成的手寫數(shù)字(左)。
3.循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)
RNN是具有循環(huán)的網(wǎng)絡(luò),因此具有“狀態(tài)記憶”。它們可以及時展開,成為權(quán)重共享的前饋網(wǎng)絡(luò)。正如CNN在“空間”上共享權(quán)重一樣,RNN在“時間”上共享權(quán)重。這使得它們能夠處理并有效地表示序列數(shù)據(jù)中的模式。
RNN模塊有許多變體,包括LSTM和GRU,以幫助學(xué)習(xí)更長的序列中的模式。它的應(yīng)用包括自然語言建模、語音識別、語音生成等。
TensorFlow教程:訓(xùn)練循環(huán)神經(jīng)網(wǎng)絡(luò)是很有挑戰(zhàn)性的,但同時也允許我們對序列數(shù)據(jù)進行一些有趣而強大的建模。使用TensorFlow生成文本的教程是我最喜歡的教程之一,因為它用很少的幾行代碼就完成了一些了不起的事情:在字符基礎(chǔ)上生成合理的文本:
使用TensorFlow生產(chǎn)文本
使用TensorFlow生產(chǎn)文本教程:
https://www.tensorflow.org/tutorials/sequences/text_generation
4. Encoder-Decoder架構(gòu)
前3節(jié)中介紹的FFNN、CNN和RNN都只是分別使用密集編碼器、卷積編碼器或循環(huán)編碼器進行預(yù)測的網(wǎng)絡(luò)。這些編碼器可以組合或切換,取決于我們試圖形成有用表示的原始數(shù)據(jù)類型。“Encoder-Decoder”架構(gòu)是一種更高級的概念,通過對壓縮表示進行上采樣的解碼步驟來生成高維輸出,而不是進行預(yù)測。
請注意,編碼器和解碼器可以彼此非常不同。例如,image captioning網(wǎng)絡(luò)可能有卷積編碼器(用于圖像輸入)和循環(huán)解碼器(用于自然語言輸出)。Encoder-Decoder架構(gòu)的應(yīng)用包括語義分割、機器翻譯等。
TensorFlow教程:請參閱駕駛場景分割的教程,該教程演示了針對自主車輛感知問題的最先進的分割網(wǎng)絡(luò):
使用TensorFlow的駕駛場景分割
地址:
https://github.com/lexfridman/mit-deep-learning/blob/master/tutorial_driving_scene_segmentation/tutorial_driving_scene_segmentation.ipynb
5.自動編碼器(Autoencoder)
自動編碼器(Autoencoder)是一種采用encoder-decoder架構(gòu)的更簡單的“無監(jiān)督學(xué)習(xí)”形式,并學(xué)習(xí)生成輸入數(shù)據(jù)的精確副本。由于編碼的表示比輸入數(shù)據(jù)小得多,網(wǎng)絡(luò)被迫學(xué)習(xí)如何形成最有意義的表示。
由于ground truth數(shù)據(jù)來自輸入數(shù)據(jù),所以不需要人工操作。換句話說,它是自我監(jiān)督的。自動編碼器的應(yīng)用包括無監(jiān)督嵌入、圖像去噪等。最重要的是,它的“表示學(xué)習(xí)”的基本思想是下一節(jié)的生成模型和所有深度學(xué)習(xí)的核心。
TensorFlow教程:在這個TensorFlow Keras教程中,你可以探索自動編碼器對(1)輸入數(shù)據(jù)去噪和(2)在MNIST數(shù)據(jù)集進行嵌入的能力。
地址:
https://www.kaggle.com/vikramtiwari/autoencoders-using-tf-keras-mnist
6.生成對抗網(wǎng)絡(luò)(GAN)
GAN是一種用于訓(xùn)練網(wǎng)絡(luò)的框架,GAN網(wǎng)絡(luò)經(jīng)過優(yōu)化,可以從特定的表示中生成新的逼真樣本。最簡單的形式是,訓(xùn)練過程涉及兩個網(wǎng)絡(luò)。其中一個網(wǎng)絡(luò)稱為生成器(generator),它生成新的數(shù)據(jù)實例,試圖欺騙另一個網(wǎng)絡(luò),即鑒別器(discriminator),后者將圖像分類為真實圖像和假圖像。
在過去的幾年里,GAN出現(xiàn)了許多變體和改進,包括從特定類別生成圖像的能力、從一個域映射到另一個域的能力,以及生成圖像的真實性的驚人提高。例如,BigGAN (https://arxiv.org/abs/1809.11096)從單一類別(毒蠅傘)中生成的三個樣本:
BigGAN生成的圖像
TensorFlow教程:有關(guān)GAN變體的示例,請參閱關(guān)于conditional GAN和DCGAN的教程。隨著課程的進展,我們將在GitHub上發(fā)布一個關(guān)于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.深度強化學(xué)習(xí)(DeepRL)
強化學(xué)習(xí)(RL)是一個框架,用于教一個agent如何以一種最大化回報的方式行動。當(dāng)學(xué)習(xí)由神經(jīng)網(wǎng)絡(luò)完成時,我們稱之為深度強化學(xué)習(xí)(Deep Reinforcement learning, Deep RL)。
RL框架有三種類型:基于策略的(policy-based)、基于價值(value-based)的和基于模型的(model-based)。區(qū)別在于神經(jīng)網(wǎng)絡(luò)的任務(wù)是學(xué)習(xí)。詳細(xì)解讀請參見本系列課程的第6講。
Deep RL允許我們在需要做出一系列決策時,在模擬或現(xiàn)實環(huán)境中應(yīng)用神經(jīng)網(wǎng)絡(luò)。包括游戲、機器人、神經(jīng)架構(gòu)搜索等等。
教程:我們的DeepTraffic環(huán)境提供了一個教程和代碼示例,可以快速地在瀏覽器中探索、訓(xùn)練和評估深度RL智能體,我們將很快在GitHub上發(fā)布一個支持GPU訓(xùn)練的TensorFlow教程。
MIT DeepTraffic: Deep Reinforcement Learning Competition
-
神經(jīng)網(wǎng)絡(luò)
+關(guān)注
關(guān)注
42文章
4771瀏覽量
100715 -
深度學(xué)習(xí)
+關(guān)注
關(guān)注
73文章
5500瀏覽量
121113 -
tensorflow
+關(guān)注
關(guān)注
13文章
329瀏覽量
60527
原文標(biāo)題:MIT高贊深度學(xué)習(xí)教程:一文看懂CNN、RNN等7種范例(TensorFlow教程)
文章出處:【微信號:AI_era,微信公眾號:新智元】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論