深度學習筆記(9):RNN、LSTM、GRU

RNN循環神經網路是用來處理有順序性的資料,稱為序列資料

N-gram模型:自然語言的句子也是一種序列資料,其相關程度可以使用N-gram模型判斷,與前一單字有關稱為2-gram(Bi-gram)、和2個字有關的3-gram(Tri-gram)

時間序列Time Series資料:常見的有語言、音樂和影片資料

機器學習應用在NLP的應用:文件分類與資訊擷取、機器翻譯、語音辨識、語句和語意分析、拼字與文法檢查、問答系統

MLP和CNN都是前饋神經網路(FNN),訓練過程中的輸入與輸出是相互獨立的,不會保留任何狀態;RNN則擁有記憶能力,能夠累積之間輸出的資料來分析目前的資料。

RNN的種類:

1對多:一張圖片輸入產出圖片說明文字的序列資料(多個輸出)
多對1:輸入電影評論文字,輸出正面或負面情緒的結果(1個輸出)
多對多:
(1)輸入和輸出等長(每個輸入都有對應的輸出)、(2)輸入與輸出不等長(機器翻譯,中翻英字數通常不可能完全一樣)

RNN的梯度消失:

如果英文句子上下文相關的訊息間隔得相當長(時步很長),則可能會產生錯誤,無法將訊息連接起來,也就是梯度消失

例如以下例子:

The cat which already ate, (was) full.
The cats which already ate, (were) full

當梯度小於1時,使用連鎖率計算會呈現指數衰減,導致只能更新附近幾步的權重,即梯度消失。(只能使用LSTM和GRU解決)

如果梯度大於1,會造成梯度爆炸,可使用神經網路最佳化來解決。

LSTM與RNN沒什麼不同,唯獨其隱藏層是一個LSTM單元(LSTM Cell)。

RNN分哪些資料是長期記憶、哪些是短期記憶;LSTM則是用閘門來篩選資料,自動學習哪些資料需要保留久一點、哪些不再使用可以刪除。

LSTM

遺忘閘Forget Gate:決定保留哪些資料,是一層Sigmoid神經層。

輸入閘Input Gate:決定需要更新長期記憶中的哪些資料,包含新增與替換資料。

輸出閘Output Gate:決定有哪些資料需要輸出至下一個時步t+1時,作為其時步t+1的輸入資料。

GRU

比LSTM結構更簡單的版本,可提供更快的執行速度以及減少記憶體的使用。

重設閘:決定是否將之前記憶忘掉

更新閘:控制記憶資料的保留與更新

Tanh神經層:產生最後須輸出的候選資料

GRU與LSTM的主要差異:

  1. GRU有2個閘門,LSTM有3個。
  2. LSTM需要使用遺忘閘和輸入閘來控制記憶資料的刪除與輸入資料的更新;GRU使用重置閘。
  3. LSTM長期記憶線需要經過Tanh函數和輸出閘來產生輸出資料;GRU使用更新閘來控制最後輸出資料

文字資料向量化

將資料轉成數值資料的張量(0與1)

詞向量(Word Vector)與詞嵌入(Word Embedding)

將單字轉換成一個浮點數學(float)的數學空間中。

One-hot Encoding和Word Vector的差異如下:

One-hot需要用Code轉換單字成向量;Word Vector則是建立神經網路來自行學習單字的詞向量

One-hot建立一個高維度的稀疏矩陣(向量長10000,只有1個1,其他都是0);Word Vector建立低維度的矩陣,透過神經網路自行學習建立,還能自動建立上下文關係。

CBOW模型:用周圍單字來預測中間單字

Skip-gram模型:用1個單字來預測週圍單字(輸出機率)

Written by

Machine Learning / Deep Learning / Python / Flutter cakeresume.com/yanwei-liu

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store