[監督式]NLP基礎-RNN、LSTM

2019-03-12  本文已影响0人  RJ阿杰

RNN

RNN常用來處理序列數據,例如我們有10年每月的天氣紀錄要來預測作物收成,我們必須要知道是否有持續好幾天的高溫造成作物收成不佳,此時就需要RNN了,假如我們使用fully-connected,我們不容易知道資料的序列關係。

RNN只是將上一seq的隱藏層做線性轉換後跟下一seq疊加。


RNN層計算圖
兩層rnn

原理請參考:
李弘毅老師 ML Lecture 21-1: Recurrent Neural Network (Part I)
循环神经网络RNN介绍1:什么是RNN、为什么需要RNN、前后向传播详解、Keras实现

RNN梯度爆炸解決

pytorch的nn.clip_grad_value_()、nn.clip_grad_norm_()梯度裁剪(使梯度大於或小於某個閥值時直接等於閥值),常用來解決RNN梯度變化大造成的梯度爆炸的問題。

RNN常見的梯度爆炸問題
梯度裁剪

實作

Code from Github-gist

輸入前六個值,預測第7個值
輸入第一個點後,由第一個點預測第二個點,再由那個預測的點預測下一個點。

LSTM

引用李弘毅老師的人體LSTM
引用李弘毅老師的人體LSTM
引用李弘毅老師的人體LSTM
引用李弘毅老師的人體LSTM




LSTM最後一層的ht就是output

實作

Code from Github-gist--Chat robot
Code from Github--sentimebt anasisly


只有epoch 100回

GRU

其他參考:
速記AI課程-深度學習入門(二)
A Beginner's Guide to LSTMs and Recurrent Neural Networks
The Unreasonable Effectiveness of Recurrent Neural Networks
Understanding LSTM Networks

上一篇 下一篇

猜你喜欢

热点阅读