迴圈神經網路(RNN)

奧辰發表於2020-07-14
  • 所謂的平行語料,比如中文到英文的這樣一種對等翻譯;

無論 CNN 還是 RNN,LSTM,既然是深度學習,也即較深的網路層次,顯然訓練將是一個十分耗時的過程,所要學習的引數的數量將十分可觀,如果不對網路的拓撲結構以及訓練方法進行適當的優化的話,顯然在實際中將是十分不可行。

  • CNN:影像
    • conv+maxpooling:共享引數
  • RNN:模擬 sequence to sequence 的學習
    • 既然是一種對映關係,便可以是各種各樣的對映
      • translation(tensorflow 已經給出相關實現),需要平行語料,
      • 傳統的統計機器翻譯(SMF)需要極多的平行語料
      • sequence generation,生成,就是生成一種
        • web-document ⇒ query
    • 自然語言處理(NLP),文字,問答(看圖說話)

1. 從 BP 神經網路到 RNN

傳統的神經網路,甚至包括 CNN,都是假設輸入和輸出之間都是獨立的,比如影像上的貓和狗是彼此獨立的,但對另外的有些任務而言,後續的輸出和之前的內容是相關的:

  • 我是中國人,我的母語是____;

RNN 由此引入了“記憶(memo)”的概念,

  • R,Recurrent,迴圈來源於其每個元素都執行相同的任務(由此便可以共享引數);
  • 但是輸出依賴於輸入和“記憶”;


    20161106221139042

    • x 表示輸入;
    • o 表示輸出;
    • 圓弧表示迴圈;

3. RNN 的定量分析

  • 迴圈神經網路中的狀態(state)通過一個向量來表示,這個向量的維度也稱為迴圈神經網路隱藏層的大小,不妨假定其為 h
  • 迴圈體中的神經網路的輸入有兩部分,一部分為上一時刻的狀態(ht1),另一時刻為當前時刻的輸入樣本(xt
    • 對於時間序列資料來說,比如不同時刻商品的銷量,則每一個時刻的輸入樣本可以是當前時刻的數值(如銷量值),也即可以是標量
    • 對於語言模型而言,輸入樣本可以是當前單詞對應的單詞向量(word embedding)
  • 如果輸入向量的維度為 x,RNN 迴圈體的全連線層
    • 全連線層的輸入大小為:h+x,可以理解為將上一時刻的狀態ht1)與當前時刻的輸入xt)拼接成一個大的向量而作為迴圈體中神經網路的輸入;
    • 因為該神經網路的輸出為當前時刻的狀態,則此輸出層的節點個數為 h
    • 此迴圈體的引數個數為:(h+x)×h+h

(len(ht1)len(xt)len(ht))

轉載於:https://www.cnblogs.com/mtcnn/p/9422919.html

相關文章