LSTM笔记
LSTM计算公式
LSTM
计算过程:
\[ 输入门:I_t = \sigma(X_tW_{xi}+H_{t-1}W_{hi}+b_i) \\ 遗忘门:F_t = \sigma(X_tW_{xf}+H_{t-1}W_{hf}+b_f) \\ 输出门:O_t = \sigma(X_tW_{xo}+H_{t-1}W_{ho}+b_o) \]
其中\(I_t,F_t,O_t\in R^{n\times h}\),n为batch_size \[ 候选记忆细胞:\tilde{C}_t=tanh(X_tW_{xc}+H_{t-1}W_{hc}+b_c) \] 其中\(\tilde{C}_t \in R^{n \times h}\) \[ 记忆细胞:C_t=F_t \bigodot C_{t-1}+I_t \bigodot \tilde{C}_t \\ 隐藏状态:H_t=O_t \bigodot tanh(C_t) \] \(\bigodot\)表示按元素乘法
要点:
输入门\(I_t\)、遗忘门\(F_t\)、输出门\(O_t\)、候选记忆细胞\(\tilde{C}_t\)的计算与传统RNN中隐藏状态H的计算相似
遗忘门决定上一个记忆细胞的信息是否流入该时间步的记忆细胞,输入门决定该时间步的候选记忆细胞的信息是否流入该时间步的记忆细胞
输出门控制改时间步的记忆细胞的信息是否流入该时间步的隐藏状态并被输出层利用
多层LSTM:
向量化:
\(输入X:(batch\_size,seq\_len,d\_model)\)
\(隐藏状态H:(batch\_size,num\_direction*num\_layers,num\_hidden)\)
\(记忆细胞C:(batch\_size,num\_direction*num\_layers,num\_hidden)\)