LSTM的细胞状态和遗忘门、输入门、输出门分别做什么?
LSTM通过细胞状态保存长期信息,并用三个门控制旧信息保留、新信息写入和当前信息输出。
DETAILED ANSWER
直接结论
LSTM全称是Long Short-Term Memory。它在普通RNN的隐藏状态h之外增加细胞状态C,并通过遗忘门、输入门和输出门控制长期信息的流动,从而缓解普通RNN难以学习长期依赖的问题。
每个时间步接收什么
当前输入x_t
上一隐藏状态h_(t-1)
上一细胞状态C_(t-1)
C:内部长期记忆通道。h:当前时间步向外输出、也传给下一时间步的信息。
遗忘门:旧信息保留多少
f_t = sigmoid(W_f × [h_(t-1), x_t] + b_f)
保留的旧记忆 = f_t × C_(t-1)
f_t接近1表示保留较多,接近0表示遗忘较多。
输入门:新信息写入多少
i_t = sigmoid(W_i × [h_(t-1), x_t] + b_i)
候选记忆 = tanh(W_c × [h_(t-1), x_t] + b_c)
输入门产生写入比例,候选记忆提供准备写入的新内容。
更新细胞状态
C_t = f_t × C_(t-1) + i_t × 候选记忆
也就是:
新长期记忆 = 保留下来的旧记忆 + 当前允许写入的新记忆
输出门:当前向外暴露多少信息
o_t = sigmoid(W_o × [h_(t-1), x_t] + b_o)
h_t = o_t × tanh(C_t)
输出门不负责创建全部记忆,而是决定当前细胞状态中有多少内容形成隐藏状态h_t。
PyTorch调用形式为:
output, (hn, cn) = lstm(x, (h0, c0))
LSTM能够缓解梯度消失和长期依赖问题,但不能保证完全消除这些问题。
面试口述
LSTM是RNN的改进结构,在隐藏状态之外增加了细胞状态,并通过遗忘门、输入门和输出门控制旧信息保留、新信息写入以及当前信息输出。细胞状态提供了较直接的长期信息传递通道,因此能缓解普通RNN的梯度消失和长期依赖问题。
