1. RNN的關鍵點:即在處理序列數據時會有順序的記憶。比如,RNN在處理一個字符串時,在對字母表順序有記憶的前提下,處理這個字符串會更容易。就像人一樣,讀取下面第一個字符串會更容易,因為人對字母出現的順序是提前知道的。但是將字符串反轉過來,讀取第二個字符串時就沒那么容易了。
? ? ??
? ? ??
2. RNN整體網絡結構:分為輸入層,隱藏層,輸出層;輸入層的[x1, x2,x3]是序列數據,隱藏層[h0, h1, h2, h3]存儲著過去一段時間和當前的一些狀態信息(說明是有記憶的),輸出層[y1, y2, y3], y1 是由上一個的狀態h0 和 當前狀態h1的計算結果。同樣,按照這樣方式 y2,y3 依次計算出來。?
? ? ? ??
3. RNN單層結構(RNN Cell):Hi是由上一個狀態Hi-1計算得到的,輸出Yi是由當前Hi計算得到。正式由于每一次隱藏狀態的計算都包含了過去的狀態,所以RNN是帶記憶的。
? ? ? ?
4. RNN的例子:本例是通過輸入一句話的前面幾個詞,來預測下一個詞是什么;計算步驟如下:
(1)首先獲取每個輸入詞(one-hot vectors)的詞向量(參見LLM - 詞向量 Word2vec-CSDN博客),即轉換成語義更富的一個向量(word embeddings)。
(2)其次計算h1,h1是由初始狀態h0 和 輸入x1計算得到,一般h0是隨機初始化的值。
? ? ? ? ??
(3)h2,h3等計算方式同上面的h1。
? ? ? ? ? ??
(4)計算h4,因為h4包含了前面h1,h2,h3所有詞的信息,所以h4的值更符合句子語義。得到h4之后,再經過一個線性層和softmax處理,得到詞表上每個詞的概率。然后選擇出現概率最大的詞作為最終預測詞。
? ? ? ? ? ? ?
5. RNN應用場景
(1):詞性標注,給定一句話,預測每個詞的詞性
(2):序列預測,例如給定一周溫度,預測每天天氣如何
(3):圖片描述,給定一個圖片,生成一句描述該圖片的話
(4):文本分類,給定一個句子,區別這句話情感是正面還是負面
6.RNN優點
(1)可以處理變長數據
(2)模型大小不會隨著輸入增加而增加
(3)模型權重參數是共享的
(4)后面的計算可以使用到前面的計算結果
7.RNN缺點
(1)是一個順序計算過程,后面的計算依賴前面的結果,無法并行化
(2)隨著序列不斷向后推移,由于記憶步長的限制,后面的計算很難依賴更之前的狀態,如下圖,越往后計算梯度時鏈式越長,這會導致梯度消失或梯度爆炸。
? ? ? ?