連接主義體系結(jié)構(gòu)已存在 70 多年,但新的架構(gòu)和圖形處理單元 (GPU) 將它們推到了人工智能的前沿。深度學(xué)習(xí)架構(gòu)是最近 20 年內(nèi)誕生的,它顯著增加了神經(jīng)網(wǎng)絡(luò)可以解決的問(wèn)題的數(shù)量和類(lèi)型。本文將介紹 5 種最流行的深度學(xué)習(xí)架構(gòu):遞歸神經(jīng)網(wǎng)絡(luò) (RNN)、長(zhǎng)短期記憶 (LSTM)/門(mén)控遞歸單元 (GRU)、卷積神經(jīng)網(wǎng)絡(luò) (CNN)、深度信念網(wǎng)絡(luò) (DBN) 和深度疊加網(wǎng)絡(luò) (DSN),然后探討用于深度學(xué)習(xí)的開(kāi)源軟件選項(xiàng)。
深度學(xué)習(xí)不是單個(gè)方法,而是一類(lèi)可用來(lái)解決廣泛?jiǎn)栴}的算法和拓?fù)浣Y(jié)構(gòu)。深度學(xué)習(xí)顯然已不是新概念,但深度分層神經(jīng)網(wǎng)絡(luò)和 GPU 的結(jié)合使用加速了它們的執(zhí)行,深度學(xué)習(xí)正在突飛猛進(jìn)地發(fā)展。大數(shù)據(jù)也助推了這一發(fā)展勢(shì)頭。因?yàn)樯疃葘W(xué)習(xí)依賴(lài)于監(jiān)督學(xué)習(xí)算法(這些算法使用示例數(shù)據(jù)訓(xùn)練神經(jīng)網(wǎng)絡(luò)并根據(jù)成功水平給予獎(jiǎng)懲),所以數(shù)據(jù)越多,構(gòu)建這些深度學(xué)習(xí)結(jié)構(gòu)的效果就越好。
深度學(xué)習(xí)與 GPU 的興起
深度學(xué)習(xí)由不同拓?fù)浣Y(jié)構(gòu)的深度網(wǎng)絡(luò)組成。神經(jīng)網(wǎng)絡(luò)已存在很長(zhǎng)一段時(shí)間,但多層網(wǎng)絡(luò)(每個(gè)層提供一定的功能,比如特征提?。┑拈_(kāi)發(fā)讓它們變得更加實(shí)用。增加層數(shù)意味著各層之間和層內(nèi)有更多相互聯(lián)系和更多權(quán)值。在這里,GPU 可為深度學(xué)習(xí)帶來(lái)助益,使訓(xùn)練和執(zhí)行這些深度網(wǎng)絡(luò)成為可能(原始處理器在這方面的效率不夠高)。
GPU 在一些關(guān)鍵方面與傳統(tǒng)多核處理器不同。首先,一個(gè)傳統(tǒng)處理器可能包含 4 - 24 個(gè)通用 CPU,但一個(gè) GPU 可能包含 1,000 - 4,000 個(gè)專(zhuān)用數(shù)據(jù)處理核心。
與傳統(tǒng) CPU 相比,高密度的核心使得 GPU 變得高度并行化(也就是說(shuō),它可以一次執(zhí)行許多次計(jì)算)。這使得 GPU 成為大型神經(jīng)網(wǎng)絡(luò)的理想選擇,在這些神經(jīng)網(wǎng)絡(luò)中,可以一次計(jì)算許多個(gè)神經(jīng)元(傳統(tǒng) CPU 可以并行處理的數(shù)量要少得多)。GPU 還擅長(zhǎng)浮點(diǎn)矢量運(yùn)算,因?yàn)樯窠?jīng)元能執(zhí)行的運(yùn)算不止是矢量乘法和加法。所有這些特征使得 GPU 上的神經(jīng)網(wǎng)絡(luò)達(dá)到所謂的高度并行(也就是完美并行,幾乎不需要花精力來(lái)并行化任務(wù))。
深度學(xué)習(xí)架構(gòu)
深度學(xué)習(xí)中使用的架構(gòu)和算法數(shù)量豐富多樣。本節(jié)將探討過(guò)去 20 年來(lái)存在的深度學(xué)習(xí)架構(gòu)中的 5 種。顯然,LSTM 和 CNN 是此列表中最古老的兩種方法,但也是各種應(yīng)用中使用最多的兩種方法。
些架構(gòu)被應(yīng)用于廣泛的場(chǎng)景中,但下表僅列出了它們的一些典型應(yīng)用。
架構(gòu) | 應(yīng)用 |
---|---|
RNN | 語(yǔ)音識(shí)別、手稿識(shí)別 |
LSTM/GRU 網(wǎng)絡(luò) | 自然語(yǔ)言文本壓縮、手稿識(shí)別、語(yǔ)音識(shí)別、手勢(shì)識(shí)別、圖像說(shuō)明 |
CNN | 圖像識(shí)別、視頻分析、自然語(yǔ)言處理 |
DBN | 圖像識(shí)別、信息檢索、自然語(yǔ)言理解、故障預(yù)測(cè) |
DSN | 信息檢索、持續(xù)語(yǔ)音識(shí)別 |
現(xiàn)在,讓我們了解一下這些架構(gòu)和用于訓(xùn)練它們的方法。
遞歸神經(jīng)網(wǎng)絡(luò)
RNN 是一種基礎(chǔ)網(wǎng)絡(luò)架構(gòu),其他一些深度學(xué)習(xí)架構(gòu)是基于它來(lái)構(gòu)建的。典型多層網(wǎng)絡(luò)與遞歸網(wǎng)絡(luò)之間的主要差別是,遞歸網(wǎng)絡(luò)沒(méi)有完整的前饋連接,它可能擁有反饋到前幾層(或同一層)的連接。這種反饋使 RNN 能保留對(duì)過(guò)去的輸入的記憶并按時(shí)間為問(wèn)題建模。
RNN 包含豐富的架構(gòu)(接下來(lái)我們將分析一種名為 LSTM 的流行拓?fù)浣Y(jié)構(gòu))。關(guān)鍵區(qū)別在于網(wǎng)絡(luò)中的反饋,這可以在隱藏層、輸出層或二者的某種組合中體現(xiàn)出來(lái)。
RNN 可以按時(shí)間展開(kāi)并通過(guò)標(biāo)準(zhǔn)反向傳播進(jìn)行訓(xùn)練,或者使用一種沿時(shí)間反向傳播 (BPTT) 的反向傳播變形來(lái)訓(xùn)練。
LSTM/GRU 網(wǎng)絡(luò)
LSTM 是 Hochreiter 和 Schimdhuber 于 1997 年共同創(chuàng)建的,最近幾年,作為一種用于各種用途的 RNN 架構(gòu),LSTM 變得越來(lái)越受歡迎。您可以在每天使用的產(chǎn)品(比如智能手機(jī))中發(fā)現(xiàn) LSTM。IBM 在 IBM Watson?中應(yīng)用了 LSTM,在對(duì)話語(yǔ)音識(shí)別上取得了里程碑式的成就。
LSTM 脫離了基于典型神經(jīng)元的神經(jīng)網(wǎng)絡(luò)架構(gòu),引入了記憶細(xì)胞的概念。記憶細(xì)胞可以作為輸入值的函數(shù),短時(shí)間或長(zhǎng)時(shí)間地保留自身的運(yùn)算值,這使得該細(xì)胞能記住重要的信息,而不只是它最后計(jì)算的值。
LSTM 記憶細(xì)胞包含 3 個(gè)控制信息如何流進(jìn)或流出細(xì)胞的門(mén)。輸入門(mén)控制新信息何時(shí)能流入記憶中。遺忘門(mén)控制何時(shí)遺忘一段現(xiàn)有信息,使細(xì)胞能記憶新數(shù)據(jù)。最后,輸出門(mén)控制細(xì)胞中包含的信息何時(shí)用在來(lái)自該細(xì)胞的輸出中。記憶細(xì)胞還包含控制每個(gè)門(mén)的權(quán)值。訓(xùn)練算法(通常為 BPTT)基于得到的網(wǎng)絡(luò)輸出錯(cuò)誤來(lái)優(yōu)化這些權(quán)值。
2014 年,推出了 LSTM 的一個(gè)簡(jiǎn)化版本,叫做門(mén)控遞歸單元。此模型有兩個(gè)門(mén),拋棄了 LSTM 模型中存在的輸出門(mén)。對(duì)于許多應(yīng)用,GRU 擁有類(lèi)似于 LSTM 的性能,但更簡(jiǎn)單意味著更少的權(quán)值和更快的執(zhí)行速度。
GRU 包含兩個(gè)門(mén):更新門(mén)和重置門(mén)。更新門(mén)指示保留多少以前細(xì)胞的內(nèi)容。重置門(mén)定義如何將新輸入與以前的細(xì)胞內(nèi)容合并。GRU 可以通過(guò)將重置門(mén)設(shè)置為 1 并將更新門(mén)設(shè)置為 0 來(lái)模擬標(biāo)準(zhǔn) RNN。
GRU 比 LSTM 更簡(jiǎn)單,能更快地訓(xùn)練,而且執(zhí)行效率更高。但是,LSTM 更富于表達(dá),有更多的數(shù)據(jù),能帶來(lái)更好的結(jié)果。
卷積神經(jīng)網(wǎng)絡(luò)
CNN 是一種多層神經(jīng)網(wǎng)絡(luò),該網(wǎng)絡(luò)的創(chuàng)作靈感來(lái)自動(dòng)物的視覺(jué)皮質(zhì)。該架構(gòu)在圖像處理應(yīng)用中特別有用。第一個(gè) CNN 是由 Yann LeCun 創(chuàng)建的,當(dāng)時(shí),該架構(gòu)專(zhuān)注于手稿字符識(shí)別,比如郵政編碼解釋。作為一種深度網(wǎng)絡(luò),早期的層主要識(shí)別各種特征(比如邊緣),后來(lái)的層將這些特征重新組合到輸入的更高級(jí)屬性中。
LeNet CNN 架構(gòu)包含多個(gè)層,這些層實(shí)現(xiàn)了特征提取,然后實(shí)現(xiàn)了分類(lèi)(參見(jiàn)下圖)。圖像被分成多個(gè)接受區(qū),其中注入了隨后可從輸入圖像中提取特征的卷積層。下一步是池化,它可以(通過(guò)降采樣)降低提取的特征的維度,同時(shí)保留最重要的信息(通常通過(guò)最大池化)。然后執(zhí)行另一個(gè)卷積和池化步驟,將結(jié)果注入一個(gè)完全連接的多層感知器中。此網(wǎng)絡(luò)的最終輸出層是一組節(jié)點(diǎn),這些節(jié)點(diǎn)標(biāo)識(shí)了圖像的特征(在本例中,每個(gè)節(jié)點(diǎn)對(duì)應(yīng)一個(gè)識(shí)別出的數(shù)字)。您可以使用反向傳播訓(xùn)練該網(wǎng)絡(luò)。
深層處理、卷積、池化和完全連接的分類(lèi)層的使用,為深度學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)的各種新應(yīng)用開(kāi)啟了一扇門(mén)。除了圖像處理之外,CNN 還成功應(yīng)用到了視頻識(shí)別和各種自然語(yǔ)言處理任務(wù)中。
人們最近應(yīng)用 CNN 和 LSTM 來(lái)生成圖像和視頻說(shuō)明系統(tǒng),使用自然語(yǔ)言總結(jié)圖像或視頻內(nèi)容。CNN 實(shí)現(xiàn)了圖像或視頻處理,LSTM 經(jīng)過(guò)訓(xùn)練可以將 CNN 輸出轉(zhuǎn)換為自然語(yǔ)言。
深度信念網(wǎng)絡(luò)
DBN 是一種典型的網(wǎng)絡(luò)架構(gòu),但它包含一種新穎的訓(xùn)練算法。DBN 是一種多層網(wǎng)絡(luò)(通常是深度網(wǎng)絡(luò),包含許多隱藏層),其中的每對(duì)連接的層都是一個(gè)受限玻爾茲曼機(jī) (RBM)。通過(guò)這種方式,將 DBN 表示為一些疊加的 RBM。
在 DBN 中,輸入層表示原始感知輸入,每個(gè)隱藏層都學(xué)習(xí)此輸入的抽象表示。輸出層的處理方式與其他層稍有不同,它實(shí)現(xiàn)了網(wǎng)絡(luò)分類(lèi)。訓(xùn)練分兩步進(jìn)行:無(wú)監(jiān)督預(yù)訓(xùn)練和監(jiān)督調(diào)優(yōu)。
在無(wú)監(jiān)督預(yù)訓(xùn)練過(guò)程中,會(huì)訓(xùn)練每個(gè) RBM 來(lái)重構(gòu)它的輸入(例如,第一個(gè) RBM 將輸入層重構(gòu)到第一個(gè)隱藏層)。用類(lèi)似方式訓(xùn)練下一個(gè) RBM,但將第一個(gè)隱藏層視為輸入(或可視)層,通過(guò)使用第一個(gè)隱藏層的輸出作為輸入來(lái)訓(xùn)練 RBM。此過(guò)程一直持續(xù)到完成每一層的預(yù)訓(xùn)練。完成預(yù)訓(xùn)練后,開(kāi)始進(jìn)行調(diào)優(yōu)。在此階段,可對(duì)輸出節(jié)點(diǎn)使用標(biāo)簽來(lái)提供它們的含義(它們?cè)诰W(wǎng)絡(luò)的上下文中表示的含義)。然后使用梯度下降學(xué)習(xí)或反向傳播來(lái)應(yīng)用整個(gè)網(wǎng)絡(luò)訓(xùn)練,從而完成訓(xùn)練過(guò)程。
深度疊加網(wǎng)絡(luò)
最后要介紹的一種架構(gòu)是 DSN,也稱(chēng)為深凸網(wǎng)絡(luò)。DSN 不同于傳統(tǒng)的深度學(xué)習(xí)框架,因?yàn)楸M管它包含一個(gè)深度網(wǎng)絡(luò),但它實(shí)際上是各個(gè)網(wǎng)絡(luò)的深度集合,每個(gè)網(wǎng)絡(luò)都有自己的隱藏層。此架構(gòu)是對(duì)一個(gè)深度學(xué)習(xí)問(wèn)題的一種回應(yīng):訓(xùn)練的復(fù)雜性。深度學(xué)習(xí)架構(gòu)中的每一層的訓(xùn)練復(fù)雜性都呈指數(shù)級(jí)增長(zhǎng),所以 DSN 未將訓(xùn)練視為單一問(wèn)題,而將它視為單獨(dú)訓(xùn)練問(wèn)題的集合。
DSN 包含一組模塊,每個(gè)模塊都是 DSN 的整體分層結(jié)構(gòu)中的一個(gè)子網(wǎng)。在此架構(gòu)的一個(gè)實(shí)例中,為 DSN 創(chuàng)建了 3 個(gè)模塊。每個(gè)模塊都包含一個(gè)輸入層、一個(gè)隱藏層和一個(gè)輸出層。模塊彼此堆疊,一個(gè)模塊的輸入包含前一層的輸出和原始輸入矢量。這種分層使整個(gè)網(wǎng)絡(luò)能學(xué)習(xí)比單個(gè)模塊更復(fù)雜的分類(lèi)。
DSN 允許隔離訓(xùn)練各個(gè)模塊,這使得它們能并行訓(xùn)練,因而具有很高的效率。監(jiān)督訓(xùn)練實(shí)現(xiàn)為每個(gè)模塊上的反向傳播,而不是在整個(gè)網(wǎng)絡(luò)上的反向傳播。對(duì)于許多問(wèn)題,DSN 表現(xiàn)得都比典型 DBN 更好,這使它們成為了一種流行且高效的網(wǎng)絡(luò)架構(gòu)。
開(kāi)源框架
這些深度學(xué)習(xí)架構(gòu)肯定是可以實(shí)現(xiàn)的,但從頭開(kāi)始可能很耗時(shí),而且也需要時(shí)間來(lái)優(yōu)化它們并讓它們變得成熟。幸運(yùn)的是,可以利用一些開(kāi)源框架來(lái)更輕松地實(shí)現(xiàn)和部署深度學(xué)習(xí)算法。這些框架支持 Python、C/C++ 和 Java?等語(yǔ)言。讓我們看看 3 種最流行的框架和它們的優(yōu)缺點(diǎn)。
Caffe
Caffe 是最流行的深度學(xué)習(xí)框架之一。Caffe 最初是在一篇博士論文中發(fā)布的,但現(xiàn)在已依據(jù) Berkeley Software Distribution 許可進(jìn)行發(fā)布。Caffe 支持許多深度學(xué)習(xí)架構(gòu),包括 CNN 和 LSTM,但它明顯不支持 RBM 或 DBM(不過(guò)即將發(fā)布的 Caffe2 將會(huì)支持它們)。
圖像分類(lèi)和其他視覺(jué)應(yīng)用中已采用 Caffe,而且 Caffe 支持通過(guò) NVIDIA CUDA Deep Neural Network 庫(kù)實(shí)現(xiàn)基于 GPU 的加速。Caffe 支持采用開(kāi)放多處理 (Open Multi-Processing, OpenMP) 在一個(gè)系統(tǒng)集群上并行執(zhí)行深度學(xué)習(xí)算法。為了保證性能,Caffe 和 Caffe2 是用 C++ 編寫(xiě)的,它們還為深度學(xué)習(xí)的訓(xùn)練和執(zhí)行提供了 Python 和 MATLAB 接口。
Deeplearning4j
Deeplearning4j 是一種流行的深度學(xué)習(xí)框架,它專(zhuān)注于 Java 技術(shù),但包含適用于其他語(yǔ)言的應(yīng)用編程接口,比如 Scala、Python 和 Clojure。該框架依據(jù) Apache 許可而發(fā)布,支持 RBM、DBN、CNN 和 RNN。Deeplearning4j 還包含兼容 Apache Hadoop 和 Spark(大數(shù)據(jù)處理框架)的分布式并行版本。
人們已應(yīng)用 Deeplearning4j 來(lái)解決眾多問(wèn)題,包括金融領(lǐng)域中的欺詐檢測(cè)、推薦系統(tǒng)、圖像識(shí)別或網(wǎng)絡(luò)安全(網(wǎng)絡(luò)入侵檢測(cè))。該框架集成了 CUDA 來(lái)實(shí)現(xiàn) GPU 優(yōu)化,而且可通過(guò) OpenMP 或 Hadoop 進(jìn)行分發(fā)。
TensorFlow
TensorFlow 是 Google 開(kāi)發(fā)的一個(gè)開(kāi)源庫(kù),是從閉源 DistBelief 衍生而來(lái)??梢允褂?TensorFlow 訓(xùn)練和部署各種神經(jīng)網(wǎng)絡(luò)(CNN、RBM、DBN 和 RNN),TensorFlow 是依據(jù) Apache 2.0 許可而發(fā)布的。人們已應(yīng)用 TensorFlow 來(lái)解決眾多問(wèn)題,比如圖像說(shuō)明、惡意軟件檢測(cè)、語(yǔ)音識(shí)別和信息檢索。最近發(fā)布了一個(gè)專(zhuān)注于 Android 的堆棧,名為 TensorFlow Lite。
可以在 Python、C++、Java 語(yǔ)言、Rust 或 Go(但 Python 最穩(wěn)定)中使用 TensorFlow 開(kāi)發(fā)應(yīng)用程序,并通過(guò) Hadoop 分散執(zhí)行它們。除了專(zhuān)業(yè)的硬件接口之外,TensorFlow 還支持 CUDA。
Distributed Deep Learning
IBM Distributed Deep Learning (DDL) 被稱(chēng)為“深度學(xué)習(xí)的噴氣式引擎”,這個(gè)庫(kù)鏈接到了 Caffe 和 TensorFlow 等領(lǐng)先框架中??稍诜?wù)器集群和數(shù)百個(gè) GPU 上使用 DDL 來(lái)加速深度學(xué)習(xí)算法。DDL通過(guò)定義最終路徑來(lái)優(yōu)化神經(jīng)元計(jì)算的通信,最終的數(shù)據(jù)必須在GPU之間進(jìn)行。通過(guò)輕松完成 Microsoft 最近設(shè)置的一個(gè)圖像識(shí)別任務(wù),證明深度學(xué)習(xí)集群的瓶頸能夠得以解決。
結(jié)束語(yǔ)
深度學(xué)習(xí)是通過(guò)一系列架構(gòu)來(lái)表示的,這些架構(gòu)可為各種各樣的問(wèn)題領(lǐng)域構(gòu)建解決方案。這些解決方案可以專(zhuān)注于前饋的網(wǎng)絡(luò),或者是允許考慮以前的輸入的遞歸網(wǎng)絡(luò)。盡管構(gòu)建這些類(lèi)型的深度架構(gòu)可能很復(fù)雜,但可以使用各種開(kāi)源解決方案(如Caffe,Deeplearning4j,TensorFlow和DDL)來(lái)快速啟動(dòng)和運(yùn)行。
-
gpu
+關(guān)注
關(guān)注
28文章
4729瀏覽量
128890 -
深度學(xué)習(xí)
+關(guān)注
關(guān)注
73文章
5500瀏覽量
121111 -
卷積神經(jīng)網(wǎng)絡(luò)
+關(guān)注
關(guān)注
4文章
367瀏覽量
11863
原文標(biāo)題:深度學(xué)習(xí)架構(gòu)
文章出處:【微信號(hào):C_Expert,微信公眾號(hào):C語(yǔ)言專(zhuān)家集中營(yíng)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論