LSTM计算公式

LSTM

计算过程:

输入门:It=σ(XtWxi+Ht1Whi+bi)遗忘门:Ft=σ(XtWxf+Ht1Whf+bf)输出门:Ot=σ(XtWxo+Ht1Who+bo)输入门: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)

其中It,Ft,OtRn×hI_t,F_t,O_t\in R^{n\times h},n为batch_size

候选记忆细胞:C~t=tanh(XtWxc+Ht1Whc+bc)候选记忆细胞:\tilde{C}_t=tanh(X_tW_{xc}+H_{t-1}W_{hc}+b_c)

其中C~tRn×h\tilde{C}_t \in R^{n \times h}

记忆细胞:Ct=FtCt1+ItC~t隐藏状态:Ht=Ottanh(Ct)记忆细胞:C_t=F_t \bigodot C_{t-1}+I_t \bigodot \tilde{C}_t \\ 隐藏状态:H_t=O_t \bigodot tanh(C_t)

\bigodot表示按元素乘法

要点:

  1. 输入门ItI_t、遗忘门FtF_t、输出门OtO_t、候选记忆细胞C~t\tilde{C}_t的计算与传统RNN中隐藏状态H的计算相似

  2. 遗忘门决定上一个记忆细胞的信息是否流入该时间步的记忆细胞,输入门决定该时间步的候选记忆细胞的信息是否流入该时间步的记忆细胞

  3. 输出门控制改时间步的记忆细胞的信息是否流入该时间步的隐藏状态并被输出层利用

  4. 多层LSTM:

    多层LSTM

向量化:

输入X(batch_size,seq_len,d_model)输入X:(batch\_size,seq\_len,d\_model)

隐藏状态H(batch_size,num_directionnum_layers,num_hidden)隐藏状态H:(batch\_size,num\_direction*num\_layers,num\_hidden)

记忆细胞C(batch_size,num_directionnum_layers,num_hidden)记忆细胞C:(batch\_size,num\_direction*num\_layers,num\_hidden)


图片来源:TensorFlow入门(五)多层 LSTM 通俗易懂版_永永夜的博客-CSDN博客_lstm层数