小白循環神經網絡RNN LSTM 參數數量 門單元 cell units timestep batch_size
- RNN循環神經網絡 timestep batch_size
- LSTM及參數計算
- keras中若干個Cell例如LSTMCell
1.RNN循環神經網絡
先來解釋一下 batch_size timestep
樣本數據:
小明愛學習
小王愛學習
小李愛學習
小花愛學習
通常樣本數據會以(batch_size, time_step, embedding_size)送入模型,對應的可以是(4,5,100)
4表示批量送入也就是(小,小,小,小)第二批是(明,王,李,花)…
5表示時間步長,一句話共5個字
100表示詞嵌入的維度
輸入 假設一次輸入4個字符,那麼Xt的維度是4*100
對應的矩陣大小是 100*hidden_size
輸出大小即爲4*hidden_size 也就是說W將詞嵌入轉換成隱藏層大小
$H_{t-1} $ 也就是 4*hidden_size
相乘大小就是 hidden_size * hidden_size
偏執項大小是1*h通過廣播的方式和前面相加
所以最終輸出就是4*hidden_size
對於輸出層:
相應的大小爲hidden_size*labels_number
這裏labels_number對應的是字典中字的個數,也就是說最終是要預測下一個字的概率
最終輸出 是4*labels_number
如果是分類任務再加上一個softmax 就得到此次批量4個各自的最大概率的值是什麼。
2.LSTM及參數計算
對比上述RNN類比LSTM結構
依然用上面例子,輸入timestep=5 及一句話5個字。字嵌入維度是100及一個字用100維表示。設置LSTM(64)輸出維度是64及隱含層輸出是64維。
總共三個門結構
是上一個隱含層,也就是64。 維度是(1,164) 所以 大小就是(164,64) ,偏執項64
所以通過公式可以看到和 相乘共用4個矩陣,參數數量是(164*64+64 )* 4
激活函數是sigmoid輸出是[0,1],可以看出幾個門輸出的值是0到1之間。
tanh輸出是[-1, 1],
遺忘門控制上一個記憶細胞信息是否需要保留,輸入門控制當前候選細胞。
如果遺忘門一直近似1 輸入門近似0 ,記憶細胞會一直記錄歷史的信息。
對於這樣門組合方式是不是可以達到很好的效果,各個門結構實際上在樣本中體現在哪裏?
上圖是李宏毅老師的講義截圖,對於每一個輸入都會產生四個矩陣,由這四個矩陣決定最終的輸出(這裏也可以看出lstm的參數量是普通前饋神經網絡的4倍)
例如:輸入樣本 豆漿喝起來很香醇,油條吃起來嘎嘣脆
當有足夠這樣多的句式,遺忘門會會將前一句中的主語或動詞丟棄,因爲後文中主語或吃起來等等和前文沒有關係。
有一些改進版本,例如GRU,JANET(JUST ANOTHER NETWORK)保留了遺忘門,由論文中的實驗可以看出遺忘門是最重要的門之一https://arxiv.org/yiabs/1804.04849。
實際當中LSTM的傳輸是將上一層的細胞向量,隱藏層向量和當前輸入向量(c,h,x)一起進行計算。如下是李宏毅老師的講義截圖
3.keras中若干個Cell例如LSTMCell
LSTMCell或者其他得cell表示一個cell單元,表示一個step
而LSTM是一個循環層,LSTM也是RNN結構,只是cell是用LSTMCell實現得。
如LSTMCell
LSTMCell或者其他得cell表示一個cell單元,表示一個step
而LSTM是一個循環層,LSTM也是RNN結構,只是cell是用LSTMCell實現得。