迴圈神經網路入門
RNN建立於1980年代,只是最近才開始流行,並廣泛應用於圖形影像處理領域,對於序列資料特別有用,因為每個神經元或單元能使用其內部記憶體維護前一個輸入的資訊,這對於語言非常重要,比如“I had washed my house”明顯不同於“I had my house washed”,這能夠讓神經網路對語句有一個深度理解。
即使作為人類,能夠讀通一句語句是非常重要,你需要注意每個單詞的前後上下文,來龍去脈。
[img index=1]
一個RNN包含迴圈在其中,能夠在讀取輸入同時,這種迴圈讓資訊跨神經元傳遞。圖中,x_t是某個輸入,A是RNN的一部分,h_t是輸出,你能喂入一段語句的詞語甚至字串的字元作為x_t輸入,透過RNN它會從h_t輸出。
使用h_t作為輸出,然後和你的測試資料比較,這個測試資料通常是原始資料的一個小子集,你會得到錯誤比率,將輸出和測試資料比較完畢後,現在有了錯誤比率,你能使用一種技術稱為透過時間的反向傳播( Back Propagation Through Time BPTT),BPTT後播會透過網路檢查,基於你的錯誤比率調整權重,這種調整會使得神經網路學習得越來越好。
理論上,RNN能夠從語句的開始處理上下文,能在語句結束時有更精確的預測,在實踐中,這對於vanilla RNN反而不是必然為真的,也就是實踐中不一定像理論這樣做到精確預測,這也是為什麼RNN曾經在實踐中消失一段時間,直至長短時記憶(Long Short Term Memory LSTM)在神經網路中使用,增加LSTM到神經網路就像增加能夠記住輸入最初開始的上下文場景的記憶體單元。
這種小小的記憶體單元能夠讓RNN更加精確,變成目前最流行的模型,這些記憶體單元能夠跨輸入記住上下文,這些單元今天廣泛被應用的分為兩種: LSTMs 和 Gated Recurrent Units(GRU),
後者門控性單位更為有效,因為花費更少計算機記憶體。
有許多不同的RNN應用,一個偉大應用是在自然語言處理Natural Language Processing (NLP)領域,RNNs已經被很多人建立為代表語言的模型,這些語言模型能夠處理類似莎士比亞詩歌語句的輸入,訓練完成這些模型以後,這些模型會自己創作莎士比亞詩歌,而且與原來的非常不同。
RNN輸入文字資料集以後,它是一個個字母地讀取,令人驚奇的是神經網路在比較喂入這些單詞以後,神經網路能夠創造自己唯一的單詞,這些詞彙並沒有在你訓練它們的資料集中出現過。
[img index=2]
上圖是解釋模型如何預測“hello”,hell四個單詞從下面輸入,從上面輸出為"ello",這是一個很形象的案例,說明這些網路如何獲取一個字字元然後預測下一個可能的字元。
RNNs另外一個驚奇的應用是機器翻譯,這種方法有趣點在於同時執行兩個RNNs,兩個輸入是一對不同語言的語句,比如你餵給網路一句英語語句,再餵給相應的法語翻譯語句,經過足夠的訓練以後,當你再輸入一條英文語句以後,神經網路就能翻譯成法語,這個模型稱為Sequence 2 Sequences模型 或 Encoder Decoder模型。
RNN支援庫包:
Tensorflow — Googles 機器學習框架的 RNN example: https://www.tensorflow.org/versions/r0.10/tutorials/recurrent/index.html
Keras — 一種執行於 Tensorflow 或 Theano高階別機器學習庫包: https://keras.io
Torch — Facebook 使用LUA編寫的機器學習框架: http://torch.ch
原文:
Recurrent Neural Networks for Beginners — Medium
[該貼被banq於2016-08-13 10:20修改過]
相關文章
- 迴圈神經網路神經網路
- 迴圈神經網路(RNN)神經網路RNN
- 迴圈神經網路 RNN神經網路RNN
- 迴圈神經網路介紹神經網路
- pytorch--迴圈神經網路PyTorch神經網路
- 第五週:迴圈神經網路神經網路
- 迴圈神經網路(Recurrent Neural Network,RNN)神經網路RNN
- 動畫圖解迴圈神經網路動畫圖解神經網路
- (一)線性迴圈神經網路(RNN)神經網路RNN
- 常見迴圈神經網路結構神經網路
- 圖神經網路入門神經網路
- (二)非線性迴圈神經網路(RNN)神經網路RNN
- YJango的迴圈神經網路——實現LSTMGo神經網路
- 深度學習之RNN(迴圈神經網路)深度學習RNN神經網路
- 深度學習迴圈神經網路詳解深度學習神經網路
- 4.5 RNN迴圈神經網路(recurrent neural network)RNN神經網路
- 十 | 門控迴圈神經網路LSTM與GRU(附python演練)神經網路Python
- 從網路架構方面簡析迴圈神經網路RNN架構神經網路RNN
- YJango的迴圈神經網路——scan實現LSTMGo神經網路
- NLP與深度學習(二)迴圈神經網路深度學習神經網路
- 迴圈神經網路LSTM RNN迴歸:sin曲線預測神經網路RNN
- (二)神經網路入門之Logistic迴歸(分類問題)神經網路
- 【深度學習】神經網路入門深度學習神經網路
- [譯] RNN 迴圈神經網路系列 2:文字分類RNN神經網路文字分類
- 一文讀懂LSTM和迴圈神經網路神經網路
- RNN-迴圈神經網路和LSTM_01基礎RNN神經網路
- 從零開始用 Python 構建迴圈神經網路Python神經網路
- 【神經網路篇】--RNN遞迴神經網路初始與詳解神經網路RNN遞迴
- [譯] RNN 迴圈神經網路系列 3:編碼、解碼器RNN神經網路
- 用於自然語言處理的迴圈神經網路RNN自然語言處理神經網路RNN
- 使用PyTorch從零開始構建Elman迴圈神經網路PyTorch神經網路
- 迴圈神經網路之embedding,padding,模型構建與訓練神經網路padding模型
- 關於 RNN 迴圈神經網路的反向傳播求導RNN神經網路反向傳播求導
- 神經網路的菜鳥入門祕籍神經網路
- PyTorch入門-殘差卷積神經網路PyTorch卷積神經網路
- [譯] 如何在 keras 中使用迴圈神經網路創作音樂Keras神經網路
- 從前饋到反饋:解析迴圈神經網路(RNN)及其tricks神經網路RNN
- 【機器學習】李宏毅——Recurrent Neural Network(迴圈神經網路)機器學習神經網路
- torch神經網路--線性迴歸神經網路