深度学习(五)——DRN, Bi-directional RNN, Attention, seq2seq, DMN
https://antkillerfarm.github.io/
神經元激活函數進階
ReLU的缺點(續)
為了解決上述問題,人們提出了Leaky ReLU、PReLU、RReLU、ELU、Maxout等ReLU的變種。
參考:
https://zhuanlan.zhihu.com/p/22142013
深度學習中的激活函數導引
http://blog.csdn.net/u012328159/article/details/69898137
幾種常見的激活函數
https://mp.weixin.qq.com/s/Hic01RxwWT_YwnErsJaipQ
什么是激活函數?
其他激活函數
hard tanh
HardTanh(x)=??????1,x,1,x<?1?1≤x≤1x>1
soft sign
softsign(x)=x1+|x|
Deep Residual Network
無論采用何種方法,可訓練的神經網絡的層數都不可能無限深。有的時候,即使沒有梯度消失,也存在訓練退化(即深層網絡的效果還不如淺層網絡)的問題。
最終2015年,微軟亞洲研究院的何愷明等人,使用殘差網絡ResNet參加了當年的ILSVRC,在圖像分類、目標檢測等任務中的表現大幅超越前一年的比賽的性能水準,并最終取得冠軍。
注:何愷明,清華本科+香港中文大學博士(2011)。先后在MS和Facebook擔任研究員。
個人主頁:http://kaiminghe.com/
殘差網絡的明顯特征是有著相當深的深度,從32層到152層,其深度遠遠超過了之前提出的深度網絡結構,而后又針對小數據設計了1001層的網絡結構。
其簡化版的結構圖如下所示:
簡單的說,就是把前面的層跨幾層直接接到后面去,以使誤差梯度能夠傳的更遠一些。
DRN的基本思想倒不是什么新東西了,在2003年Bengio提出的詞向量模型中,就已經采用了這樣的思路。
參考:
https://zhuanlan.zhihu.com/p/22447440
深度殘差網絡
https://www.leiphone.com/news/201608/vhqwt5eWmUsLBcnv.html
何愷明的深度殘差網絡PPT
https://mp.weixin.qq.com/s/kcTQVesjUIPNcz2YTxVUBQ
ResNet 6大變體:何愷明,孫劍,顏水成引領計算機視覺這兩年
https://mp.weixin.qq.com/s/5M3QiUVoA8QDIZsHjX5hRw
一文弄懂ResNet有多大威力?最近又有了哪些變體?
http://www.jianshu.com/p/b724411571ab
ResNet到底深不深?
Bi-directional RNN
眾所周知,RNN在處理長距離依賴關系時會出現問題。LSTM雖然改進了一些,但也只能緩解問題,而不能解決該問題。
研究人員發現將原文倒序(將其倒序輸入編碼器)產生了顯著改善的結果,因為從解碼器到編碼器對應部分的路徑被縮短了。同樣,兩次輸入同一個序列似乎也有助于網絡更好地記憶。
基于這樣的實驗結果,1997年Mike Schuster提出了Bi-directional RNN模型。
注:Mike Schuster,杜伊斯堡大學碩士(1993)+奈良科技大學博士。語音識別專家,尤其是日語、韓語方面。Google研究員。
論文:
《Bidirectional Recurrent Neural Networks》
下圖是Bi-directional RNN的結構示意圖:
從圖中可以看出,Bi-directional RNN有兩個隱層,分別處理前向和后向的時序信息。
除了原始的Bi-directional RNN之外,后來還出現了Deep Bi-directional RNN。
上圖是包含3個隱層的Deep Bi-directional RNN。
參見:
https://mp.weixin.qq.com/s/_CENjzEK1kjsFpvX0H5gpQ
結合堆疊與深度轉換的新型神經翻譯架構:愛丁堡大學提出BiDeep RNN
Attention
倒序句子這種方法屬于“hack”手段。它屬于被實踐證明有效的方法,而不是有理論依據的解決方法。
大多數翻譯的基準都是用法語、德語等語種,它們和英語非常相似(即使漢語的詞序與英語也極其相似)。但是有些語種(像日語)句子的最后一個詞語在英語譯文中對第一個詞語有高度預言性。那么,倒序輸入將使得結果更糟糕。
還有其它辦法嗎?那就是Attention機制。
上圖是Attention機制的結構圖。y是編碼器生成的譯文詞語,x是原文的詞語。上圖使用了雙向遞歸網絡,但這并不是重點,你先忽略反向的路徑吧。重點在于現在每個解碼器輸出的詞語yt取決于所有輸入狀態的一個權重組合,而不只是最后一個狀態。a是決定每個輸入狀態對輸出狀態的權重貢獻。因此,如果a3,2的值很大,這意味著解碼器在生成譯文的第三個詞語時,會更關注于原文句子的第二個狀態。a求和的結果通常歸一化到1(因此它是輸入狀態的一個分布)。
Attention機制的一個主要優勢是它讓我們能夠解釋并可視化整個模型。舉個例子,通過對attention權重矩陣a的可視化,我們能夠理解模型翻譯的過程。
我們注意到當從法語譯為英語時,網絡模型順序地關注每個輸入狀態,但有時輸出一個詞語時會關注兩個原文的詞語,比如將“la Syrie”翻譯為“Syria”。
如果再仔細觀察attention的等式,我們會發現attention機制有一定的成本。我們需要為每個輸入輸出組合分別計算attention值。50個單詞的輸入序列和50個單詞的輸出序列需要計算2500個attention值。這還不算太糟糕,但如果你做字符級別的計算,而且字符序列長達幾百個字符,那么attention機制將會變得代價昂貴。
attention機制解決的根本問題是允許網絡返回到輸入序列,而不是把所有信息編碼成固定長度的向量。正如我在上面提到,我認為使用attention有點兒用詞不當。換句話說,attention機制只是簡單地讓網絡模型訪問它的內部存儲器,也就是編碼器的隱藏狀態。在這種解釋中,網絡選擇從記憶中檢索東西,而不是選擇“注意”什么。不同于典型的內存,這里的內存訪問機制是彈性的,也就是說模型檢索到的是所有內存位置的加權組合,而不是某個獨立離散位置的值。彈性的內存訪問機制好處在于我們可以很容易地用反向傳播算法端到端地訓練網絡模型(雖然有non-fuzzy的方法,其中的梯度使用抽樣方法計算,而不是反向傳播)。
論文:
《Learning to combine foveal glimpses with a third-order Boltzmann machine》
《Learning where to Attend with Deep Architectures for Image Tracking》
《Neural Machine Translation by Jointly Learning to Align and Translate》
參考:
http://blog.csdn.net/malefactor/article/details/50550211
自然語言處理中的Attention Model
https://yq.aliyun.com/articles/65356
圖文結合詳解深度學習Memory & Attention
http://www.cosmosshadow.com/ml/%E7%A5%9E%E7%BB%8F%E7%BD%91%E7%BB%9C/2016/03/08/Attention.html
Attention
http://geek.csdn.net/news/detail/50558
深度學習和自然語言處理中的attention和memory機制
https://zhuanlan.zhihu.com/p/25928551
用深度學習(CNN RNN Attention)解決大規模文本分類問題-綜述和實踐
http://blog.csdn.net/leo_xu06/article/details/53491400
視覺注意力的循環神經網絡模型
https://mp.weixin.qq.com/s/xr_1ZYbvADMMwgxLEAflCw
如何在語言翻譯中理解Attention Mechanism?
https://mp.weixin.qq.com/s/Nyq_36aFmQYRWdpgbgxpuA
將注意力機制引入RNN,解決5大應用領域的序列預測問題
seq2seq
seq2seq最早用于Neural Machine Translation領域(與之相對應的有Statistical Machine Translation)。訓練后的seq2seq模型,可以根據輸入語句,自動生成翻譯后的輸出語句。
上圖是seq2seq的結構圖。可以看出seq2seq實際上是一種Encoder-Decoder結構。
在Encoder階段,RNN依次讀入輸入序列。但由于這時,沒有輸出序列與之對應,因此這僅僅相當于一個對隱層的編碼過程,即將句子的語義編碼為隱層的狀態向量。
從中發現一個問題:狀態向量的維數決定了存儲的語義的內容上限(顯然不能指望,一個200維的向量,能夠表示一部百科全書。)因此,seq2seq通常只用于短文本的翻譯。
在Decoder階段,我們根據輸出序列,反向修正RNN的參數,以達到訓練神經網絡的目的。
參考:
https://github.com/ematvey/tensorflow-seq2seq-tutorials
一步步的seq2seq教程
http://blog.csdn.net/sunlylorn/article/details/50607376
seq2seq模型
http://datartisan.com/article/detail/120.html
Seq2Seq的DIY簡介
http://www.cnblogs.com/Determined22/p/6650373.html
DL4NLP——seq2seq+attention機制的應用:文檔自動摘要(Automatic Text Summarization)
http://blog.csdn.net/young_gy/article/details/73412285
基于RNN的語言模型與機器翻譯NMT
http://karpathy.github.io/2015/05/21/rnn-effectiveness/
The Unreasonable Effectiveness of Recurrent Neural Networks
https://mp.weixin.qq.com/s/8u3v9XzECkwcNn5Ay-kYQQ
基于Depthwise Separable Convolutions的Seq2Seq模型_SliceNet原理解析
https://mp.weixin.qq.com/s/H6eYxS7rXGDH_B8Znrxqsg
seq2seq中的beam search算法過程
https://mp.weixin.qq.com/s/U1yHIc5Zq0yKCezRm185VA
Attentive Sequence to Sequence Networks
https://mp.weixin.qq.com/s/cGXANj7BB2ktTdPAL4ZEWA
圖解神經網絡機器翻譯原理:LSTM、seq2seq到Zero-Shot
DMN
Question answering是自然語言處理領域的一個復雜問題。它需要對文本的理解力和推理能力。大部分NLP問題都可以轉化為一個QA問題。Dynamic Memory Networks可以用來處理QA問題。DMN的輸入包含事實輸入,問題輸入,經過內部處理形成片段記憶,最終產生問題的答案。
DMN可進行端到端的訓練,并在多種任務上取得了state-of-the-art的效果:包括QA(Facebook 的 bAbI 數據集),情感分析文本分類(Stanford Sentiment Treebank)和詞性標注(WSJ-PTB)。
參考:
http://blog.csdn.net/javafreely/article/details/71994247
動態記憶網絡
總結
以上是生活随笔為你收集整理的深度学习(五)——DRN, Bi-directional RNN, Attention, seq2seq, DMN的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 深度学习(四)——RNN, LSTM,
- 下一篇: 深度学习(六)——CNN进化史