李宏毅《Deep Learning》學習筆記 - RNN

RNN

視頻:https://www.youtube.com/watch?v=xCGidAeyS4M
課件:http://speech.ee.ntu.edu.tw/~tlkagk/courses/ML_2016/Lecture/RNN%20(v2).pdf

背景問題

在這裏插入圖片描述

Simple-RNN

在這裏插入圖片描述

在這裏插入圖片描述
在這裏插入圖片描述

在這裏插入圖片描述

使用RNN如何解決問題

在這裏插入圖片描述
注意:這裏不是有3個Network,而是,同一個Network在不同的時間被使用了3次,這裏,同樣的weight使用相同的顏色表示。

在這裏插入圖片描述

Network可以更加複雜

在這裏插入圖片描述

在這裏插入圖片描述
傳說Jordan Network相對而言,會有較好的performance。

在這裏插入圖片描述

LSTM

上面介紹的RNN是最簡單的版本,目前,使用比較多的是下面這種LSTM。
在這裏插入圖片描述
在LSTM中,有3個gate,用於控制input,output,和forget。
每一個LSTM block有4個Input,1個output。
下面是block的詳細信息:
在這裏插入圖片描述
原先存在memory裏面的是c,輸入是Z。

LSTM舉例說明

下面是LSTM的一個簡單例子,輸入是3維的,輸出是一維的。
下面的when是用於控制3個gate的條件,藍色方框中的數字是memory的中間結果,下面紅色框框中的是最終的輸出。
在這裏插入圖片描述
下面以第一個[3,1,0]爲例,看看經過block的輸出是什麼。其中,各自的權重,都標註在連線上。
在這裏插入圖片描述
下面是SimpleRNN的簡化版本,將其中的neurons替換成LSTM block,就成了LSTM。
在這裏插入圖片描述
如下面這樣的。由於有額外3個gate,所以,參數也會增加爲原先的4倍。
在這裏插入圖片描述
那麼,這種有LSTM block的網絡,與RNN又有什麼關係呢?
我們用下面這幅圖來理解。
在t時刻,輸入是xtx^t,經過四個不同的變換,轉換爲z,zi,zo,zfz,z^i,z^o,z^fzz的第i維度的值作爲第i個block的輸入,其他3種zz分別作爲三個gate的輸入。此時,memory中的值組成的vector爲ct1c^{t-1}
在這裏插入圖片描述
多個cell是可以同時運算的,用vector直接運行,下面的乘是element-wise的乘。
在這裏插入圖片描述
上面的計算過程,就是對一個輸入的處理過程,然後,將後續的輸入繼續喂入。
在這裏插入圖片描述

在這裏插入圖片描述

訓練LSTM

上面介紹的內容是LSTM的使用,後面介紹如何訓練LSTM。
在這裏插入圖片描述
更新weight的時候,使用的方法也是gradient decent,與傳統的BP算法稍微有些差異,使用的是BPTT。
在這裏插入圖片描述

RNN的問題

在這裏插入圖片描述
RNN的error surface會出現下面的病態的狀態,很陡峭。爲了解決這個問題,通過clipping,控制增加的幅度。
在這裏插入圖片描述
爲什麼在RNN中會出現這種問題呢?
在這裏插入圖片描述

如何解決

RNN的問題是出在weights在不同的時間點,被反覆地使用。從而,導致問題放大。
如何解決這個問題呢?現在常用的方法,就是LSTM。
爲什麼現在用LSTM代替RNN呢?主要是因爲LSTM可以解決Gradient Vanishing的問題。
LSTM是如何解決Gradient Vanishing的呢?在RNN中,每一個時間點,memory裏的信息都會被覆蓋掉。而在RNN中,memory裏的值是會和Input相加,一旦對memory造成影響,那個影響會一直留着,一直到forget gate將memory洗掉。
在這裏插入圖片描述
GRU中只有兩個gate,是將input gate和forget gate聯動處理。當input gate打開,forget gate就要啓動,負責將memory洗掉。當input gate關閉的時候,forget gate就不覆蓋memory中的值。
相較於LSTM,weights更少一些,訓練過程會更穩定一些。

還有一些其他的方法,解決Gradient Vanishing
在這裏插入圖片描述
Hinton提出的方法:Identity Matrix+ReLU效果會很好,可以超過LSTM。

RNN的應用

在這裏插入圖片描述
分類問題

預測文章的關鍵詞彙
在這裏插入圖片描述
上面生成的OTO_T作爲attention,下面生成vector,再餵給forword network。。。

語音識別
在這裏插入圖片描述
output比Input短的場景,可以使用RNN。
在這裏插入圖片描述
不確定input和output誰長的情況,如翻譯場景。
在這裏插入圖片描述
在這裏插入圖片描述

seq2seq auto-encoder

在文本領域,傳統的bag-of-word,對下面的兩句話提取的特徵是一樣的,但是,實際上它們的意思是完全不同的。爲了抽取這兩句話的特徵,可以使用seq2seq auto-encoder的方法。
在這裏插入圖片描述
在這裏插入圖片描述
在語音領域,可以將語音片段轉成固定長度的特徵向量。
在這裏插入圖片描述
一種應用場景是做語音搜索
在這裏插入圖片描述
在這裏插入圖片描述
最後,在RNN Encoder的memory中存放的vector,就是audio segment的representation。
那麼,如何訓練RNN Encoder呢?
如下圖,將RNN Encoder和RNN Decoder一起訓練。
在這裏插入圖片描述

Attention-based Model

在這裏插入圖片描述

Neural Turing Machine

在這裏插入圖片描述

應用

Reading Comprehansion
在這裏插入圖片描述
在這裏插入圖片描述

Deep & Structured

對比RNN和Structured Learning
在這裏插入圖片描述
將兩種結合起來,可以做的更好。
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章