深度學(xué)習(xí)CNN RNN算法
深度學(xué)習(xí)的起源
許多人都熟悉“深度學(xué)習(xí)”這個術(shù)語,因為它作為解決困難和計算上昂貴問題的可靠方法而受到廣泛關(guān)注。然而,特別是在該領(lǐng)域的新手中,對這些系統(tǒng)最初開發(fā)的方式幾乎沒有關(guān)注。如果沒有此上下文,有時很難確定特定應(yīng)用程序需要哪個特定框架或體系結(jié)構(gòu)。在這篇文章中將了解深度學(xué)習(xí)RNN與CNN之間的區(qū)別。
現(xiàn)代深度學(xué)習(xí)系統(tǒng)基于人工神經(jīng)網(wǎng)絡(luò)(ANN),這是一種基于大腦結(jié)構(gòu)松散建模的計算系統(tǒng)。
神經(jīng)網(wǎng)絡(luò):深度學(xué)習(xí)的基礎(chǔ)
神經(jīng)網(wǎng)絡(luò)不是獨立的計算算法。相反,它們代表一種結(jié)構(gòu)或框架,用于組合機器學(xué)習(xí)算法以解決特定任務(wù)。
神經(jīng)網(wǎng)絡(luò)由層組成,其中每層包含許多人工神經(jīng)元。神經(jīng)元之間的連接類似于大腦內(nèi)的突觸,其中信號可以從一個神經(jīng)元傳遞到另一個神經(jīng)元。層之間的連接由從一層到下一層的神經(jīng)元之間的鏈接定義。
傳統(tǒng)的NN由多個層組成,每個層執(zhí)行特定的功能,有助于解決手頭的問題。第一個是輸入層,它承擔著一種感覺的角色。在圖像識別任務(wù)中,這可以被認為是眼睛,而它將接受語音識別系統(tǒng)中的音頻數(shù)據(jù)。輸入層后跟一個或多個隱藏層,最終鏈完成輸出層。輸出層可以被認為是最終決策者,而隱藏層是真實學(xué)習(xí)發(fā)生的地方。
數(shù)據(jù)通過變換從輸入“移動”,順序地通過每個隱藏層,并終止于輸出層。這通常被稱為前饋神經(jīng)網(wǎng)絡(luò)。
雖然傳統(tǒng)的NN在許多任務(wù)中證明是成功的,但是對其真正強度的認識始于引入非常大量的數(shù)據(jù)和處理它所需的計算能力。本質(zhì)上,深度學(xué)習(xí)系統(tǒng)是非常大的神經(jīng)網(wǎng)絡(luò),使用大量數(shù)據(jù)進行訓(xùn)練。隨著認識到這些系統(tǒng)具有巨大的未開發(fā)潛力,基礎(chǔ)結(jié)構(gòu)的組成成為一個重要的研究課題。
深度學(xué)習(xí)歷史上的一個重要里程碑是引入了遞歸神經(jīng)網(wǎng)絡(luò)(RNN),它構(gòu)成了框架構(gòu)成的重大變化。
遞歸神經(jīng)網(wǎng)絡(luò)
RNN使用的架構(gòu)與傳統(tǒng)的NN沒有什么不同。不同之處在于RNN引入了內(nèi)存的概念,它以不同類型的鏈接的形式存在。與前饋NN不同,某些層的輸出被反饋到前一層的輸入中。這種添加允許分析順序數(shù)據(jù),這是傳統(tǒng)NN無法實現(xiàn)的。此外,傳統(tǒng)的NN限于固定長度的輸入,而RNN沒有這樣的限制。
在反向方向上包含層之間的鏈接允許反饋循環(huán),其用于幫助基于上下文學(xué)習(xí)概念。就深度學(xué)習(xí)應(yīng)用程序的功能而言,它在很大程度上取決于需求(或目標)和數(shù)據(jù)。
對于包含重復(fù)模式的時間序列數(shù)據(jù),RNN能夠識別并利用與時間相關(guān)的上下文。這是通過對識別前一個和后一個令牌的模式施加更多權(quán)重來實現(xiàn)的,而不是單獨評估。例如,考慮一個學(xué)習(xí)識別口語的系統(tǒng)。通過考慮最近說出的單詞來預(yù)測下一句話,這樣的系統(tǒng)將受益匪淺。
在這個主題上,學(xué)習(xí)序列數(shù)據(jù)的流行框架稱為長短期記憶網(wǎng)絡(luò)(LSTM)。這是一種能夠?qū)W習(xí)長期關(guān)系的RNN。例如,如果自動完成任務(wù)中下一個單詞的預(yù)測取決于句子或段落中較早的上下文,則LSTM旨在幫助實現(xiàn)此目的。LSTM在聲學(xué)建模和詞性任務(wù)方面也取得了成功。
RNN有不同的種類,通常也依賴于任務(wù)。RNN的類型由與輸出數(shù)量相關(guān)的輸入數(shù)量來描述。四種不同的類型是:
一對一,非正式地稱為香草RNN。該變體具有一個輸入,例如單詞或圖像,并輸出單個標記,例如單詞或布爾值。
一對多,其中一個輸入用于創(chuàng)建多個輸出。
多對一,其中幾個輸入用于創(chuàng)建單個輸出。
多對多,分析幾個輸入以生成多個輸出。
要了解哪些最適合特定工作,有必要審查RNN與CNN有效的一些應(yīng)用程序。
RNN的應(yīng)用
RNN已成功應(yīng)用于多種類型的任務(wù)中。其中一些包括:
圖像分類,其中檢查圖像并進行單個確定,例如“白天圖片”與“夜間圖片”。
這是一對一映射的示例。
圖像字幕,其中圖像根據(jù)顯示的內(nèi)容自動給出標題。這可能包括復(fù)雜的動作,例如:“狐貍跳過狗”。
此任務(wù)需要一對多RNN,其中輸入是單個圖像,輸出是由多個單詞組成的短語。
時間序列預(yù)測,例如在給定歷史值的情況下預(yù)測股票價格。
此任務(wù)涉及使用多對一RNN,其中許多先前的股票價格用于預(yù)測單個未來價格。
自動語言翻譯,其中一種語言的書面文本或口語作為輸入,并輸出表示相同文本的不同語言。
這是多對多RNN的示例,其中分析了幾個單詞作為輸入,并且輸出也是幾個單詞的長度。
自然語言處理,例如社交媒體帖子中的情緒分析。
根據(jù)情緒的復(fù)雜性,該RNN可以是多對一或多對多的類型。例如,如果情緒是“正面”或“負面”,那么只有一個輸出。然而,如果情緒更復(fù)雜并且與諸如“積極和有趣”,“消極和憤怒”或“消極和有趣”的其他修飾符相結(jié)合,那么它將適合于多對多實現(xiàn)。
文本分類和句子完成。RNN廣泛用于文本分類,優(yōu)于其他眾所周知的算法,例如支持向量機(SVM)。
使用RNN也成功地實現(xiàn)了分段手寫識別和語音識別系統(tǒng)。
卷積神經(jīng)網(wǎng)絡(luò)
在比較RNN與CNN時,NN框架的下一個重要創(chuàng)新是CNN。CNN的定義特征是它在某些層中執(zhí)行卷積運算 - 因此,稱為卷積神經(jīng)網(wǎng)絡(luò)。該架構(gòu)與傳統(tǒng)的NN略有不同,從單個層的構(gòu)成開始。
在CNN中,第一層始終是卷積層。這些是使用三個空間維度定義的:長度,寬度和深度。這些層未完全連接 - 這意味著來自一個層的神經(jīng)元不會連接到下一層中的每個神經(jīng)元。最終卷積層的輸出是第一個完全連接層的輸入。
CNN交互式演示識別手寫數(shù)字從數(shù)學(xué)上講,卷積是一種在兩個矩陣之間發(fā)生的分組函數(shù)。更一般地,它將兩個功能組合成第三個,從而合并信息。在實踐中,它們可以被認為是過濾器或特征選擇的機制。單個層可以負責(zé)精確定位圖像中的非常亮的像素,并且后續(xù)層識別這些高光一起表示圖像中對象的邊緣。
卷積神經(jīng)網(wǎng)絡(luò)體系結(jié)構(gòu)
除了卷積層之外,通常在它們之間添加池化層。池化層負責(zé)通過降低其維度來簡化數(shù)據(jù)。這有效地縮短了培訓(xùn)所需的時間,并有助于遏制過度擬合的問題。卷積和合并層之后是完全連接的層。
在最終的完全連接的層中,第一個中的每個神經(jīng)元都連接到下一個神經(jīng)元。此階段的過程著眼于哪些特征最準確地描述了特定的類,結(jié)果是根據(jù)深度組織的單個概率向量。例如,在車輛識別系統(tǒng)中,需要考慮許多特征。
汽車的側(cè)視圖可能只顯示兩個輪子。孤立地看,這個不完整的描述可能與摩托車相匹配。因此,將存在非零概率,盡管很小,汽車將被歸類為摩托車,反之亦然。重要的是,諸如窗戶和/或門的存在之類的附加特征將有助于更準確地確定車輛類型。輸出層生成與每個類對應(yīng)的概率。假設(shè)概率最高的是最佳選擇。在這個識別汽車的例子中,摩托車的概率較低,因為除其他外,沒有可見的門。
用于計算機視覺
CNN最常見的應(yīng)用是計算機視覺的一般領(lǐng)域。其示例是醫(yī)學(xué)圖像分析,圖像識別,面部檢測和識別系統(tǒng)以及全運動視頻分析。
其中一個系統(tǒng)是AlexNet,它是CNN,在贏得2012年ImageNet大規(guī)模視覺識別挑戰(zhàn)賽時獲得了關(guān)注。它是一個由8層組成的CNN,其中前五個是卷積的,最后三個是完全連接的層。
CNN的其他應(yīng)用
CNN一直是研究和測試其他任務(wù)的主題,它在解決傳統(tǒng)的自然語言處理(NLP) 任務(wù)方面非常有效 。具體來說,它在語義分析,句子建模和搜索查詢檢索方面取得了令人矚目的成果。
CNN已被用于藥物發(fā)現(xiàn)領(lǐng)域。AtomNet是一個深度學(xué)習(xí)NN,它訓(xùn)練化學(xué)相互作用的3D表示。它發(fā)現(xiàn)了化學(xué)特征,并已被用于預(yù)測用于對抗疾病的新型生物分子。
最后,值得注意的是,CNN已經(jīng)應(yīng)用于更傳統(tǒng)的機器學(xué)習(xí)問題,例如游戲。Checkers和Go都是CNN學(xué)習(xí)在專業(yè)級別上玩的游戲。
RNN vs CNN - 他們不是互斥的!
如果不提及這兩種方法彼此不相互排斥,RNN與CNN的比較就不完整。乍一看,似乎它們可能用于處理不同的問題,但重要的是要注意某些類型的數(shù)據(jù)可以由任一架構(gòu)處理。這方面的例子是圖像分類和文本分類,其中兩個系統(tǒng)都是有效的。此外,一些深度學(xué)習(xí)應(yīng)用程序可能會受益于兩種體系結(jié)構(gòu)的組合。
假設(shè)被建模的數(shù)據(jù),無論是代表圖像還是其他方式,都具有時間屬性。這是合并這些技術(shù)的理想情況。一種這樣的混合方法被稱為DanQ架構(gòu)。它需要固定長度的DNA序列作為輸入并預(yù)測DNA的特性。卷積層發(fā)現(xiàn)序列基序,其是被認為具有生物學(xué)功能的短復(fù)發(fā)模式。重復(fù)層負責(zé)捕獲長期關(guān)系或主題之間的依賴關(guān)系。這允許系統(tǒng)學(xué)習(xí)DNA的語法,從而改進預(yù)測。
DanQ建立在DeepSEA模型之上,該模型執(zhí)行與DanQ相同的功能,但不包括RNN組件。DanQ模型的性能優(yōu)于其前身,從而突出了為架構(gòu)添加內(nèi)存和反饋循環(huán)的重要性。類似地,RNN組件通過僅考慮已經(jīng)由CNN過濾的更抽象的數(shù)據(jù)而受益,使得更容易發(fā)現(xiàn)長期關(guān)系。
RNN與CNN結(jié)論
毫無疑問,在比較RNN與CNN時,兩者在深度學(xué)習(xí)領(lǐng)域都很常見。每種體系結(jié)構(gòu)都有優(yōu)點和缺點,這取決于所建模的數(shù)據(jù)類型。當選擇一個框架而不是另一個框架,或者創(chuàng)建混合方法時,數(shù)據(jù)類型和手頭的工作是最重要的考慮因素。
RNN用于數(shù)據(jù)包含時間屬性的情況,例如時間序列。類似地,在數(shù)據(jù)是上下文敏感的情況下,如在句子完成的情況下,由反饋回路提供的存儲器的功能對于足夠的性能是至關(guān)重要的。
CNN是圖像分類的首選,更常見的是計算機視覺。此外,CNN已用于無數(shù)任務(wù),并且在某些領(lǐng)域優(yōu)于其他機器學(xué)習(xí)算法。但是,CNN不能處理可變長度輸入。
最后,當數(shù)據(jù)適合于CNN時,混合RNN和CNN方法可能是優(yōu)越的,但具有可由RNN組件識別和利用的時間特性。
