循环神经网络(RNN)简介
人工神經(jīng)網(wǎng)絡(luò)介紹參考:?https://blog.csdn.net/fengbingchun/article/details/50274471?
卷積神經(jīng)網(wǎng)絡(luò)介紹參考:?https://blog.csdn.net/fengbingchun/article/details/50529500?
這里在以上兩篇基礎(chǔ)上整理介紹循環(huán)神經(jīng)網(wǎng)絡(luò):
前饋網(wǎng)絡(luò)可以分為若干”層”,各層按信號傳輸先后順序依次排列,第i層的神經(jīng)元只接受第(i-1)層神經(jīng)元給出的信號,各神經(jīng)元之間沒有反饋。前饋型網(wǎng)絡(luò)可用一有向無環(huán)路圖表示。前饋神經(jīng)網(wǎng)絡(luò)用于處理有限的,定長的輸入空間上的問題是很有優(yōu)勢的。使用越多的隱藏層節(jié)點(diǎn)就能學(xué)習(xí)到越多的信息,能更好的處理特定的任務(wù)。而循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Networks, RNN)處理方式與前饋神經(jīng)網(wǎng)絡(luò)有著本質(zhì)上的不同,循環(huán)神經(jīng)網(wǎng)絡(luò)只處理一個(gè)單一的輸入單元和上一個(gè)時(shí)間點(diǎn)的隱藏層信息。這使得循環(huán)神經(jīng)網(wǎng)絡(luò)能夠更加自由和動態(tài)的獲取輸入的信息,而不受到定長輸入空間的限制。
傳統(tǒng)神經(jīng)網(wǎng)絡(luò)對于聲音類似的時(shí)間序列信號,由于網(wǎng)絡(luò)的單向無反饋連接方式使得網(wǎng)絡(luò)只能處理輸入信號所包含時(shí)間段的信號,對于該信號所包含時(shí)間段以外的信號在處理本段信號時(shí)常沒有任何參考,而常見時(shí)間序列信號都和它所在時(shí)間段前后時(shí)間區(qū)間的背景信號有著密切的聯(lián)系。例如,對包含”早上好”語義的語音進(jìn)行識別時(shí),訓(xùn)練時(shí)同時(shí)用包含”早上好”的這段語音分別對傳統(tǒng)神經(jīng)網(wǎng)絡(luò)和循環(huán)神經(jīng)網(wǎng)絡(luò)進(jìn)行訓(xùn)練,在處理包含”好”所在的語音信號時(shí),以往的神經(jīng)網(wǎng)絡(luò)不會參考包含”早”或者”上”的語音信號只能對網(wǎng)絡(luò)輸入語音信號”好”進(jìn)行處理分析,而對于循環(huán)神經(jīng)網(wǎng)絡(luò)而言它會根據(jù)歷史數(shù)據(jù)信息結(jié)合”好”語音所處的時(shí)間位置參考該時(shí)間位置前面的語音信號”早上”更加容易的識別出語義為”上”的語音信號。包含這種潛在能力的原因在于以往的前饋神經(jīng)網(wǎng)絡(luò)神經(jīng)元僅為順序連接,而循環(huán)神經(jīng)網(wǎng)絡(luò)存在神經(jīng)元反饋連接,這種形式的連接使得網(wǎng)絡(luò)能夠以一種激勵(lì)的形式存儲最近時(shí)間段的輸入數(shù)據(jù)信息(短時(shí)記憶),而網(wǎng)絡(luò)的這種潛在意義在實(shí)際應(yīng)用方面著廣泛的意義。
RNN之所以稱為循環(huán)神經(jīng)網(wǎng)絡(luò),即”一個(gè)序列的當(dāng)前輸出與前面的輸出也是有關(guān)的”。具體體現(xiàn)在后面層數(shù)的輸入值要加入前面層的輸出值,即隱藏層之間不再是不相連的而是有連接的。
一個(gè)多層感知機(jī)僅僅是將輸入映射到輸出向量,然而RNN原則上是將之前輸入的整個(gè)歷史映射到每個(gè)輸出。所以與MLPs的全局逼近理論對應(yīng)的是RNN擁有足夠的隱藏節(jié)點(diǎn)個(gè)數(shù)可以以任意精度逼近任意可度量的序列到序列映射。環(huán)狀連接最重要的特點(diǎn)是可以將之前的”記憶”保留在網(wǎng)絡(luò)的中間狀態(tài),而這個(gè)狀態(tài)會影響最終的網(wǎng)絡(luò)輸出。
RNN的前向傳播和單個(gè)隱藏層的MLP基本是一樣的,除了當(dāng)前點(diǎn)的激活值是通過當(dāng)前的輸入和隱藏層在上一次激活值一起計(jì)算得到。
和標(biāo)準(zhǔn)的反向傳播算法一樣,循環(huán)神經(jīng)網(wǎng)絡(luò)中的反向傳播算法(BackPropagation Through Time, BPTT)也需要不斷的使用鏈?zhǔn)椒▌t。微小的不同之處是對于循環(huán)網(wǎng)絡(luò),目標(biāo)函數(shù)依賴的隱藏層激活值不僅將激活值傳遞到輸出層,并且會影響下一個(gè)時(shí)間片段的隱藏層。
循環(huán)神經(jīng)網(wǎng)絡(luò)的定義:
循環(huán)神經(jīng)網(wǎng)絡(luò)的單個(gè)神經(jīng)元模型如下圖所示,與以往的神經(jīng)元相比它包含了一個(gè)反饋輸入,如果將其按照時(shí)間變化展開可以看到循環(huán)神經(jīng)網(wǎng)絡(luò)單個(gè)神經(jīng)元類似一系列權(quán)值共享前饋神經(jīng)元的依次連接,連接后同傳統(tǒng)神經(jīng)元相同隨著時(shí)間的變化輸入和輸出會發(fā)生變化,但不同的是循環(huán)神經(jīng)網(wǎng)絡(luò)上一時(shí)刻神經(jīng)元的”歷史信息”會通過權(quán)值與下一時(shí)刻的神經(jīng)元相連接,這樣循環(huán)神經(jīng)網(wǎng)絡(luò)在t時(shí)刻的輸入完成與輸出的映射且參考了t之前所有輸入數(shù)據(jù)對網(wǎng)絡(luò)的影響,形成了反饋網(wǎng)絡(luò)結(jié)構(gòu)。雖然反饋結(jié)構(gòu)的循環(huán)神經(jīng)網(wǎng)絡(luò)能夠參考背景信號但常見的信號所需要參考的背景信息與目標(biāo)信息時(shí)間相隔可能非常的寬泛,理論上循環(huán)神經(jīng)網(wǎng)絡(luò)可以參考距離背景信息任意范圍的參考信息,但實(shí)際應(yīng)用過程中對于較長時(shí)間間隔的參考信息通常無法參考。
對于上述問題主要在于網(wǎng)絡(luò)訓(xùn)練時(shí)需要計(jì)算的網(wǎng)絡(luò)代價(jià)函數(shù)梯度,而梯度計(jì)算與神經(jīng)元之間連接的權(quán)值密切相關(guān),在訓(xùn)練學(xué)習(xí)過程中很容易造成梯度爆炸或者梯度消失問題。常見的網(wǎng)絡(luò)訓(xùn)練學(xué)習(xí)算法以反向傳播算法或者實(shí)時(shí)遞歸學(xué)習(xí)算法為主,隨著時(shí)間推移數(shù)據(jù)量逐步增大以及網(wǎng)絡(luò)隱層神經(jīng)元自身循環(huán)問題,這些算法的誤差在按照時(shí)間反向傳播時(shí)會產(chǎn)生指數(shù)增長或者消失問題。由于時(shí)間延遲越來越長從而需要參考的信號也越來越多,這樣權(quán)值數(shù)量也會出現(xiàn)激增,最終,很小的誤差經(jīng)過大量的權(quán)值加和之后出現(xiàn)指數(shù)式增長,導(dǎo)致無法訓(xùn)練或者訓(xùn)練時(shí)間過長。而梯度消失問題指網(wǎng)絡(luò)剛開始輸入的具有參考價(jià)值的數(shù)據(jù),隨著時(shí)間變化新輸入網(wǎng)絡(luò)的數(shù)據(jù)會取代網(wǎng)絡(luò)先前的隱層參數(shù)導(dǎo)致最初的有效信息逐步被”忘記”,如果以顏色深淺代表數(shù)據(jù)信息的有用程度,那么隨著時(shí)間的推移數(shù)據(jù)信息的有用性將逐步被淡化。這兩種問題都會導(dǎo)致網(wǎng)絡(luò)的實(shí)際建模缺陷,無法參考時(shí)間間隔較遠(yuǎn)的序列狀態(tài),最終在與網(wǎng)絡(luò)相關(guān)的分類識別類似的應(yīng)用中仍舊無法獲得好的實(shí)踐效果。
一個(gè)最簡單的循環(huán)神經(jīng)網(wǎng)絡(luò)如下圖所示:這樣的神經(jīng)網(wǎng)絡(luò)一共有3層,分別是輸入層x,隱藏層h和輸出層y。定義每一層的節(jié)點(diǎn)下標(biāo)如下:k表示的是輸出層的節(jié)點(diǎn)下標(biāo),j表示的是當(dāng)前時(shí)間節(jié)點(diǎn)隱藏層的節(jié)點(diǎn)下標(biāo),l表示的是上一時(shí)間節(jié)點(diǎn)隱藏層的節(jié)點(diǎn)下標(biāo),i表示的是輸入層的節(jié)點(diǎn)下標(biāo)。
對于一個(gè)普通的單輸入前饋神經(jīng)網(wǎng)絡(luò)來說,隱藏層某一時(shí)刻某一節(jié)點(diǎn)的激活netj(t)可以用公式表示:
其中,n表示的是輸入層節(jié)點(diǎn)的個(gè)數(shù),θj表示的是一個(gè)偏置參數(shù),(t)表示的是t時(shí)間節(jié)點(diǎn)。但是在循環(huán)神經(jīng)網(wǎng)絡(luò)中,隱藏層在某一時(shí)刻某個(gè)節(jié)點(diǎn)的激活不再單單受到輸入層的影響,也受到上一時(shí)刻的隱藏層狀態(tài)的影響。隱藏層的節(jié)點(diǎn)狀態(tài)被”循環(huán)”地利用與神經(jīng)網(wǎng)絡(luò)之中,這就組成了一個(gè)循環(huán)神經(jīng)網(wǎng)絡(luò)。如上圖所示,這樣隱藏層節(jié)點(diǎn)的激活netj(t)的計(jì)算方式被更新為:
其中,m表示的是隱藏層節(jié)點(diǎn)的總個(gè)數(shù)。f表示的是隱藏層節(jié)點(diǎn)的激活函數(shù)。對于一個(gè)神經(jīng)網(wǎng)絡(luò)來說,激活函數(shù)有多種選擇,例如,sigmoid函數(shù),tanh函數(shù)或者二值函數(shù)都是可選的激活函數(shù)。
對于輸出層的激活計(jì)算循環(huán)神經(jīng)網(wǎng)絡(luò)與常見的前饋神經(jīng)網(wǎng)絡(luò)并沒有太大的區(qū)別,都可以使用如下公式來計(jì)算:
其中g(shù)表示的是輸出層節(jié)點(diǎn)的激活函數(shù)(可以與隱藏層節(jié)點(diǎn)的f是同一個(gè)激活函數(shù))。
循環(huán)神經(jīng)網(wǎng)絡(luò)的訓(xùn)練:
當(dāng)一個(gè)神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)的每一個(gè)激活函數(shù)都是可導(dǎo)的并且整個(gè)網(wǎng)絡(luò)的預(yù)先設(shè)計(jì)輸出是可以獲得時(shí),該神經(jīng)網(wǎng)絡(luò)的訓(xùn)練可以通過反向傳播算法(Back Propagation, BP)來學(xué)習(xí)。反向傳播算法的基礎(chǔ)是梯度下降優(yōu)化法。對于任何一個(gè)需要優(yōu)化的權(quán)重參數(shù),計(jì)算它們關(guān)于優(yōu)化目標(biāo)函數(shù)的梯度并且根據(jù)梯度更新權(quán)重參數(shù)是反向傳播算法的基本思想。
常用的優(yōu)化目標(biāo)函數(shù)有和方差函數(shù)(Summed Squard Error, SSE),交叉熵函數(shù)(Cross Entropy)等。這里以和方差函數(shù)為例,采用隨機(jī)梯度下降法,分析循環(huán)神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)過程。和方差的目標(biāo)函數(shù)一般形式如下所示:
?隨機(jī)梯度下降法是不處理所有的樣本,每次只處理一個(gè)樣本,針對一個(gè)樣本就對這個(gè)神經(jīng)網(wǎng)絡(luò)進(jìn)行一次更新,再讀入下一個(gè)樣本,依次循環(huán)來更新整個(gè)神經(jīng)網(wǎng)絡(luò)。
根據(jù)梯度下降算法的思想,所有的權(quán)重參數(shù)都需要被相應(yīng)的負(fù)梯度乘以一個(gè)學(xué)習(xí)率(Learning Rate)的值更新,對于輸出層與隱藏層之間的參數(shù)w,其更新值可以由以下公式表示:
其中α表示的是學(xué)習(xí)率。但是直接對于這個(gè)函數(shù)求導(dǎo)并不容易,在此我們先定義殘差δ,來方便計(jì)算導(dǎo)數(shù)。對于輸出層來說,殘差的計(jì)算公式如下:
根據(jù)上述公式關(guān)于殘差的計(jì)算,我們可以得到權(quán)重參數(shù)w中某一個(gè)節(jié)點(diǎn)的更新公式:
這樣計(jì)算起來就會方便的多,同理對于隱藏層的節(jié)點(diǎn),我們也可以計(jì)算它們的殘差:
根據(jù)這個(gè)殘差節(jié)點(diǎn)的公式,我們可以得到權(quán)重v的更新公式:
同理,對于循環(huán)部分的權(quán)重u,我們可以得到如下的更新公式:
一般而言,為了簡化計(jì)算,會選擇導(dǎo)數(shù)相對好求的函數(shù)作為激活函數(shù)以提升訓(xùn)練的效率。例如邏輯斯蒂函數(shù)(Logistic Function):
對于這樣的一個(gè)激活函數(shù),其求導(dǎo)就變得十分的方便,該函數(shù)的導(dǎo)數(shù)為g’(net)=g(net)(1-g(net))。
一般而言,訓(xùn)練之初循環(huán)神經(jīng)網(wǎng)絡(luò)是隨機(jī)初始化的,而初始的輸入隱藏層一般采用隨機(jī)小實(shí)數(shù)向量或者是全相等小實(shí)數(shù)向量。
長短時(shí)間記憶單元:
為了解決循環(huán)神經(jīng)網(wǎng)絡(luò)在訓(xùn)練過程中的梯度問題,循環(huán)神經(jīng)網(wǎng)絡(luò)神經(jīng)元在以往的循環(huán)神經(jīng)元結(jié)構(gòu)基礎(chǔ)上進(jìn)行改進(jìn),1997年由Hochreiter和Schmidhuber提出了一種稱作長短時(shí)間記憶單元(Long Short-Term Memory,LSTM)的特殊結(jié)構(gòu)循環(huán)神經(jīng)網(wǎng)絡(luò),最終Graves對該結(jié)構(gòu)進(jìn)行了進(jìn)一步改良和推廣,獲得了巨大成功。該網(wǎng)絡(luò)結(jié)構(gòu)基于梯度學(xué)習(xí)算法能夠避免上述提及的梯度問題且對于存在噪聲或不可壓縮的輸入序列數(shù)據(jù)依然可以參考時(shí)間間隔在1000 時(shí)間步長以上的數(shù)據(jù)信息。經(jīng)過大量的實(shí)驗(yàn)結(jié)論證明LSTM網(wǎng)絡(luò)已經(jīng)解決了傳統(tǒng)循環(huán)神經(jīng)網(wǎng)絡(luò)無法解決的問題,在蛋白質(zhì)結(jié)構(gòu)預(yù)測,語音識別及手寫字符識別等常見研究方面取得了新的突破。
LSTM網(wǎng)絡(luò)由一個(gè)一個(gè)的單元模塊組成,每個(gè)單元模塊一般包含一個(gè)或者多個(gè)反饋連接的神經(jīng)元及三個(gè)乘法單元,正是由于這些乘法單元的存在我們可以用這些乘法單元實(shí)現(xiàn)數(shù)據(jù)是否輸入、輸出及遺忘摒棄。常用取值為’0’或’1’的輸入門,輸出門和遺忘門與對應(yīng)數(shù)據(jù)相乘實(shí)現(xiàn)如下圖所示,輸入門控制是否允許輸入信息輸入到當(dāng)前網(wǎng)絡(luò)隱層節(jié)點(diǎn)中,如果門取值為’1’則輸入門打開允許輸入數(shù)據(jù),相反若門取值為’0’,則輸入門關(guān)閉不允許數(shù)據(jù)輸入;輸出門控制經(jīng)過當(dāng)前節(jié)點(diǎn)的數(shù)據(jù)是否傳遞給下一個(gè)節(jié)點(diǎn),如果門取值為’1’,則當(dāng)前節(jié)點(diǎn)的數(shù)據(jù)會傳遞給下一個(gè)節(jié)點(diǎn),相反若門取值為’0’,則不傳遞該節(jié)點(diǎn)信息;遺忘門控制神經(jīng)元是否摒棄當(dāng)前節(jié)點(diǎn)所保存的歷史時(shí)刻信息,該門通過一種稱為”peephole”的連接方式和內(nèi)部神經(jīng)元相連這種連接方式可以提高LSTM在時(shí)間精度及計(jì)算內(nèi)部狀態(tài)相關(guān)研究的學(xué)習(xí)能力,若門取值為’1’則保留以往的歷史信息,相反若門取值為’0’,則清除當(dāng)前節(jié)點(diǎn)所保存的歷史信息。除了多增加的三個(gè)信息輸入控制門以外,模塊內(nèi)部的神經(jīng)元連接方式也有所不同,線性性質(zhì)的內(nèi)部神經(jīng)元以一個(gè)權(quán)值固定為1的循環(huán)自連接方式連接稱為”Constant Error Carousel”(CEC),CEC連接保證了誤差或梯度隨著時(shí)間的傳播不會發(fā)生消失現(xiàn)象。當(dāng)沒有新的輸入或者誤差信號進(jìn)入神經(jīng)元時(shí),CEC的局部誤差既不增長也不下降保持不變狀態(tài),最終能夠在前向傳播和反向傳播時(shí)都能通過輸入輸出門保證不必要的信息進(jìn)入到網(wǎng)絡(luò)。對較遠(yuǎn)時(shí)間步長的信號參考而言,更遠(yuǎn)時(shí)間步長的有效數(shù)據(jù)信息可以通過各個(gè)門的組合開或關(guān)保存下來,而無效的數(shù)據(jù)信息可以被摒棄其對應(yīng)的參數(shù)無需保存,最終前面提及的梯度消失問題得到遏制。例如,當(dāng)有參考價(jià)值的有效信息出現(xiàn)時(shí),我們打開輸入門使有效數(shù)據(jù)可以輸入,當(dāng)有效數(shù)據(jù)輸入網(wǎng)絡(luò)后輸入門再保持關(guān)閉狀態(tài),隨著時(shí)間的推移如果輸入門一直保持關(guān)閉狀態(tài),那么,網(wǎng)絡(luò)新輸入的數(shù)據(jù)將無法替換單元以前的激勵(lì)輸出,在任意時(shí)刻只要網(wǎng)絡(luò)輸出門打開該有效數(shù)據(jù)信息都可以隨時(shí)參考,從而網(wǎng)絡(luò)實(shí)現(xiàn)了時(shí)間距離步長更遠(yuǎn)的有效數(shù)據(jù)信息參考。
從以上的分析來看單個(gè)LSTM網(wǎng)絡(luò)與最初的循環(huán)神經(jīng)網(wǎng)絡(luò)除了隱層的非線性單元被替換成為了記憶模塊以外別的方面都非常相似,但LSTM網(wǎng)絡(luò)內(nèi)部隱層連接方面卻有了非常大的變化。LSTM網(wǎng)絡(luò)隱層由一系列具有循環(huán)連接的記憶單元模塊所構(gòu)成,這些記憶單元模塊類似于計(jì)算機(jī)的內(nèi)存芯片可以存儲對應(yīng)的狀態(tài)信息,如下圖所示,網(wǎng)絡(luò)輸入層和輸出層節(jié)點(diǎn)個(gè)數(shù)都為3,圖中各個(gè)記憶單元所包含的神經(jīng)元個(gè)數(shù)取2,神經(jīng)元輸出與所有的控制門、所有的神經(jīng)元輸入及網(wǎng)絡(luò)所有輸出節(jié)點(diǎn)都保持全連接狀態(tài),網(wǎng)絡(luò)輸入層各個(gè)節(jié)點(diǎn)與各個(gè)神經(jīng)元的輸入及狀態(tài)控制門都為全連接形式,此外網(wǎng)絡(luò)輸出層節(jié)點(diǎn)和輸入層節(jié)點(diǎn)也有附加的快捷連接。網(wǎng)絡(luò)各個(gè)單元通過如上所述的連接方式基本就可以構(gòu)建成對應(yīng)的LSTM網(wǎng)絡(luò),但是,各個(gè)網(wǎng)絡(luò)之間因?yàn)閼?yīng)用范圍不同還是有部分連接差異。
雙向LSTM網(wǎng)絡(luò):
雖然以上提及的網(wǎng)絡(luò)能夠?qū)?shù)據(jù)點(diǎn)所在時(shí)刻的”歷史”信息進(jìn)行參考,但同時(shí)參考數(shù)據(jù)點(diǎn)所在時(shí)刻的”未來”信息更有利于我們分析數(shù)據(jù)。為了能對輸入數(shù)據(jù)的背景信息更加有效的利用,一種沿著時(shí)間刻度前進(jìn)和倒退的雙向分離式網(wǎng)絡(luò)結(jié)構(gòu)被提出。假設(shè)每一層的網(wǎng)絡(luò)都是一位專家,那么要合并兩個(gè)專家的意見意味著他們的意見是相互關(guān)聯(lián)的。實(shí)踐證明Graves團(tuán)隊(duì)所改進(jìn)的雙方向結(jié)構(gòu)LSTM網(wǎng)絡(luò)輸出確實(shí)與背景信息存在密切聯(lián)系,且通過簡單的線性或者對數(shù)合并算法就可以獲得網(wǎng)絡(luò)識別率的提高。
如下圖所示,雙向循環(huán)神經(jīng)網(wǎng)絡(luò)前向傳播層和后向傳播層相互分離,如果沒有后向傳播層那么該網(wǎng)絡(luò)結(jié)構(gòu)和我們最早提到的前饋網(wǎng)絡(luò)結(jié)構(gòu)完全相同。網(wǎng)絡(luò)輸入節(jié)點(diǎn)同時(shí)和前向后向傳播單元連接,對于前向傳播層而言,上一時(shí)刻的輸出狀態(tài)作為下一時(shí)刻的輸入狀態(tài);對于后向傳播層而言,上一時(shí)刻的輸入為下一時(shí)刻的輸出狀態(tài),最終,前向傳播輸出和輸入同時(shí)輸出到網(wǎng)絡(luò)輸出節(jié)點(diǎn)。對于這樣的網(wǎng)絡(luò)組成形式,我們在同一網(wǎng)絡(luò)結(jié)構(gòu)中,可以直接用兩個(gè)相反時(shí)間方向的輸入信息來減少代價(jià)函數(shù)的誤差而不需要額外的算法處理”未來”數(shù)據(jù)信息,較前面提及的傳統(tǒng)循環(huán)神經(jīng)網(wǎng)絡(luò)方法更為簡便。雖然雙向循環(huán)神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)發(fā)生了很大的變化,但是網(wǎng)絡(luò)隱層中的兩個(gè)傳播層之間仍然互不連接,單個(gè)隱層網(wǎng)絡(luò)完全可以看作是前饋網(wǎng)絡(luò)結(jié)構(gòu),若仍舊采用傳統(tǒng)網(wǎng)絡(luò)訓(xùn)練時(shí)的反向傳播算法,由于傳播方向不同,前向傳播層和后向傳播層的神經(jīng)元狀態(tài)及輸出與以往相比將不能同時(shí)進(jìn)行。此外,對于t = 1時(shí)的前向?qū)雍蛅 = T時(shí)的后向傳播層它們的初始狀態(tài)必須在訓(xùn)練之前給出。所以,網(wǎng)絡(luò)訓(xùn)練方面我們可以參考部分以往循環(huán)神經(jīng)網(wǎng)絡(luò)的訓(xùn)練算法,只是訓(xùn)練算法因網(wǎng)絡(luò)結(jié)構(gòu)改變有所增加。
2005年經(jīng)過Graves等人的努力,完全參考雙向循環(huán)神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)的雙向LSTM網(wǎng)絡(luò)被引入到了語音識別領(lǐng)域,在TIMIT語音庫相關(guān)的識別實(shí)驗(yàn)中超越了雙向循環(huán)神經(jīng)網(wǎng)絡(luò),多層感知機(jī)等傳統(tǒng)網(wǎng)絡(luò)的識別效果。除了識別效果有所提高外,相同結(jié)構(gòu)下以LSTM替換循環(huán)網(wǎng)絡(luò)神經(jīng)元后,即使在普通配置的電腦運(yùn)行環(huán)境下,雙向LSTM網(wǎng)絡(luò)仍然可以超越以往的網(wǎng)絡(luò)訓(xùn)練時(shí)間達(dá)到最快的收斂速度,而前后背景信息參考后的充分權(quán)值微調(diào)是取得如此快訓(xùn)練時(shí)間的根本原因。
以傳統(tǒng)語音識別中音素(聲音的最小組成單位)分類識別為例,受識別方式的影響網(wǎng)絡(luò)訓(xùn)練必須要對訓(xùn)練數(shù)據(jù)進(jìn)行初步處理:在標(biāo)簽數(shù)據(jù)中將語音中每個(gè)音素所在語音中的具體位置范圍給出(如:標(biāo)簽0 230 d,數(shù)字0和230代表音素d存在于語音的起始位置為0,結(jié)束位置為230的區(qū)間位置),必須聲音和標(biāo)簽必須嚴(yán)格對齊才能進(jìn)行訓(xùn)練,然而包含音素位置范圍的語音數(shù)據(jù)常通過人工方式處理得到。為此我們引入與概率相關(guān)的CTC(Connectionist Temporal Classification)聲音分類識別,其中Temporal Classification指的是對序列長度大于或等于其對應(yīng)標(biāo)簽的信號進(jìn)行分類。CTC解決聲音和標(biāo)簽嚴(yán)格對應(yīng)問題的方法為引入新標(biāo)簽,在識別輸出時(shí)除了樣本類別標(biāo)簽外,在標(biāo)簽集加入代表空白輸出的空白標(biāo)簽類別。
CTC預(yù)測作為循環(huán)神經(jīng)網(wǎng)絡(luò)的最終輸出部分主要包含softmax概率輸出及概率解碼兩個(gè)部分,softmax概率輸出部分用來計(jì)算每次網(wǎng)絡(luò)輸入信號所屬標(biāo)簽的歸屬概率;概率解碼用來計(jì)算所有信號輸出標(biāo)簽的組合概率并結(jié)合該概率給出最終的輸入信號的標(biāo)簽。
以上整理的內(nèi)容主要摘自:
1.?《基于神經(jīng)網(wǎng)絡(luò)的篇章一致性建?!?#xff0c;2015年,碩論,哈爾濱工業(yè)大學(xué)
2.?《基于循環(huán)神經(jīng)網(wǎng)絡(luò)的聲學(xué)車型識別研究》,2015年,碩論,西安電子科技大學(xué)
3.?《最少門結(jié)構(gòu)的循環(huán)神經(jīng)網(wǎng)絡(luò)及其應(yīng)用》,2016年,碩論,南京大學(xué)
GitHub:https://github.com/fengbingchun/NN_Test
總結(jié)
以上是生活随笔為你收集整理的循环神经网络(RNN)简介的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 图像处理库(fbc_cv):源自Open
- 下一篇: SSHDroid及sshpass简介