ANN:DNN结构演进History—RNN
前言廢話:
?????? CNN在圖像處理領(lǐng)域的極大成功源于CNN的二維遞進(jìn)映射結(jié)構(gòu),通過(guò)訓(xùn)練多層卷積核來(lái)進(jìn)行特征提取函數(shù)訓(xùn)練,在二維圖像的稀疏表達(dá)和語(yǔ)義關(guān)聯(lián)分析方面有天生的結(jié)構(gòu)優(yōu)勢(shì)。而涉及時(shí)序問(wèn)題的邏輯序列分析—邊長(zhǎng)序列分析,需要引入適合解決其問(wèn)題的方法。
???????引入RNN:在深度學(xué)習(xí)領(lǐng)域,傳統(tǒng)的前饋神經(jīng)網(wǎng)絡(luò)(feed-forward neural net,簡(jiǎn)稱FNN)具有出色的表現(xiàn),取得了許多成功,它曾在許多不同的任務(wù)上——包括手寫數(shù)字識(shí)別和目標(biāo)分類上創(chuàng)造了記錄。甚至到了今天,FNN在解決分類任務(wù)上始終都比其他方法要略勝一籌。
?????? 盡管如此,大多數(shù)專家還是會(huì)達(dá)成共識(shí):FNN可以實(shí)現(xiàn)的功能仍然相當(dāng)有限。 究其原因,人類的大腦有著驚人的計(jì)算功能,而 “分類” 任務(wù)僅僅是其中很小的一個(gè)組成部分。我們不僅能夠識(shí)別個(gè)體案例,更能分析輸入信息之間的整體邏輯序列,即時(shí)序模式信息。這些信息序列富含有大量的內(nèi)容,信息彼此間有著復(fù)雜的時(shí)間關(guān)聯(lián)性,并且信息長(zhǎng)度各種各樣。例如視覺(jué)、開(kāi)車、演講還有理解能力,這些都需要我們同時(shí)處理更高維度的多種輸入信息,因?yàn)樗鼈儠r(shí)時(shí)都在變化,而這是FNN在建模時(shí)就極為匱乏的。
?????? 現(xiàn)在的問(wèn)題在于如何學(xué)習(xí)信息的邏輯順序,解決這一問(wèn)題有一個(gè)相當(dāng)靠譜的途徑,那就是遞歸神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Net,簡(jiǎn)稱RNN)。遞歸神經(jīng)網(wǎng)絡(luò)無(wú)需在層面之間構(gòu)建,同時(shí)引入定向循環(huán),能夠更好地處理高維度信息的整體邏輯順序。
?????? 原文鏈接:A Deep Dive into Recurrent Neural Nets?(編譯/孫薇 校對(duì)/周建丁);原文鏈接:http://www.csdn.net/article/2015-01-28/2823747?? ;此外還有RNN的一篇詳細(xì)介紹,值得一看:遞歸神經(jīng)網(wǎng)絡(luò)(RNN, Recurrent Neural Networks)介紹
??????? 強(qiáng)烈推薦,這一個(gè)即經(jīng)典又理解深刻且能深入淺出:循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)-karpathy.github.io/2015;建議詳細(xì)研讀此文,經(jīng)典深刻、層層深入,且有代碼做出了詳細(xì)演示。
?? ? ? RNN通過(guò)引入神經(jīng)元定向循環(huán)用于處理邊變長(zhǎng)問(wèn)題,由此被稱為遞歸網(wǎng)絡(luò);再通過(guò)其他神經(jīng)元(如果有自我連接則包括自身)的輸入和當(dāng)前值的輸入,進(jìn)行加權(quán)求和(logit)之后重新計(jì)算出新的行為,保存之前記憶。通過(guò)時(shí)間軸展開(kāi)成類似于FNN的新構(gòu)架,因此可以使用BP算法進(jìn)行網(wǎng)絡(luò)訓(xùn)練;而根據(jù)時(shí)間展開(kāi)長(zhǎng)序列會(huì)產(chǎn)生極深FNN,容易產(chǎn)生梯度的消失與爆炸問(wèn)題,因此引入了LSTM-長(zhǎng)短期記憶,保持一個(gè)常數(shù)誤差流,以此保證梯度的不會(huì)爆炸消失;用于恒穩(wěn)誤差,通常使用一個(gè)門單元進(jìn)行誤差流控制。
?
Recurrent Neural Networks
Sequences.
??????? ? Depending on your background you might be wondering: What makes Recurrent Networks so special? A glaring limitation of Vanilla Neural Networks (and also Convolutional Networks) is that their API is too constrained: they accept a fixed-sized vector as input (e.g. an image) and produce a fixed-sized vector as output (e.g. probabilities of different classes). Not only that: These models perform this mapping using a fixed amount of computational steps (e.g. the number of layers in the model). The core reason that recurrent nets are more exciting is that they allow us to operate over sequences of vectors: Sequences in the input, the output, or in the most general case both. A few examples may make this more concrete:
?????? ?? ? Each rectangle is a vector and arrows represent functions (e.g. matrix multiply). Input vectors are in red, output vectors are in blue and green vectors hold the RNN's state (more on this soon). From left to right: (1) Vanilla mode of processing without RNN, from fixed-sized input to fixed-sized output (e.g. image classification). (2) Sequence output (e.g. image captioning takes an image and outputs a sentence of words). (3) Sequence input (e.g. sentiment analysis where a given sentence is classified as expressing positive or negative sentiment). (4) Sequence input and sequence output (e.g. Machine Translation: an RNN reads a sentence in English and then outputs a sentence in French). (5) Synced sequence input and output (e.g. video classification where we wish to label each frame of the video). Notice that in every case are no pre-specified constraints on the lengths sequences because the recurrent transformation (green) is fixed and can be applied as many times as we like.
???????? ? 上述一段主要描述幾種簡(jiǎn)單的RNN網(wǎng)絡(luò):根據(jù)輸入輸出的維度,劃分為1對(duì)1,可以用于單輸出的時(shí)序單維度變長(zhǎng)序列模式識(shí)別,如手勢(shì)識(shí)別;1對(duì)多,輸出多維度的變長(zhǎng)序列模式識(shí)別,如固定編碼器;多對(duì)1,可以用于單輸出的時(shí)序多維度變長(zhǎng)序列模式識(shí)別,如步態(tài)識(shí)別;延遲多對(duì)多,比如翻譯網(wǎng)絡(luò);實(shí)時(shí)多對(duì)多,如視頻分析模式識(shí)別。
?
一、RNN是什么/類別?
?????? ? 維基百科:https://en.wikipedia.org/wiki/RNN
- 1Architectures
- 1.1Fully recurrent network??? 全連接遞歸神經(jīng)網(wǎng)絡(luò)
- 1.2Hopfield network????????????? 霍普菲爾德神經(jīng)網(wǎng)絡(luò)
- 1.3Elman networks and Jordan networks????????
- 1.4Echo state network?????? ?? 回聲狀態(tài)網(wǎng)絡(luò)
- 1.5Long short term memory network????????????? ??? 長(zhǎng)短期網(wǎng)絡(luò)
- 1.6Bi-directional RNN???????????????????????????????????????? 雙向網(wǎng)絡(luò)
- 1.7Continuous-time RNN??????????????????????????????????? CTRNN連續(xù)時(shí)間網(wǎng)絡(luò)
- 1.8Hierarchical RNN?????????????????????????????????????????? 分層RNN
- 1.9Recurrent multilayer perceptron???????????????????? 遞歸多層網(wǎng)絡(luò)
- 1.10Second Order Recurrent Neural Network??? 二階遞歸神經(jīng)網(wǎng)絡(luò)
- 1.11Multiple Timescales Recurrent Neural Network (MTRNN) Model???? 多時(shí)間瓷都遞歸網(wǎng)絡(luò)模型?
- 1.12Pollack’s sequential cascaded networks????? 序列級(jí)聯(lián)網(wǎng)絡(luò)
- 1.13Neural Turing Machines??????????????????????????????? 神經(jīng)圖靈機(jī)
- 1.14Bidirectional Associative Memory (BAM)????? 雙向聯(lián)想記憶(網(wǎng)絡(luò))
- ?
- 2Training
- 2.1Gradient descent?????????????????????????????????? 梯度下降法
- 2.2Global optimization methods???????????????? 全局優(yōu)化方法
- 3Related fields and models
????? ?? RNN建立在與FNN相同的計(jì)算單元上,兩者之間區(qū)別在于:組成這些神經(jīng)元相互關(guān)聯(lián)的架構(gòu)有所不同。FNN是建立在層面之上,其中信息從輸入單元向輸出單元單向流動(dòng),在這些連通模式中并不存在不定向的循環(huán)。盡管大腦的神經(jīng)元確實(shí)在層面之間的連接上包含有不定向循環(huán),我們還是加入了這些限制條件,以犧牲計(jì)算的功能性為代價(jià)來(lái)簡(jiǎn)化這一訓(xùn)練過(guò)程。因此,為了創(chuàng)建更為強(qiáng)大的計(jì)算系統(tǒng),我們?cè)试SRNN打破這些人為設(shè)定強(qiáng)加性質(zhì)的規(guī)定:RNN無(wú)需在層面之間構(gòu)建,同時(shí)定向循環(huán)也會(huì)出現(xiàn)。事實(shí)上,神經(jīng)元在實(shí)際中是允許彼此相連的。
RNN例圖,包含直接循環(huán)和內(nèi)部連通
???????? RNN包含輸入單元(input units)群,我們將其標(biāo)記為u1,u2直到uK,而輸出單元(output units)群則被標(biāo)記為y1,y2直到y(tǒng)L。RNN還包含隱藏單元(hidden units),我們將其標(biāo)記為x1,x2直到xN,這些隱藏單元完成了最為有意思的工作。
???????? 你會(huì)發(fā)現(xiàn),在例圖中:有一條單向流動(dòng)的信息流是從輸入單元到達(dá)隱藏單元的,與此同時(shí)另一條單向流動(dòng)的信息流從隱藏單元到達(dá)輸出單元。在某些情況下,RNN會(huì)打破后者的限制,引導(dǎo)信息從輸出單元返回隱藏單元,這些被稱為“backprojections-反向影響”,不讓RNN分析更加復(fù)雜。我們?cè)谶@里討論的技術(shù)同樣適用于包含backprojections的RNN。
??????? 訓(xùn)練RNN存在很多相當(dāng)具有挑戰(zhàn)性的難題,而這仍是一個(gè)非?;钴S的研究領(lǐng)域。了解概念之后,本文將帶您深入探析RNN的原理、訓(xùn)練和優(yōu)化等各方面的內(nèi)容,以及RNN已經(jīng)獲取的一些成就。
?
模擬RNN-變長(zhǎng)時(shí)間分析
???????? 現(xiàn)在我們了解到RNN的結(jié)構(gòu)了,可以討論一下RNN模擬一系列事件的方式。舉個(gè)簡(jiǎn)單的例子,下文中的這個(gè)RNN的運(yùn)作方式類似一個(gè)計(jì)時(shí)器模塊,這是由Herbert Jaeger設(shè)計(jì)的一個(gè)經(jīng)典案例(他的原稿請(qǐng)點(diǎn)擊這里查看)。
簡(jiǎn)單案例:一個(gè)完美的RNN如何模擬計(jì)時(shí)器
?????? 在這個(gè)例子中,我們有兩個(gè)輸入單元,輸入單元u1相當(dāng)于一個(gè)二進(jìn)制開(kāi)關(guān),峰值時(shí)數(shù)值為1(在RNN開(kāi)始計(jì)時(shí)的時(shí)候);輸入單元u2是一個(gè)離散變量,其取值范圍在0.1到1.0之間變化,指的是計(jì)時(shí)器如果在那一瞬間開(kāi)啟,則輸出值相應(yīng)開(kāi)啟的長(zhǎng)度。在RNN的規(guī)范中,要求它將輸出結(jié)果持續(xù)在1000 u2的區(qū)間里開(kāi)啟。最終,訓(xùn)練案例中的輸出結(jié)果會(huì)在0(關(guān)閉)與0.5(開(kāi)啟)之間來(lái)回?fù)軇?dòng)。
?????? 但是,一個(gè)神經(jīng)網(wǎng)絡(luò)究竟是如何完成這個(gè)計(jì)算的呢?首先,RNN的所有隱藏層行為會(huì)被初始化成為一些預(yù)設(shè)的狀態(tài),然后在每個(gè)時(shí)間步長(zhǎng)中(時(shí)間 t =1,2,……),所有的隱藏單元通過(guò)外部連接發(fā)送其當(dāng)前的行為,再通過(guò)其他神經(jīng)元(如果有自我連接則包括自身)的輸入和當(dāng)前值的輸入,進(jìn)行加權(quán)求和(logit)之后重新計(jì)算出新的行為,然后將其寫入神經(jīng)元的特定功能中(簡(jiǎn)單的復(fù)制操作,可調(diào)函數(shù),soft-max等等)。
???? ?? 因?yàn)橹暗男袨槭噶勘挥迷谟?jì)算每個(gè)時(shí)間步長(zhǎng)的行為矢量中,RNN可以保留之前的事件記憶并使用該記憶來(lái)做決定。
??????? 顯然一個(gè)神經(jīng)網(wǎng)絡(luò)不大可能完全根據(jù)規(guī)范而構(gòu)建,但是可以想象一下,在RNN的訓(xùn)練進(jìn)行過(guò)數(shù)百次或數(shù)千次之后,其輸出結(jié)果(橙色)會(huì)非常接近客觀數(shù)據(jù)(藍(lán)色)。下文中我們會(huì)對(duì)RNN訓(xùn)練的方式進(jìn)行更多討論。
經(jīng)過(guò)良好的訓(xùn)練后,RNN在實(shí)驗(yàn)案例中接近輸出測(cè)試用例
?????? 此時(shí)此刻,你可能覺(jué)得這相當(dāng)酷,但是有相當(dāng)多的案例都很不自然。實(shí)踐中運(yùn)用RNN的策略是什么呢?我們調(diào)查了真實(shí)的系統(tǒng)以及隨著時(shí)間流逝它們對(duì)于刺激物的回應(yīng)行為。舉例來(lái)說(shuō),你可以教會(huì)一個(gè)RNN通過(guò)建立一個(gè)數(shù)據(jù)組將聲頻轉(zhuǎn)化為文字(在某種意義上,在訓(xùn)練組中觀察人類的聽(tīng)覺(jué)系統(tǒng)對(duì)于輸入內(nèi)容的回應(yīng))。你還可以使用一個(gè)訓(xùn)練過(guò)的神經(jīng)網(wǎng)絡(luò)來(lái)模擬一個(gè)系統(tǒng)在異常刺激下的反映。
RNN在實(shí)踐中如何運(yùn)用
?????? 但是如果你富有創(chuàng)意的話,可以通過(guò)更為驚人方式來(lái)使用RNN,比如一種專門的RNN——LSTM(Long Short-Term Memory),就已經(jīng)被用來(lái)實(shí)現(xiàn)規(guī)模巨大的數(shù)據(jù)壓縮比率了,盡管目前基于RNN的壓縮方法還需要花費(fèi)大量的時(shí)間。(后文將有詳細(xì)解釋。)
?
RNN-BP算法訓(xùn)練(通過(guò)時(shí)間進(jìn)行(BackPropagation))
??????? 我們一開(kāi)始又是如何對(duì)RNN進(jìn)行訓(xùn)練,讓它來(lái)完成所有這些驚人的功能呢?尤其我們是如何確定每個(gè)連接的強(qiáng)度(或稱權(quán)值)呢?我們又是如何從所有隱藏單元中選擇初始行為的呢?我們的第一反應(yīng)可能是直接使用BP算法,畢竟這種算法在FNN中使用過(guò)而且效果良好。
??????? 這里使用BP算法的問(wèn)題在于我們有著周期性的依賴關(guān)系。在FNN中,我們?cè)卺槍?duì)一個(gè)層面中的權(quán)值來(lái)計(jì)算誤差衍生時(shí),可以根據(jù)上一層面中的誤差衍生對(duì)其進(jìn)行完全表達(dá)。RNN中并沒(méi)有這種漂亮的分層,因?yàn)樯窠?jīng)元并未組成有向非循環(huán)圖。在RNN中使用BP算法可能會(huì)迫使我們根據(jù)它自身來(lái)進(jìn)行誤差衍生的表達(dá),這樣會(huì)使分析復(fù)雜化。
?????? 因此,使用BP算法需要執(zhí)行一個(gè)機(jī)智的轉(zhuǎn)化:將RNN轉(zhuǎn)化為一個(gè)新的架構(gòu),這個(gè)新架構(gòu)在本質(zhì)上來(lái)說(shuō)就是一個(gè)FNN,我們將這個(gè)策略稱為通過(guò)時(shí)間“展開(kāi)”RNN。下面圖表中有一個(gè)樣例(為了簡(jiǎn)化起見(jiàn),每個(gè)時(shí)間步長(zhǎng)中只有一個(gè)輸入/輸出):
通過(guò)時(shí)間將RNN “展開(kāi)” 以使用BP算法
??????? 具體步驟非常簡(jiǎn)單,但對(duì)我們分析神經(jīng)網(wǎng)絡(luò)的能力有著深遠(yuǎn)的影響。我們將 RNN輸入、輸出、隱藏單元和復(fù)制 分別看作時(shí)間步長(zhǎng)。在我們的新FNN中,這些分別對(duì)應(yīng)著不同的層面,然后我們將隱藏單元按照下面的方式連接起來(lái),在原始的RNN中,w表示從神經(jīng)元i到神經(jīng)元j的連接強(qiáng)度(即權(quán)值),而在新的FNN中,我們畫出一個(gè)連接w的圖,分別連接每個(gè)tk層中的神經(jīng)元i和每個(gè)tk+1層中的神經(jīng)元j。
?????? 這樣一來(lái),為了訓(xùn)練RNN,我們?nèi)‰S機(jī)的初始化權(quán)值,將其“展開(kāi)”到FNN中,然后通過(guò)BP算法以確定最佳權(quán)值。為了確定時(shí)間0時(shí)隱藏狀態(tài)的賦初值,我們可以將初始行為視作注入FNN底層的參數(shù),然后通過(guò)BP算法以確定其最佳值。
?????? 但是這里我們遇到了一個(gè)問(wèn)題:在使用過(guò)每一批訓(xùn)練案例之后,我們需要基于計(jì)算出的誤差衍生來(lái)修正權(quán)值。在FNN中,我們有一套連接關(guān)系,全部與原始的RNN中同樣的連接關(guān)系相對(duì)應(yīng)。但是,根據(jù)權(quán)值計(jì)算出的誤差衍生卻無(wú)法保證是相同的,也就是說(shuō)我們可能會(huì)用不同的數(shù)量來(lái)修正誤差。我們當(dāng)然不想變成這樣!
???? ? 對(duì)于這一問(wèn)題,我們的解決辦法是:將同一組中所有連接的誤差衍生求平均值(或者求和)。也就是說(shuō)每一批訓(xùn)練之后,我們會(huì)用相同的數(shù)量來(lái)修正相應(yīng)連接,因此如果它們的賦初值相同,則最終值也會(huì)相同,這很好地解決了我們的問(wèn)題。
?
深層BP算法的問(wèn)題
?????? 不同于傳統(tǒng)的FNN,由展開(kāi)RNN而產(chǎn)生的FNN可能會(huì)有非常多層。這就產(chǎn)生了一個(gè)嚴(yán)重的現(xiàn)實(shí)問(wèn)題:通過(guò)時(shí)間手段使用BP算法來(lái)進(jìn)行訓(xùn)練可能會(huì)變得非常困難。讓我們退回一步,研究一下原因。
? ? ?? 我們?cè)囍?xùn)練RNN做一個(gè)非常簡(jiǎn)單的工作:先給RNN的一個(gè)隱藏單元賦予一個(gè)偏差值,然后把它與自身還有一個(gè)單一的輸出接口相連接。我們希望這個(gè)神經(jīng)網(wǎng)絡(luò)在50步以后輸出一個(gè)固定目標(biāo)值,這個(gè)值我們?cè)O(shè)定為0.7。這樣我們?cè)趯⒁诘?0步的時(shí)候,使用輸出的均方誤差(squared error)作為誤差函數(shù),就能通過(guò)權(quán)值和偏差值畫出一個(gè)曲面:
一個(gè)簡(jiǎn)單的RNN的問(wèn)題誤差曲面(圖片出自:Pascanu et al.)
??? ?? 現(xiàn)在,假定我們從紅色五角星處開(kāi)始(使用一個(gè)隨機(jī)的權(quán)值賦初值),你會(huì)注意到:在使用梯度下降(gradient descent)的時(shí)候,圖線會(huì)越來(lái)越趨近于曲面的局部最小值。但是突然間,在稍微越過(guò)低谷并觸及峭壁的時(shí)候,在相反方向出現(xiàn)一個(gè)巨大的梯度,這就使得我們向反方向反彈并遠(yuǎn)離局部最小值。
??? ?? 一旦我們進(jìn)入了虛空中,就會(huì)很快發(fā)現(xiàn):梯度幾近消失,想要再次接近則需要近乎無(wú)窮的時(shí)間。這個(gè)問(wèn)題被稱做“梯度的爆發(fā)與消失”(exploding and vanishing gradients),可以想象一下:我們可以通過(guò)改變梯度值,讓它永遠(yuǎn)不要超過(guò)最大值來(lái)控制這個(gè)問(wèn)題(請(qǐng)看撞到峭壁后點(diǎn)線的路徑),但是這個(gè)方法仍然不是非常有效,尤其是在更復(fù)雜的RNN中。(想要查看這個(gè)問(wèn)題的數(shù)學(xué)處理方法,請(qǐng)查看這篇論文。)
?
長(zhǎng)短時(shí)記憶
?????? 為了解決這些問(wèn)題,研究人員提出了RNN的修正架構(gòu),以協(xié)助在強(qiáng)制的輸入、適當(dāng)?shù)幕貞?yīng)與防止梯度爆發(fā)之間建立一個(gè)長(zhǎng)期的時(shí)滯。這個(gè)架構(gòu)強(qiáng)制其在特殊記憶單元中的內(nèi)部狀態(tài)保持一個(gè)常數(shù)誤差流(constant error flow),這樣一來(lái)圖線既不會(huì)爆發(fā)也不會(huì)消失。這個(gè)長(zhǎng)短時(shí)記憶(LSTM)架構(gòu)利用了下面結(jié)構(gòu)中顯示的單元:
基本的LSTM單元架構(gòu)
???? ?? LSTM單元包含一個(gè)嘗試將信息儲(chǔ)存較久的存儲(chǔ)單元。這個(gè)記憶單元的入口被一些特殊的門神經(jīng)元(gate neurons)所保護(hù),被保護(hù)的功能包括保存、寫入和讀取操作。這些門神經(jīng)元都是logistic units,它們不會(huì)將自己的行為作為輸入值發(fā)送給其他神經(jīng)元,而是負(fù)責(zé)在神經(jīng)網(wǎng)絡(luò)的其它部分與記憶單元連接的邊緣處設(shè)定權(quán)值。這個(gè)記憶單元是一個(gè)線型的神經(jīng)元,有自體內(nèi)部連接。當(dāng)保存門被打開(kāi)時(shí)(如1中的行為),自體連接權(quán)值為1,記憶單元將內(nèi)容寫入自身。當(dāng)保存門輸出為0時(shí),記憶單元會(huì)清除之前的內(nèi)容。寫入門允許在輸出值為1的時(shí)候,神經(jīng)網(wǎng)絡(luò)的其它部分將內(nèi)容寫入記憶單元,而讀取門則允許在輸出值為1的時(shí)候,神經(jīng)網(wǎng)絡(luò)的其它部分讀取記憶單元。
?? ? ? 因此,這個(gè)操作究竟是如何保持一個(gè)時(shí)間的常數(shù)誤差流,從而在局部防止爆發(fā)與消失梯度的產(chǎn)生呢?為了更加形象化,我們將LSTM單元按照時(shí)間展開(kāi):
通過(guò)時(shí)間區(qū)域展開(kāi)LSTM單元
???? ? 首先,保存門被設(shè)定為0,寫入門被設(shè)定為1,并在記憶單元中存入4.2這個(gè)值。在隨后保存值為1的時(shí)候,4.2這個(gè)值一直被保存在記憶單元中,拒絕值為0時(shí)的讀取或?qū)懭?#xff0c;最終這個(gè)單元在被讀取后清除?,F(xiàn)在,讓我們?cè)囍鴱?.2這個(gè)值被載入記憶單元的那一刻起進(jìn)行BP算法,直到從記憶單元中讀出4.2的那一刻并隨之將其清除為止。我們發(fā)現(xiàn),根據(jù)記憶神經(jīng)的線型本質(zhì),我們從讀取點(diǎn)到寫入點(diǎn)接收到的BP誤差派生的變化完全可以忽略,因?yàn)橥ㄟ^(guò)所有時(shí)間層連接記憶單元的連接權(quán)值加權(quán)后約等于1。因此,我們可以在幾百步中對(duì)這個(gè)誤差派生值進(jìn)行局部保存,而無(wú)需擔(dān)心梯度的爆發(fā)或消失。
??? ? LSTM RNN非常有效,而且同樣適用于很多其他領(lǐng)域。我們?cè)缧r(shí)候討論過(guò),LSTM RNN的深層架構(gòu)被用于實(shí)現(xiàn)了相當(dāng)驚人的數(shù)據(jù)壓縮率。(如果對(duì)LSTM RNN的特定應(yīng)用有興趣,可以查看這篇論文做更深入的了解。)
結(jié)論
????? 有效進(jìn)行神經(jīng)網(wǎng)絡(luò)訓(xùn)練的相關(guān)方法仍舊是一個(gè)活躍的研究領(lǐng)域,并引出了大量置換手段,目前尚無(wú)哪一種表現(xiàn)出明顯的優(yōu)勢(shì)。LSTM RNN架構(gòu)就是這樣一個(gè)提高RNN訓(xùn)練的方法。還有一個(gè)方法就是使用更好的最優(yōu)化控制器來(lái)對(duì)付梯度的爆炸與消失。Hessian-free優(yōu)化器嘗試通過(guò)小型梯度探測(cè)方向,甚至帶來(lái)了更小的曲度,這使得它比單純的梯度下降表現(xiàn)更佳。三分之一的方法涉及到權(quán)值謹(jǐn)慎的賦初值,期望借此避免頭一個(gè)梯度爆發(fā)和消失的問(wèn)題(例如:反射狀態(tài)網(wǎng)絡(luò),基于動(dòng)量的方法)。
?
總結(jié)
以上是生活随笔為你收集整理的ANN:DNN结构演进History—RNN的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 请使劲回答一个关于UNIX/Linux自
- 下一篇: ANN:DNN结构演进History—L