日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Recurrent Neural Network[Quasi RNN]

發布時間:2024/1/17 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Recurrent Neural Network[Quasi RNN] 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

0.背景

RNN模型,特別是包含著門控制的如LSTM等模型,近年來成了深度學習解決序列任務的標準結構。RNN層不但可以解決變長輸入的問題,還能通過多層堆疊來增加網絡的深度,提升表征能力和提升準確度。然而,標準的RNN(包括LSTM)受限于無法處理那些具有非常長的序列問題,例如文檔分類或者字符級別的機器翻譯;同樣的,其也無法并行化的計算特征或者說,也無法同時針對文檔不同部分狀態進行計算。

CNN模型,特別適合處理圖片數據,可是近年來也用在處理序列編碼任務了(如文獻1)。通過應用時間不變性的過濾器函數來并行的計算輸入序列。CNN不同與循環模型的優點有:

  • 增強并行化;
  • 更好的處理更長的序列,如字符級別的語言數據。

而將CNN模型結合了RNN層生成的混合結構,能更好的處理序列數據(如文獻2)。因為傳統的最大池化和平均池化可以看成是:基于假設時間不變性前提下,在時間維度上結合卷積特征的一種方法。也就是說其本身是無法完全處理大規模序列有序信息的。

作者提出的Quasi RNN是結合了RNN和CNN的特性:

  • 像CNN一樣,基于時間步維度和minibatch維度上進行并行計算,確保對序列數據有高吞吐量和良好的長度縮放性;
  • 像RNN一樣,允許輸出是依賴于序列中之前的有序元素基礎上得到的,即RNN本身的過去時間依賴性


圖0.1 LSTM,CNN,Quasi RNN結構圖
如圖0.1所示,其中就是通過結合LSTM和CNN的特性而構成的Quasi RNN。

1.Quasi RNN

Quasi RNN如CNN一樣可以分解成2個子組件:

  • 卷積組件:在序列數據上,基于序列維度并行計算(CNN是基于minibatch維度和空間維度),如圖1.1.
  • 池化組件:如CNN一樣,該部分沒有需要訓練的參數,允許基于minibatch維度和特征維度上并行計算。

本人覺得圖0.1略有些難以理解,自己畫成如下圖:


圖1.1 基于序列數據的CNN卷積:假設\(t=3, k=2, x_i \in R^{n\times 1}, z_i \in R^{m\times 1}\)
  • 假定輸入為\(X\in R^{T\times n}\),是一個長度為T的序列,其中每個向量維度為n。
  • QRNN如圖1.1部分,假定卷積組件的通道是m(即濾波器個數是m),通過卷積操作得到\(Z\in R^{T\times m}\),是一個長度為T的序列,其中每個向量維度為m。
  • 如果假定當前時間步為t,那么卷積的范圍為\(x_{t-k+1}\)\(x_t\)。
  • 1.1. 卷積

    然后就是Quasi RNN模塊的內部結構了,其遵循如下公式:

    $ Z = tanh(W_z * X) $ (1)
    $ F = \sigma(W_f * X) $ (2)
    $ O = \sigma(W_o * X) $ (3)
    其中\(W_z,W_f,W_o\)都是\(R^{k\times n\times m}\)的張量,\(*\)表示是以k為寬度的序列維度上的窗口滑動,如圖1.1。假如\(k=2\),即卷積操作在序列維度上跨度為2,則上面式子如下所示:
    $ z_t = tanh(W_z^1x_{t-1}+W_z^2x_t) $ (4)
    $ f_t = \sigma(W_f^1x_{t-1}+W_f^2x_t) $ (5)
    $ o_t = \sigma(W_o^1x_{t-1}+W_o^2x_t) $ (6)
    如式子(4)(5)(6)所示,k的選取對于字符級別的任務還是很重要的。

    1.2. 池化

    在池化部分,作者建議了3種:

    • f-pooling動態平均池化,其中只用了一個遺忘門,\(\bigodot\)表示逐元素相乘
      \(h_t=f_t\bigodot h_{t-1}+(1-f_t)\bigodot z_t\) (7)

      圖1.2.1 f-pooling時候的QRNN結構圖
    • fo-pooling:基于動態平均池化,增加一個輸出門
      \(c_t=f_t\bigodot c_{t-1}+(1-f_t)\bigodot z_t\) (8)
      \(h_t = o_t\bigodot c_t\) (9)

      圖1.2.2 fo-pooling時候的QRNN結構圖
    • ifo-pooling:具有一個獨立的輸入門和遺忘門
      \(c_t=f_t\bigodot c_{t-1}+i_t\bigodot z_t\) (10)
      \(h_t = o_t\bigodot c_t\) (11)

      圖1.2.3 ifo-pooling時候的QRNN結構圖

    上述中\(h,c\)的狀態都初始化為0,雖然對序列中每個時間步來說,這些函數的循環部分都需要計算,不過他們夠簡單,而且可以隨著特征維度進行并行化。也就是對于實際操作中,對于即使很長的序列來說,增加的時間都是可以忽略不計的。一個QRNN層就是執行一個輸入依賴的池化,后面跟著一個基于卷積特征和門控制的線性組合。正如CNN一樣,隨著QRNN層數增加,可以創建一個逼近更復雜函數的模型。

    參考文獻:

  • [CNN處理序列數據] - Xiang Zhang, Junbo Zhao, and Yann LeCun. Character-level convolutional networks for text classification.In NIPS, 2015.
  • [CNN+RNN] - Jason Lee, Kyunghyun Cho, and Thomas Hofmann. Fully character-level neural machine translation without explicit segmentation. arXiv preprint arXiv:1610.03017, 2016.
  • 轉載于:https://www.cnblogs.com/shouhuxianjian/p/7816323.html

    總結

    以上是生活随笔為你收集整理的Recurrent Neural Network[Quasi RNN]的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。