1514 字
8 分钟
RNN-GRU门控循环单元和LSTM长短期记忆网络
2026-06-26
无标签

#

门:输出在 [0,1][0,1] 之间的向量,用来对某种信息(某个向量)做逐元素缩放

如果把门的符号定义为 gg,表示 sigmoid 函数

一般都是:

g()=σ()=11+e()g(\cdot) = \sigma(\cdot) = \frac{1}{1 + e^{-(\cdot)}}

然后

输出=信息 g()\odot g(\cdot)

GRU(Gated Recurrent Unit)门控循环单元#

alt text

核心公式:在 隐藏状态的更新 中引入了两个门控机制:重置门 rr(reset gate)和更新门 zz(update gate)。

  • 更新门 z(t)=σ(Wxzx(t)+Whzh(t1)+bz)z^{(t)} = \sigma(W_{xz} x^{(t)} + W_{hz} h^{(t-1)} + b_z) 决定了多少旧的隐藏状态需要保留

  • 重置门 r(t)=σ(Wxrx(t)+Whrh(t1)+br)r^{(t)} = \sigma(W_{xr} x^{(t)} + W_{hr} h^{(t-1)} + b_r) 决定了多少旧的隐藏状态需要被遗忘

  • 候选隐藏状态 h~(t)=tanh(Wxhx(t)+Whh(r(t)h(t1))+bh)\tilde{h}^{(t)} = \tanh(W_{xh} x^{(t)} + W_{hh} (r^{(t)} \odot h^{(t-1)}) + b_h)tt 时刻,重置门参与隐状态的更新,使用tanh非线性激活函数来确保候选隐状态中的值保持在区间 [1,1][-1, 1] 之间

隐藏状态 h(t)h^{(t)} 的更新公式为:

h(t)=z(t)h(t1)+(1z(t))h~(t)h^{(t)} = z^{(t)} \odot h^{(t-1)} + (1 - z^{(t)}) \odot \tilde{h}^{(t)}

这个公式决定了新的隐状态 h(t)h^{(t)} 在多大程度上来自旧的状态 h(t1)h^{(t-1)} 和候选状态 h~(t)\tilde{h}^{(t)}

语义:

  • z(t)0z^{(t)} \to 0 时,新的状态 h(t)h^{(t)} 接近候选状态 h~(t)\tilde{h}^{(t)},意味着网络更倾向于使用新的信息 x(t)x^{(t)}

  • 完全等于0就表示和上一状态 h(t1)h^{(t-1)} 只存在非线性关系,完全接受新信息x(t)x^{(t)},旧信息h(t1)h^{(t-1)} 的接受度由重置门 r(t)r^{(t)} 决定

  • z(t)1z^{(t)} \to 1 时,新的状态 h(t)h^{(t)} 接近旧的状态 h(t1)h^{(t-1)},意味着网络更倾向于保留旧的信息,来自 x(t)x^{(t)} 的信息大部分被忽略,好像跳过了一部分时间步一样。

  • 完全等于1就表示和上一状态 h(t1)h^{(t-1)} 只存在线性关系,完全忽略新信息x(t)x^{(t)},旧信息h(t1)h^{(t-1)} 的接受度由重置门 r(t)r^{(t)} 决定

  • z(t)=0z^{(t)} = 0r(t)=1r^{(t)} = 1,GRU 网络则退化为简单循环 神经网络

  • z(t)=0z^{(t)} = 0r(t)=0r^{(t)} = 0, GRU 网络退化为传统的前馈 神经网络

LSTM(Long Short-Term Memory)长短期记忆网络#

升级成三门机制:输入门(input gate)i(t)i^{(t)}、遗忘门(forget gate)f(t)f^{(t)}和输出门(output gate)o(t)o^{(t)}

以及多了一个 记忆单元(cell state)c(t)c^{(t)},用于存储 长期记忆 。(ps: hh 可以看作是短期记忆)

虽然引入了一个新的记忆单元,但只有隐状态会传递到输出层,而记忆单元完全属于内部信息。

alt text

  • 输入门 i(t)=σ(Wxix(t)+Whih(t1)+bi)i^{(t)} = \sigma(W_{xi} x^{(t)} + W_{hi} h^{(t-1)} + b_i) 决定了多少新的信息需要被写入记忆单元
  • 遗忘门 f(t)=σ(Wxfx(t)+Whfh(t1)+bf)f^{(t)} = \sigma(W_{xf} x^{(t)} + W_{hf} h^{(t-1)} + b_f) 决定了多少旧的信息需要被遗忘
  • 输出门 o(t)=σ(Wxox(t)+Whoh(t1)+bo)o^{(t)} = \sigma(W_{xo} x^{(t)} + W_{ho} h^{(t-1)} + b_o) 决定了多少记忆单元的信息需要被输出到隐藏状态
  • 候选记忆单元 c~(t)=tanh(Wxcx(t)+Whch(t1)+bc)\tilde{c}^{(t)} = \tanh(W_{xc} x^{(t)} + W_{hc} h^{(t-1)} + b_c)tt 时刻,使用tanh非线性激活函数来确保候选记忆单元中的值保持在区间 [1,1][-1, 1] 之间

对于长期记忆:记忆单元 c(t)c^{(t)} 的更新公式为:

c(t)=f(t)c(t1)+i(t)c~(t)c^{(t)} = f^{(t)} \odot c^{(t-1)} + i^{(t)} \odot \tilde{c}^{(t)}

这个公式决定了新的记忆单元 c(t)c^{(t)} 在多大程度上来自旧的记忆单元 c(t1)c^{(t-1)} 和候选记忆单元 c~(t)\tilde{c}^{(t)}

语义:

  • f(t)0f^{(t)} \to 0 时,新的记忆单元 c(t)c^{(t)} 接近候选记忆单元 c~(t)\tilde{c}^{(t)},意味着网络更倾向于使用新的信息 x(t)x^{(t)},旧信息 c(t1)c^{(t-1)} 的接受度由遗忘门 f(t)f^{(t)} 决定

  • f(t)1f^{(t)} \to 1 时,新的记忆单元 c(t)c^{(t)} 接近旧的记忆单元 c(t1)c^{(t-1)},意味着网络更倾向于保留旧的信息,来自 x(t)x^{(t)} 的信息大部分被忽略,好像跳过了一部分时间步

  • i(t)0i^{(t)} \to 0 时,新的记忆单元 c(t)c^{(t)} 接近旧的记忆单元 c(t1)c^{(t-1)},意味着网络更倾向于保留旧的信息,来自 x(t)x^{(t)} 的信息大部分被忽略,好像跳过了一部分时间步

  • i(t)1i^{(t)} \to 1 时,新的记忆单元 c(t)c^{(t)} 接近候选记忆单元 c~(t)\tilde{c}^{(t)},意味着网络更倾向于使用新的信息 x(t)x^{(t)},旧信息 c(t1)c^{(t-1)} 的接受度由遗忘门 f(t)f^{(t)} 决定

  • f(t)=0f^{(t)} = 0i(t)=1i^{(t)} = 1 时,记忆单元将历史信息清空,并将候选内部状态c~(t)\tilde{c}^{(t)}写入

  • f(t)=1f^{(t)} = 1i(t)=0i^{(t)} = 0 时,记忆单元将保留历史信息,并忽略候选内部状态c~(t)\tilde{c}^{(t)} 不写入新的信息

对于短期记忆:隐藏状态 h(t)h^{(t)} 的更新公式为:

h(t)=o(t)tanh(c(t))h^{(t)} = o^{(t)} \odot \tanh(c^{(t)})

这个公式决定了新的隐藏状态 h(t)h^{(t)} 在多大程度上来自记忆单元 c(t)c^{(t)},输出门 o(t)o^{(t)} 控制着从记忆单元中输出多少信息到隐藏状态。

语义:

  • o(t)1o^{(t)} \to 1 时,新的隐藏状态 h(t)h^{(t)} 接近 tanh(c(t))\tanh(c^{(t)}),意味着网络更倾向于将记忆单元c(t)c^{(t)}中的信息(长期记忆)传递给预测部分
  • o(t)0o^{(t)} \to 0 时,新的隐藏状态 h(t)h^{(t)} 接近 0,只保留记忆单元c(t)c^{(t)}中的信息,而不将其传递给预测部分,相当于不更新隐状态。

LSTM 变体1:peephole LSTM#

peephole LSTM 是 LSTM 的一种变体,它在门控机制中引入了对 上一时间步记忆单元 状态的 直接访问

具体来说,peephole LSTM 在计算输入门、遗忘门和输出门时,会将记忆单元的状态 c(t1)c^{(t-1)} 作为额外的输入。

i(t)=σ(Wxix(t)+Whih(t1)+Wcic(t1)+bi)f(t)=σ(Wxfx(t)+Whfh(t1)+Wcfc(t1)+bf)o(t)=σ(Wxox(t)+Whoh(t1)+Wcoc(t1)+bo)i^{(t)} = \sigma(W_{xi} x^{(t)} + W_{hi} h^{(t-1)} + \boxed{W_{ci} c^{(t-1)}} + b_i)\\[1em] f^{(t)} = \sigma(W_{xf} x^{(t)} + W_{hf} h^{(t-1)} + \boxed{W_{cf} c^{(t-1)}} + b_f)\\[1em] o^{(t)} = \sigma(W_{xo} x^{(t)} + W_{ho} h^{(t-1)} + \boxed{W_{co} c^{(t-1)}} + b_o)

这使得门控机制能够更好地利用长期记忆信息,从而提高模型的性能.

LSTM 变体2:Coupled LSTM#

耦合输入门和遗忘门的LSTM

在标准的LSTM中,输入门和遗忘门是独立的。然而,在Coupled LSTM中,这两个门被耦合在一起,使得它们共享相同的参数。这意味着,当输入门打开时,遗忘门会关闭,反之亦然。

f(t)=σ(Wxfx(t)+Whfh(t1)+bf)i(t)=1f(t)f^{(t)}=\sigma(W_{xf} x^{(t)} + W_{hf} h^{(t-1)} + b_f)\\[1em] i^{(t)}=1-f^{(t)}

记忆单元的更新公式变为:

c(t)=f(t)c(t1)+(1f(t))c~(t)c^{(t)} = f^{(t)} \odot c^{(t-1)} + (1-f^{(t)}) \odot \tilde{c}^{(t)}
RNN-GRU门控循环单元和LSTM长短期记忆网络
https://biscuit0613.github.io/posts/ml/rnn-gru-lstm/
作者
Biscuit
发布于
2026-06-26
许可协议
CC BY-NC-SA 4.0
RNN-双向RNN
RNN-Seq2Seq序列到序列模型