QUESTION

LSTM的细胞状态和遗忘门、输入门、输出门分别做什么?

A

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的梯度消失和长期依赖问题。