RNNs學習總結

來源:互聯網
上載者:User

標籤:

遞迴神經網路(recurrent neural networks,RNNs)

        RNNs的應用主要有兩個方面:(1)根據真實世界中發生的相似度對任意的句子進行評分,從而提供一種對文法和語義的正確性進行測量方法,這種模型可以用於機器翻譯系統中。(2)預測下一個將要出現的文本,這個應用的價值相對較低。

一、RNNs介紹

        在傳統的神經網路中,常常假設輸入(與輸出)之間是互相獨立的,然而這在很多應用中是不切實際的,比如要想預測下一個將要出現的文本,那麼內容相關的作用就不容忽視。RNNs的設計思想就是想要利用這種上下文之間連續的資訊,RNNs中的recurrent的含義就是指它對序列中的每個元素都執行相同的任務,一個典型的RNNs和它的展開形式如所示。


         其中,右邊是左邊的展開形式,這裡假設x是輸入的句子,Xt是第t個時刻的輸入,假設句子採用的是one-hot vector編碼形式。

        【註:one-hot vector是NLP(自然語言編碼)在單詞的表示方法中最簡單的一種編碼形式,每個單詞表示為一個向量,只有它本身對應的位置為1,其他位置均為0,這個表示方法的缺點很明顯,向量的長度與要表示的所有單詞的種類相同,如果新的單詞來了向量還有調整,並且整個矩陣非常龐大,更重要的是,它沒有辦法建立起單詞之間的關係。當然還有其他的表示方法,如word2Vec等,當然使用好的表示方法也可以提高RNNs的效率。】

       St是隱含層第t個時刻的狀態,計算公式為

其中f是一個非線性函數,如tanh、ReLU等。

      Ot是第t個時刻的輸出,如果要用RNNs預測下一個單詞,可以使用softmax分類器,則此時的函數為


二、RNNs的運行流程

      (1)採用一種編碼形式對訓練樣本集進行編碼錶示,例如one-hot vector,得到輸入輸出的矩陣。如果此時演算法的目的是預測下一個單詞,那麼對每一個樣本word,它所對應的輸出就是在這個句子中它緊鄰的下一個單詞。(這時有個問題,就是句子的第一個單詞和最後一個單詞分別沒有輸入與輸出對應,此時可以採用的方式是專門設定兩個值來表示句子開始和句子結束,例如,可以認為句子的第一個單詞所對應的輸入為0,句子的最後一個單詞的輸出為1。)

       【註:在對收集的文本樣本集進行處理是一個非常複雜的過程,包括對樣本進行分詞、將詞語與編號進行對應、去掉稀有詞彙等,這裡不再贅述。】

     (2)初始化U、W、V,對RNNs進行前向傳播訓練,公式如下。


     (3)根據預測值和真實值得到損失函數loss。一種常用的損失函數是cross-entropyloss,假設真實輸出為y,預測為o,一共含有N個訓練樣本,則損失函數為

     (4)根據損失函數,使用SGD和Backpropagation Through Time (BPTT)對網路進行訓練,注意這裡不是簡單地使用BP演算法,因為每一步輸出的梯度不僅與當前的計算有關,還與之前的步驟有關。BPTT在RNNs中起到了非常重要的作用,介紹可以點擊這裡)

 三、RNNs的特點

     從以上分析可以看出:

     (1)RNNs在前向傳播的每個步驟中進行的是完全相同的計算步驟,只是輸入改變了而已,因此這大大減少了需要學習的參數。

     (2)RNNs在計算當前步驟的輸出時,和以前的計算也有關,因此RNNs依賴於過去抓取的特徵,因此它能學習到單詞前後之間的序列的關聯性。

     (3)RNNs只能關聯之前的步驟,而對於幾個步驟之前的單詞就無法學習到它們之間的聯絡,因此RNNs並不能綜合概況產生特別有意義的文本,這也就限制了它的發展。

     (4)BPTT具有消失梯度(vanishing gradient problem)的問題,W矩陣恰當的初始化可以減輕消失梯度的影響,還有一個較好的方法是用ReLU來代替tanh或者sigmoid函數。

      【註:消失梯度問題在2013年的文章《On the difficulty of training recurrent neural networks》中有詳細介紹,裡面也談到演算法中也有膨脹梯度(exploding gradient problem)的問題,不過可以採用預定義的門檻剪輯梯度的方法來解決膨脹梯度問題,因此不再以此為重點。文章的下載的網址點擊這裡】

        在RNNs的改進演算法中,LSTM和GRU演算法可以很好的解決消失梯度的問題,並能有效地學習到更長範圍的關聯性,這兩種演算法目前的發展較為關注。

四、RNNs的改進演算法

1、Bidirectional RNNs (雙向RNNs網路)

文章:《Bidirectional Recurrent Neural Networks》

       BRNNs的設計思想是在時間t的輸出不僅僅與序列中之前的元素的有關,還與後面的元素有關。例如在預測一個句子中缺失的值時,要綜合考慮前面和後面的文本。BRNNs的結果非常簡單,如所示,它就像是兩個RNNs疊加在一起組成的。它的輸出是由兩個RNNs的隱含層共同決定的。BRNN的結構使得它能夠同時在兩個時間方向上對網路進行訓練,BRNNs的訓練時間與其他RNNs的改進演算法不相上下,BRNNs不需要對資料分布進行明確的假設,就可以有效預測整個符合序列的條件後驗機率。

2、Deep (Bidirectional)RNNs

文章:《SPEECH RECOGNITION WITH DEEP RECURRENT NEURAL NETWORKS》

        Deep RNNs與BRNNs的結構相似,只是在每個步驟中含有多個層,在實踐中,這提供了一個更高的學習能力,但同時也需要大量的訓練資料。它的結構如所示。

3、LSTM Networks(Long Short Term Memory networks)

文章:《LONG SHORT-TERM MEMORY》  

       介紹比較詳細的一個網址:點擊開啟連結

       LSTMs在結構上與RNNs沒有特別的不同,但它使用了不同的函數來計算隱層的狀態,它比RNNs出色的地方在於它具有學習到“long-term dependencies”的能力。

      簡單地來說,傳統的RNNs的結構是這樣的:


      LSTMs的結構是這樣的:


      圖中的標記含義為:


       從中可以看出,LSTMs只是將其中的計算函數進行了改進,若對於應用程式層面來講,只需要將整個計算過程視為是一個黑盒,只關心其輸入輸出和需要設定的參數就可以,若對於研究內部機理的層面來講,可以參考上面提供的網址。

LSTMs的黑盒內的計算公式如下所示。


       LSTM中的門檻設定:


4、GRU(Gated Recurrent Unit Recurrent Neural Networks)

文章:《Learning Phrase Representations using RNN Encoder–Decoder forStatistical Machine Translation》

       GRU的設計思想與LSTM的很像,只是計算公式不同:


        GRU含有兩個門檻,一個重設門檻r和一個更新門檻z,r決定了如何將新到來的輸入與之前的相結合,z定義了之前的計算如何保持。如果將r設定為全1而z甚至為全0,那GRU就變成了最普通的RNNs。

       GRU中的門檻設定:


      對於LSTMs和GRU的區別可以參考文章:《Empirical Evaluation of GatedRecurrent Neural Networks on Sequence Modeling》

 

五、RNNs的應用領域

       RNNs被廣泛應用於NLP任務中,其中應用最為廣泛的是LSTMs演算法。RNNs在NLP中的應用主要有以下幾個方面:

(1)LanguageModeling and Generating Text

       下面是相關的三篇文章:

       《Recurrent neuralnetwork based language model》

       《Extensions ofRecurrent neural network based language model》

       《Generating Textwith Recurrent Neural Networks》

(2)MachineTranslation

       機器翻譯就是將一種語言的語句翻譯為另外一種語言的語句。與語言建模不同的是,它是在句子完全輸入之後才開始進行。

       下面是相關的文章:

       《A RecursiveRecurrent Neural Network for Statistical Machine Translation》

       《Sequence toSequence Learning with Neural Networks》

       《Joint Languageand Translation Modeling with Recurrent Neural Networks》

(3)SpeechRecognition

       語音辨識是指當輸入一個聲波的聲音訊號序列,可以預測出一系列的語音片段和它們對應的機率值。

       下面是相關的文章:

       《TowardsEnd-to-End Speech Recognition with Recurrent Neural Networks》

(4)GeneratingImage Descriptions

       RNNs已經和CNN一起被用來對無標籤的圖片添加描述,可以查看網站:點擊開啟連結




【參考文獻】          [1] http://www.wildml.com/2015/09/recurrent-neural-networks-tutorial-part-1-introduction-to-rnns/
          [2] 文中提到的相關論文

RNNs學習總結

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.