机器学习笔记(13.1): GRU & LSTM

可能更好的阅读体验 Jeefy's Blog: LSTM

GRU(Gate Recurrent Unit)是一种 RNN,LSTM 也是一种 RNN,这两者都是为了解决 RNN 长程问题中的记忆衰减问题。一般来说,GRU \(\approx\) LSTM,但是 GRU 的计算损耗更低,所以 GRU > LSTM。

LSTM

核心就是,如何去记忆重要的关键词,并且需要适当的遗忘。

那么我们就可以引入三个组件以及一个新的记忆变量 \(C_t \in {\mathbb R}^h\),这里设 \(x_t \in {\mathbb R}^d\)

非常需要注意一下,我这里没有考虑行列向量的问题,默认来说,\(x_t, h_t\) 都应该是列向量,所以 \([h_{t-1}, x_t]\) 严格应该写为 \([h_{t-1}^T, x_t^T]^T\),但是很丑陋且麻烦,所以简写了。原文中用的是 \(W \cdot [h_{t-1}, x_t]\) 的写法,我不是很明白,

  • 遗忘门
    • 首先计算需要怎么去遗忘:\(f_t = \sigma(W_f [h_{t - 1}, x_t] + b_f) \in {\mathbb R}^h\)
    • 其中 \(W_f \in {\mathbb R}^{h \times (h + d)}\)
    • 这里利用 sigmoid 函数去激活,\(1 \to keep, 0 \to forget\)
  • 记忆门
    • 接下来我们需要计算需要新加入什么记忆:\(\tilde c_t = {\rm tanh}(W_c [h_{t - 1}, x_t] + b_c) \in {\mathbb R}^h\)
    • 但同时,也需要衡量其重要性(magnitude):\(m_t = {\rm sigmoid}(W_m[h_{t - 1}, x_t] + b_c) \in {\mathbb R}^h\)
    • 其中 \(W_c, W_m \in {\mathbb R}^{h \times (h + d)}\)
    • 那么于是,记忆就可以更新为:\(c_t = c_{t - 1} \odot f_t + \tilde c_t \odot m_t\)
  • 输出门
    • 根据记忆和状态输出即可:
    • \(h_t = \sigma(W_h [h_{t - 1}, x_t] + b_h) \odot {\rm tanh} (c_t)\)
    • 其中 \(W_h \in {\mathbb R}^{h \times (h + d)}\)

非常的简单,但是确实有点计算复杂。

GRU

我们为什么不能把 \(h_t\)\(c_t\) 放一起呢?这样我们只需要两个门了,重置门和更新门:

  • 重置门:
    • 依旧怎么遗忘起手:\(r_t = \sigma(W_r [h_{t - 1}, x_t] + b_r)\)
    • 于是可以得到当前的需求状态是什么:
    • \(\tilde h_t = {\rm tanh}(W_h [r_t \odot h_{t - 1}, x_t] + b_h)\)
  • 更新门
    • 依旧是需要需要多少信息起手:\(z_t = \sigma(W_z [h_{t - 1}, x_t] + b_z)\)
    • 于是新的状态自然是:\(h_t = (1 - z_t) \odot h_{t - 1} + z_t\odot \tilde h_t\)

需要注意的是,这两个框架的输出 \(h_t\) 都表示的是隐状态,而不是真实的输出,对于 RNN 任务,还需要进一步使用其他的东西处理。


我在想,如果我只保留 GRU 中的两个门,这样这个结构可以抽象为:

\[\begin{aligned} \tilde h_t &= f(h_{t - 1}, x_t) \\ z_t &= \sigma(g(h_{t - 1}, x_t)) \\ h_t &= (1 - z_t) \odot h_{t - 1} + z_t\odot \tilde h_t \end{aligned} \]

对于 \(f, g\),我能不能换成一个 FC NN 或者 MLP 之类的,甚至在 \(h_t\) 的聚合过程中,再来点 Transformer 的想法,将 \(h_{t - 1}\)\(\tilde h_t\) 通过 QKV 聚合。

简单搜索了一下,有相关的工作了:

  • Minimal RNN
  • Recurrent Attention
  • Transformer-XL、RWKV
posted @ 2026-04-23 09:39  jeefy  阅读(22)  评论(0)    收藏  举报