1. 場景與應用
在循環(huán)神經網絡可以用于文本生成、機器翻譯還有看圖描述等,在這些場景中很多都出現了RNN的身影。
2. RNN的作用
傳統的神經網絡DNN或者CNN網絡他們的輸入和輸出都是獨立的。對于這些模型輸入的數據跟輸出的數據大多是關聯不太緊密的場景,但是有些場景輸入的數據對后面輸入的數據是有關系的,或者說后面的數據跟前面的數據是有關聯的。例如,對于文本類的數據,當輸入某句話的時候,剛開始輸入第一個字的時候,再輸入這句話的第二個字時候,其實第二個字要輸入什么字其實是跟第一個字是有關聯的。所以,對于這樣一類的場景,通常是要考慮前面的信息的,以至于引入RNN模型。
對于RNN模型為解決這類問題引入了“記憶”這一概念。循環(huán)神經網絡的循環(huán)來源于其每個元素中都執(zhí)行相同的任務,但是輸出依賴于輸入和“記憶”兩個部分。
3. RNN結構
從圖中看,對于RNN網絡是按照時間序列展開的。對于圖中的變量Wt,是在時刻t處的輸入,St是時間t處的“記憶”,St=f(UXt+WSt?1 + b),f可以是tanh等,f取tanh會把數據壓縮到一個范圍內,有時候也可以使用sigmoid函數。Ot是時間t出的輸出,比如是預測下個詞的話,可能是softmax輸出的屬于每個候選詞的概率,Ot = softmax(VSt)。對于這里的St已經把Xt合并了,所以Ot的公式只有St。
對于循環(huán)神經網絡,可以把隱狀態(tài)St視作為“記憶體”,捕捉之前時間點上的信息。輸出Ot有當前時間及之前所有“記憶”共同計算得到的。但由于St是一個有限的矩陣,對于之前的信息并不能完全捕捉到,也會隨著時間的變長,對于之前的“記憶”也會“變淡”。對于RNN不同于DNN與CNN,這里的RNN其實整個神經網絡都在共享一組參數(U,V,W),這樣極大的減小了需要訓練的參數。圖中的Ot再由寫任務下是不存在的,只需要對最后的結果輸出就可以。
4. 不同類型的RNN
(1). 雙向RNN
通過以上經典的RNN模型,它是只關心當前的輸入和之前的“記憶”的,但有些情況下,當前的輸入不知依賴于之前的序列元素,還依賴于后面序列的元素。比如,一篇文章,當讀第一段時候我們并不知道文章的主體要講什么內容,但當我們讀完第一段的時候需要判斷文章主要講什么內容,這時候就需要讀后面的內容才能知道這個文章主要講的是什么。對于這樣的場景需要后面的數據才能更好的預測當前的狀態(tài),所以引入了雙向RNN,就是為了解決這一類問題的。雙向RNN的模型如下:
表達式:
雙向RNN是考慮到了前后的“記憶”,能夠更好的關聯到前后的信息。
(2). 深度雙向RNN
對于深度雙向RNN和雙向RNN的區(qū)別是每一步和每一個時間點我們設定了多層的結構。結構如下:
深層雙向RNN的表達式:
對于深層雙向RNN考慮的信息與雙向RNN相比變多了,這意味著能夠對于某場景,能夠關聯更多的信息。
5. RNN與BPTT算法
對于循環(huán)神經網絡的BPTT算法其實是BP算法的一個變體,但是循環(huán)神經網絡的BPTT是與時間序列有關的。
對于這個問題是個Softmax問題所以這里用交叉熵損失,所以損失函數可以表示為:
對于求所有誤差求W得偏導函數為:
但是,
所以,所以根據求導鏈式法則可以進一步求得:(又因為他們的權值是共享的)
用圖表示如下:
通過上面的式子:
通過鏈式法則,表達式可以進一步表示為:
通過以上的步驟求得損失函數的偏導后,就可以用SGD算法去做參數的更新。
-
rnn
+關注
關注
0文章
89瀏覽量
6891
原文標題:循環(huán)神經網絡(RNN)的場景與應用
文章出處:【微信號:Imgtec,微信公眾號:Imagination Tech】歡迎添加關注!文章轉載請注明出處。
發(fā)布評論請先 登錄
相關推薦
評論