MIT 深度學(xué)習(xí)課程系列(6.S091、6.S093、6.S094)。講座視頻與教程對所有人開放
作為麻省理工學(xué)院(MIT)深度學(xué)習(xí)講座系列與GitHub 教程的一部分,我們將介紹使用神經(jīng)網(wǎng)絡(luò)解決計算機視覺、自然語言處理、游戲、自動駕駛、機器人等領(lǐng)域內(nèi)問題的基礎(chǔ)知識。
本文以7 種架構(gòu)范例簡要介紹深度學(xué)習(xí),每種范例均提供 TensorFlow 教程鏈接。以下講座是 MIT 課程 6.S094 的一部分,其中介紹了深度學(xué)習(xí)基礎(chǔ)知識,而本文對其進行了說明。
深度學(xué)習(xí)是表征學(xué)習(xí),即通過數(shù)據(jù)自動生成有用的表征。我們表述世界的方式可以使復(fù)雜事物簡單化,讓人類及我們構(gòu)建的機器學(xué)習(xí)模型能夠容易理解。
我最喜歡的歷史示例是哥白尼于 1543 年發(fā)表的日心說模型。與先前以地球為中心的地心說模型不同,該模型將太陽置于 “宇宙” 的中心。在最佳情況下,深度學(xué)習(xí)讓我們可以自動處理此步驟,無需哥白尼(即人類專家)即可完成 “特征工程” 過程:
日心說(1543 年)與地心說(公元前 6 世紀(jì))
從高層次來看,神經(jīng)網(wǎng)絡(luò)可以是編碼器、解碼器或二者的結(jié)合:
-
編碼器會在原始數(shù)據(jù)中找到模式,以生成簡潔有用的表征
-
解碼器會利用這些表征生成高分辨率數(shù)據(jù)。所生成的數(shù)據(jù)是新示例或描述性知識
其余是一些巧妙方法,可幫助我們有效處理視覺信息、語言和音頻(范例 1 - 6),甚至可以幫助我們根據(jù)這些信息和偶爾的獎勵在現(xiàn)實世界中采取行動(范例 7)。以下是總體圖示:
在下面的部分,我將分別簡要描述這 7 種架構(gòu)范例,每種范例均提供 TensorFlow 教程鏈接,以作說明。請參閱本文結(jié)尾的 “基礎(chǔ)知識拓展” 部分,其中探討了一些令人興奮的深度學(xué)習(xí)領(lǐng)域,不完全屬于這 7 種類別。
1.前饋神經(jīng)網(wǎng)絡(luò) (FFNN)
FFNN 的歷史可以追溯至 20 世紀(jì) 40 年代,只是一種沒有任何循環(huán)的網(wǎng)絡(luò)。數(shù)據(jù)以單次傳遞的方式從輸入傳遞至輸出,而沒有任何之前的 “狀態(tài)記憶”。從技術(shù)上講,深度學(xué)習(xí)中的大多數(shù)網(wǎng)絡(luò)均可被視為 FFNN,但 “FFNN” 通常指的是其最簡單的變體:一種密集連接的多層感知器 (MLP)。
密集編碼器用于將輸入上已經(jīng)很緊湊一組數(shù)字映射至預(yù)測:分類(離散)或回歸(連續(xù))數(shù)據(jù)。
TensorFlow 教程:請參閱 深度學(xué)習(xí)基礎(chǔ)知識教程 的第 1 部分,其中有一個用于預(yù)測波士頓房價的 FFNN 示例,屬于回歸問題:
注:深度學(xué)習(xí)基礎(chǔ)知識教程 鏈接
https://github.com/lexfridman/mit-deep-learning/blob/master/tutorial_deep_learning_basics/deep_learning_basics.ipynb
網(wǎng)絡(luò)學(xué)習(xí)過程中訓(xùn)練集與驗證集中的錯誤
2.卷積神經(jīng)網(wǎng)絡(luò) (CNN)
CNN(又名 ConvNet)是一種前饋神經(jīng)網(wǎng)絡(luò),其使用空間不變性技巧來有效學(xué)習(xí)圖像中最常見的局部模式。舉例而言,若圖像左上方與右下方的貓耳擁有相同的特征,我們便可將其稱為空間不變性。CNN 可跨空間共享權(quán)重,從而更高效地檢測出貓耳及其他模式。
CNN 不是只使用密集連接層,而是使用卷積層(卷積編碼器)。這些網(wǎng)絡(luò)可用于圖像分類、對象檢測、視頻動作識別,以及任何在結(jié)構(gòu)上具備一些空間不變性的數(shù)據(jù)(例如語音音頻)。
TensorFlow 教程:請參閱深度學(xué)習(xí)基礎(chǔ)知識教程的第 2 部分,了解用于對 MNIST 數(shù)據(jù)集中的手寫數(shù)字進行分類的 CNN 示例。我們利用影像變形技術(shù)創(chuàng)造夢幻般的精彩扭曲效果,并通過數(shù)據(jù)集之外生成的高分辨率手寫數(shù)字對分類器進行測試:
利用影像變形技術(shù)生成手寫數(shù)字(左側(cè))并進行分類預(yù)測(右側(cè))
3.遞歸神經(jīng)網(wǎng)絡(luò) (RNN)
RNN 是具有循環(huán)的網(wǎng)絡(luò),因此具有 “狀態(tài)記憶”。這種網(wǎng)絡(luò)可適時展開,以成為共享權(quán)重的前饋網(wǎng)絡(luò)。正如 CNN 可跨 “空間” 共享權(quán)重一樣,RNN 可跨 “時間” 共享權(quán)重。這使其能夠處理并有效表示序列數(shù)據(jù)中的模式。
我們已開發(fā)出 RNN 模塊的許多變體(包括LSTM和GRU),以幫助學(xué)習(xí)較長序列中的模式。其應(yīng)用包括自然語言建模、語音識別、語音生成等。
TensorFlow 教程:遞歸神經(jīng)網(wǎng)絡(luò)的訓(xùn)練頗具挑戰(zhàn)性,但同時也讓我們可以對序列數(shù)據(jù)進行一些有趣而強大的建模。利用 TensorFlow 生成文本是我最喜歡的教程之一,因為只需幾行代碼便可完成一些事情:逐字生成合理文本:
注:利用 TensorFlow 生成文本 鏈接
https://www.tensorflow.org/tutorials/sequences/text_generation
資料來源:利用 TensorFlow 生成文本
4.編碼器-解碼器架構(gòu)
前 3 部分介紹的 FFNN、CNN 和 RNN 都只是分別使用密集編碼器、卷積編碼器或遞歸編碼器進行預(yù)測的網(wǎng)絡(luò)。這些編碼器可以組合或切換,具體取決于我們嘗試生成有用表征的原始數(shù)據(jù)類型。“編碼器 — 解碼器” 架構(gòu)是一種更高層次的概念,此架構(gòu)基于編碼步驟而構(gòu)建,通過對壓縮表征進行上采樣的步驟來生成高維輸出,而不是進行預(yù)測。
請注意,編碼器與解碼器彼此之間可能大不相同。例如,圖像描述生成 (image captioning) 網(wǎng)絡(luò)可能采用卷積編碼器(用于圖像輸入)和遞歸解碼器(用于自然語言輸出)。其應(yīng)用包括語義分割、機器翻譯等。
TensorFlow 教程:請參閱我們的 駕駛場景分割教程,其中展示了用于處理無人車輛感知問題的最先進分割網(wǎng)絡(luò):
注:駕駛場景分割教程 鏈接
https://github.com/lexfridman/mit-deep-learning/blob/master/tutorial_driving_scene_segmentation/tutorial_driving_scene_segmentation.ipynb
教程:利用 TensorFlow 進行駕駛場景分割
5.自動編碼器
自動編碼器是其中一種更簡單的 “無監(jiān)督學(xué)習(xí)” 形式,其采用編碼器 — 解碼器架構(gòu),并學(xué)習(xí)生成輸入數(shù)據(jù)的精確副本。由于編碼表征比輸入數(shù)據(jù)小得多,此網(wǎng)絡(luò)被迫學(xué)習(xí)如何生成最有意義的表征。
其 ground truth 數(shù)據(jù)來自輸入數(shù)據(jù),因此無需人工操作。換言之,此網(wǎng)絡(luò)可自我監(jiān)督。其應(yīng)用包括無監(jiān)督嵌入、圖像降噪等。但最重要的是,其 “表征學(xué)習(xí)” 的基本思想是下個部分的生成模型與所有深度學(xué)習(xí)的核心。
TensorFlow 教程:在這個TensorFlow Keras 教程中,您可以探索自動編碼器在以下兩方面的功能:(1) 對輸入數(shù)據(jù)進行降噪,(2) 在 MNIST 數(shù)據(jù)集中生成嵌入。
注:TensorFlow Keras 教程 鏈接
https://www.kaggle.com/vikramtiwari/autoencoders-using-tf-keras-mnist
6.生成對抗網(wǎng)絡(luò) (GAN)
GAN 是一種訓(xùn)練網(wǎng)絡(luò)框架,已經(jīng)過優(yōu)化,可以通過特定表征生成新的真實樣本。簡單而言,其訓(xùn)練過程涉及兩個網(wǎng)絡(luò)。其中一個網(wǎng)絡(luò)稱為生成器 (generator),它會生成新的數(shù)據(jù)實例并試圖欺騙另一個網(wǎng)絡(luò),即判別器 (discriminator),后者會對圖像的真?zhèn)芜M行分類。
在過去幾年,GAN 出現(xiàn)了許多變體和改進,包括從特定類別生成圖像的能力,以及將圖像從一個域映射到另一個域的能力,而且所生成圖像的真實度也有極大提升。請觀看有關(guān) 深度學(xué)習(xí)先進技術(shù)的講座,其中談及并探討了 GAN 的快速發(fā)展過程。例如,看看 BigGAN 從單個類別(毒蠅傘)中生成的三張樣本(arXiv 論文):
注:深度學(xué)習(xí)先進技術(shù)的講座 鏈接
https://www.youtube.com/watch?v=53YvP6gdD7UarXiv 論文 鏈接
https://arxiv.org/abs/1809.11096
BigGAN生成的圖像
TensorFlow 教程:如需 GAN 早期變體的示例,請參閱有關(guān)條件 GAN和DCGAN的教程。隨著課程的進展,我們將在GitHub上發(fā)布有關(guān) GAN 先進技術(shù)的教程。
注:條件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í) (Deep RL)
強化學(xué)習(xí) (RL) 是一種框架,可以教導(dǎo)智能體如何以使獎勵最大化的方式在現(xiàn)實世界中采取行動。我們將由神經(jīng)網(wǎng)絡(luò)完成的學(xué)習(xí)稱為深度強化學(xué)習(xí) (Deep RL)。RL 框架有三種類型:基于策略、基于值和基于模型。三者的區(qū)別在于神經(jīng)網(wǎng)絡(luò)需要學(xué)習(xí)的內(nèi)容。如需了解更多詳情,請觀看 MIT 課程 6.S091 的Deep RL 簡介講座。當(dāng)我們需要作出一系列決策時,可以借助 Deep RL 在模擬環(huán)境或真實環(huán)境中應(yīng)用神經(jīng)網(wǎng)絡(luò)。其中包括游戲操作、機器人、神經(jīng)架構(gòu)搜索等等。
注:Deep RL 簡介講座 鏈接
https://www.youtube.com/watch?v=zR11FLZ-O9M&list=PLrAXtmErZgOeiKm4sgNOknGvNjby9efdf
教程:我們的 DeepTraffic 環(huán)境提供了 教程 與 代碼示例,可以讓您快速地在瀏覽器中探索、訓(xùn)練和評估 Deep RL 智能體。此外,我們很快將在GitHub上發(fā)布支持 GPU 訓(xùn)練的 TensorFlow 教程:
注:教程 鏈接
https://selfdrivingcars.mit.edu/deeptraffic-documentation/
代碼示例 鏈接
https://github.com/lexfridman/deeptraffic
MIT DeepTraffic:深度強化學(xué)習(xí)競賽
基礎(chǔ)知識拓展
深度學(xué)習(xí)中有幾個重要概念并非由上述架構(gòu)直接表示。例如,變分自編碼器 (VAE)、LSTM/GRU或神經(jīng)圖靈機環(huán)境中的 “記憶” 概念、膠囊網(wǎng)絡(luò)、一般的注意力、遷移學(xué)習(xí)及元學(xué)習(xí)理念,以及 RL 中基于模型、基于值和基于策略的方法與 actor-critic 方法的區(qū)別。最后,許多深度學(xué)習(xí)系統(tǒng)以復(fù)雜的方式將這些架構(gòu)結(jié)合起來,從而共同從多模態(tài)數(shù)據(jù)中學(xué)習(xí),或共同學(xué)習(xí)解決多個任務(wù)。其中很多概念在本課程的其他講座中均有涉及,我們很快會介紹更多概念。
就個人而言,正如我在評論中所說,我很榮幸能有機會在 MIT 授課,并對加入 AI 和 TensorFlow 社區(qū)感到興奮不已。感謝大家在過去幾年的支持與熱烈討論。這是一次絕妙的旅程。如果您對我在未來的講座中應(yīng)談及的主題有任何建議,請在Twitter或LinkedIn上告訴我。
-
MIT
+關(guān)注
關(guān)注
3文章
253瀏覽量
23443 -
深度學(xué)習(xí)
+關(guān)注
關(guān)注
73文章
5512瀏覽量
121413 -
tensorflow
+關(guān)注
關(guān)注
13文章
329瀏覽量
60593
原文標(biāo)題:MIT 深度學(xué)習(xí)基礎(chǔ)知識:TensorFlow 簡介與概覽
文章出處:【微信號:tensorflowers,微信公眾號:Tensorflowers】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論