LSTM的第一步就是决定细胞状态需要丢弃哪些信息。 这部分操作是通过一个被称为忘记门的sigmoid单元来处理的。它通过查看
h
t
−
1
h_{t-1}
ht−1和
x
t
x_t
xt来输出一个0-1之间的向量,该向量里面的0-1值表示细胞状态
C
t
−
1
C_{t-1}
Ct−1中的哪些信息保留或丢弃多少。0表示不保留,1表示都保留。
2.2.2 输入门(input gate)
第二步:决定给细胞状态添加哪些新的信息。 分为两个步骤,首先 利用
h
t
−
1
h_{t-1}
ht−1和
x
t
x_t
xt通过一个称为输入门的操作来决定更新哪些信息。 再利用
h
t
−
1
h_{t-1}
ht−1和
x
t
x_t
xt通过
t
a
n
h
tanh
tanh层得到新的候选细胞信息
C
t
~
\widetilde{C_t}
Ct,这些信息可能会被更新到细胞信息中。
第三步:更新旧的细胞信息
C
t
−
1
C_{t-1}
Ct−1,变为新的细胞信息
C
t
C_t
Ct。 更新的规则,通过忘记门选择忘记旧细胞信息的一部分,通过输入门选择添加候选细胞信息
C
t
~
\widetilde{C_t}
Ct的一部分得到新的细胞信息
C
t
C_t
Ct. 注:⊙为Hadamard积
2.2.3 输出门(output gate)
第四步: 根据输入的
h
t
−
1
h_{t-1}
ht−1和
x
t
x_t
xt来判断输出细胞的哪些状态特征。 需要将输入经过一个称为输出门的sigmoid层得到判断条件,然后将细胞状态经过tanh层得到一个 -1~1之间值的向量,该向量与输出门得到的判断条件相乘就得到了最终该RNN单元的输出。