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