LSTM(三):Illustrated
2021/07/12
-----
https://pixabay.com/zh/photos/mother-baby-child-garden-home-1150056/
-----
# History DL
說明:
未展開的 RNN(遞歸神經網路(recurrent neural networks,RNN)網路。
xt 是輸入。
ht 是輸出。
-----
# History DL
說明:
展開的 RNN 網路。
-----
# History DL
說明:
此處的公式與剛剛的圖不同。在這裡,
ht 是隱藏狀態的輸出到下一個隱藏狀態,yt 是實際的輸出。
一般的 RNN 是 Elman 網路。也就是,隱藏狀態由 xt 與 h(t-1) 作為輸入。
Jordan 網路則是由 xt 與 y(t-1) 作為輸入。
-----
# History DL
說明:
LSTM。
ft 是忘記門。ft 的輸入是 h(t-1) 與 xt。權重是 Wf,偏置是 bf。經過 sigmoid 讓值介於 0 與 1 之間。
it 是輸入門。it 的輸入是 h(t-1) 與 xt。權重是 Wi,偏置是 bi。經過 sigmoid 讓值介於 0 與 1 之間。
~ tilde
C~t 是 cell state 的預備。C~t 的輸入是 h(t-1) 「公式 (36) 有誤。」與 xt。權重是 WC,偏置是 bC。經過 tanh 這個激活函數。
Ct 是 cell state(記憶值)。忘記門的值乘以上一個 cell state 加上輸入門的值乘以 cell state 的預備,即為此刻的記憶值。
Ot 是輸入門。Ot 的輸入是 h(t-1) 與 xt。權重是 WO,偏置是 bO。經過 sigmoid 讓值介於 0 與 1 之間。
ht 是輸出。其值是輸出門乘以 tanh(Ct)。
-----
# History DL
說明:
參考圖的說明。
-----
梯度消失與梯度爆炸
-----
ANN
--
說明:
假設每層只有一個神經元。
https://zhuanlan.zhihu.com/p/25631496
https://ziyubiti.github.io/2016/11/06/gradvanish/
-----
RNN 反向傳播,連乘的項。
Modified from # History DL
說明:
St(紅點)。
-----
RNN 梯度消失與梯度爆炸
說明:
RNN 反向傳播,連乘的結果,是 tanh' 乘以 Ws。
https://zhuanlan.zhihu.com/p/28687529
-----
LSTM 如何解決梯度消失
--
導數函數值基本上不是 0 就是 1。當值均為 1 時,不會有梯度消失。當值為 0 時,不用回傳梯度。
說明:
LSTM 反向傳播,連乘的結果,跟 RNN 類似,所不同之處,在於 LSTM 連乘的結果,是 tanh' 乘以忘記門的值,而非單純的 Ws,由參考資料的圖可以得知,當忘記門的值等於 0 時,表示不用回傳導數值,因為過去的值,不影響現在的值。
以上說明並不理想。因為 tanh' 與 sigmoid 連乘,基本上還是一堆介於 0 與 1 相乘的數。圖片之所以看起來大都是 0 或 1,那是因為輸入的平面選擇比較大的範圍。如果在原點區域的小範圍,則還是有很多介於 0 與 1 的數。
https://zhuanlan.zhihu.com/p/28749444
-----
Modified from # History DL
說明:
反向傳播中,Ct 在保持導數回傳不要梯度消失是重點。
-----
說明:
反向傳播中,Ct 在保持導數回傳不要梯度消失是重點。
https://www.zhihu.com/question/44895610
-----
參數量。
公式:(詞嵌入大小(輸入) + 1(bias)+ 隱藏層大小(輸入))* 隱藏層大小(輸出)* 4(門)。
例一:「((embedding_size + hidden_size) * hidden_size + hidden_size) * 4」
「((128 + 64) * 64 + 64) * 4 = 49408。」
https://zhuanlan.zhihu.com/p/147496732
例二:「params = 4 * ((size_of_input + 1) * size_of_output + size_of_output^2)」
「4 * (4097 * 256 + 256^2) = 4457472」
--
https://medium.com/deep-learning-with-keras/lstm-understanding-the-number-of-parameters-c4e087575756
https://datascience.stackexchange.com/questions/10615/number-of-parameters-in-an-lstm-model
-----
LSTM 的輸入
以 Keras 為例,LSTM 網路的輸入是一個三維數組。 輸入形狀看起來像 (batch_size, time_steps, seq_len)。 第一個維度代表批次大小,第二個維度代表輸入序列的時間步數。 第三維表示一個輸入序列中的單元數。
batch_size:例:一個批次裡處理的句子筆數。
time_steps:例:句子的最長長度(不足則將資料補零)。
seq_len:例:句子裡,每個詞,詞嵌入的維度。
https://www.kaggle.com/shivajbd/input-and-output-shape-in-lstm-keras
https://www.zhihu.com/question/41949741
--
https://ithelp.ithome.com.tw/articles/10214405?sc=iThelpR
https://keras-cn.readthedocs.io/en/latest/layers/recurrent_layer/
-----
# History DL
說明:
一對一。無 RNN 分類的標準模式(例如圖像分類問題)如圖 35 (a)。
多對一。輸入序列和單個輸出(例如,輸入是一組句子或單詞,輸出是正面或負面表達的情感分析)如圖 35(b)所示。
一對多。系統接受輸入並產生一系列輸出(圖像字幕問題:輸入是單個圖像,輸出是一組帶有上下文的單詞),如圖 35 (c) 所示。
多對多。輸入和輸出序列(例如機器翻譯:機器從英語中獲取一個單詞序列並翻譯成法語單詞序列)如圖 35(d)所示。
多對多。序列到序列學習(例如視頻分類問題,其中我們將視頻幀作為輸入並希望標記圖 35(e)所示視頻的每一幀。
-----
# History DL
說明:
一對一。
多對一。
一對多。
多對多。
多對多。
-----
# Word2vec 1。
說明:
周圍字預測中間字的 CBOW 與 中間字預測周圍字的 Skip-gram。下回分解。
https://www.zhihu.com/question/45027109
-----
References
# RNN
Elman, Jeffrey L. "Finding structure in time." Cognitive science 14.2 (1990): 179-211.
https://cogsci.ucsd.edu/~rik/courses/readings/elman90-fsit.pdf
# LSTM
Hochreiter, Sepp, and Jürgen Schmidhuber. "Long short-term memory." Neural computation 9.8 (1997): 1735-1780.
http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.676.4320&rep=rep1&type=pdf
# LSTM odyssey
Greff, Klaus, et al. "LSTM: A search space odyssey." IEEE transactions on neural networks and learning systems 28.10 (2016): 2222-2232.
# History DL
Alom, Md Zahangir, et al. "The history began from alexnet: A comprehensive survey on deep learning approaches." arXiv preprint arXiv:1803.01164 (2018).
https://arxiv.org/ftp/arxiv/papers/1803/1803.01164.pdf
# Word2vec 1。被引用 18991 次。
Mikolov, Tomas, et al. "Efficient estimation of word representations in vector space." arXiv preprint arXiv:1301.3781 (2013).
https://arxiv.org/pdf/1301.3781.pdf
-----
No comments:
Post a Comment