跳转至

RNN 全公式速查:SRNN / LSTM / GRU(字母与函数对齐)

  • 章节:第25章 · 循环神经网络(老师:"图和公式要能一一对应";本章低优先级、按基础掌握)
  • 用途:怕 U/W 配错、tanh/softmax/σ 搞混,这条把每个字母配谁、每处用什么函数钉死。

总口诀(先记这句,再看公式不会乱)

门(gate)一律 σ(要 0~1 当开关);候选/状态值一律 tanh(要 ±1 数值);只有 SRNN 输出那一步用 softmax(要概率)。U 永远配 h_{t-1}(历史),W 永远配 x_t(输入),V 配输出。

一、SRNN(简单循环网络)

隐藏状态\(f=\tanh\) 或 logistic):

\[\boldsymbol r_t=\boldsymbol U\boldsymbol h_{t-1}+\boldsymbol W\boldsymbol x_t+\boldsymbol b,\qquad \boldsymbol h_t=f(\boldsymbol r_t)\]

输出(用 \(\text{softmax}\)):

\[\boldsymbol z_t=\boldsymbol V\boldsymbol h_t+\boldsymbol c,\qquad \boldsymbol p_t=\text{softmax}(\boldsymbol z_t)\]
  • \(\boldsymbol U\):状态-状态权重,乘 \(\boldsymbol h_{t-1}\)\(D\times D\));\(\boldsymbol W\):状态-输入权重,乘 \(\boldsymbol x_t\)(把 \(M\) 维输入映到 \(D\) 维);\(\boldsymbol V\):输出权重,乘 \(\boldsymbol h_t\)
  • \(\boldsymbol b\) 隐藏偏置、\(\boldsymbol c\) 输出偏置;\(\boldsymbol h_0=0\)\(\boldsymbol U,\boldsymbol W,\boldsymbol b\) 沿时间共享
  • \(\boldsymbol x_t\in\mathbb R^M\)(输入维),\(\boldsymbol h_t\in\mathbb R^D\)(隐藏维)。
  • 函数:隐藏层 \(f=\tanh\)(或 logistic);输出层 \(\text{softmax}\)。SRNN 里没有别的函数。

二、LSTM

三个门(全部 \(\sigma\) sigmoid):

\[\boldsymbol i_t=\sigma(\boldsymbol W_i\boldsymbol x_t+\boldsymbol U_i\boldsymbol h_{t-1}+\boldsymbol b_i)\qquad\text{输入门}\]
\[\boldsymbol f_t=\sigma(\boldsymbol W_f\boldsymbol x_t+\boldsymbol U_f\boldsymbol h_{t-1}+\boldsymbol b_f)\qquad\text{遗忘门}\]
\[\boldsymbol o_t=\sigma(\boldsymbol W_o\boldsymbol x_t+\boldsymbol U_o\boldsymbol h_{t-1}+\boldsymbol b_o)\qquad\text{输出门}\]

候选状态\(\tanh\)):

\[\tilde{\boldsymbol c}_t=\tanh(\boldsymbol W_c\boldsymbol x_t+\boldsymbol U_c\boldsymbol h_{t-1}+\boldsymbol b_c)\]

记忆元更新\(\odot\) 逐元素乘):

\[\boldsymbol c_t=\boldsymbol f_t\odot\boldsymbol c_{t-1}+\boldsymbol i_t\odot\tilde{\boldsymbol c}_t\]

外部状态(输出给隐藏层)

\[\boldsymbol h_t=\boldsymbol o_t\odot\tanh(\boldsymbol c_t)\]
  • \(\boldsymbol W_*\)\(\boldsymbol x_t\)\(\boldsymbol U_*\)\(\boldsymbol h_{t-1}\)\(\boldsymbol b_*\) 偏置,\(*\in\{i,f,o,c\}\)\(\odot\) 是逐元素乘(不是矩阵乘)。
  • 函数:三门 \(i,f,o\to\sigma\);候选 \(\tilde c_t\) 与最后 \(\tanh(c_t)\to\tanh\)无 softmax
  • 门的作用\(f_t\) 旧记忆 \(c_{t-1}\) 保留多少;\(i_t\) 候选 \(\tilde c_t\) 写入多少(\(f\)\(i\) 互补);\(o_t\) 内部状态 \(c_t\) 输出多少给 \(h_t\)

三、GRU(了解级)

\[\boldsymbol h_t=\boldsymbol z_t\odot\boldsymbol h_{t-1}+(1-\boldsymbol z_t)\odot\tilde{\boldsymbol h}_t\]

更新门\(\sigma\)):\(\quad\boldsymbol z_t=\sigma(\boldsymbol W_z\boldsymbol x_t+\boldsymbol U_z\boldsymbol h_{t-1}+\boldsymbol b_z)\)

重置门\(\sigma\)):\(\quad\boldsymbol r_t=\sigma(\boldsymbol W_r\boldsymbol x_t+\boldsymbol U_r\boldsymbol h_{t-1}+\boldsymbol b_r)\)

候选状态\(\tanh\),注意先 \(\boldsymbol r_t\odot\boldsymbol h_{t-1}\)):

\[\tilde{\boldsymbol h}_t=\tanh\big(\boldsymbol W_h\boldsymbol x_t+\boldsymbol U_h(\boldsymbol r_t\odot\boldsymbol h_{t-1})+\boldsymbol b_h\big)\]
  • 两个门:更新门 \(z\) / 重置门 \(r\)不用记忆元 \(c\),参数比 LSTM 少。
  • 退化:\(z_t=0,r_t=1\Rightarrow\) 回退到 SRNN;\(z_t=1\Rightarrow\) 当前状态只依赖之前状态。

易错点 / 为什么错

  • 门用 σ、候选/状态用 tanh、SRNN 输出才用 softmax——别把门写成 tanh、别给 LSTM/GRU 加 softmax。
  • Uh_{t-1}Wx_t——三套网络一致,写反就错。
  • LSTM/GRU 里的 \(\odot\)逐元素乘,不是矩阵乘。
  • GRU 候选里是 \(\boldsymbol U_h(\boldsymbol r_t\odot\boldsymbol h_{t-1})\)重置门先作用在 \(h_{t-1}\)再乘 \(U_h\)
  • SRNN 参数 \(\boldsymbol U,\boldsymbol W,\boldsymbol b\) 时间共享(同一套参数用于所有时刻)。

对照表(防混总表)

位置 函数 \(h_{t-1}\) \(x_t\)
SRNN 隐藏 \(\tanh\)/logistic \(U\) \(W\)
SRNN 输出 \(\text{softmax}\) \(V\)\(h_t\)
LSTM 三门 \(i/f/o\) \(\sigma\) \(U_i,U_f,U_o\) \(W_i,W_f,W_o\)
LSTM 候选 \(\tilde c\) \(\tanh\) \(U_c\) \(W_c\)
LSTM 输出 \(h_t\) \(o_t\odot\tanh(c_t)\)
GRU 门 \(z/r\) \(\sigma\) \(U_z,U_r\) \(W_z,W_r\)
GRU 候选 \(\tilde h\) \(\tanh\) \(U_h\)(先 \(r_t\odot h_{t-1}\) \(W_h\)

出处

老师 PPT:slide_40(SRNN 模型 + BPTT)、slide_42(LSTM 三门 + 记忆元)、slide_43(LSTM 汇总 + GRU)。课本第25章。考法:会写公式 + 会画展开图(图↔公式一一对应);LSTM 三门功能为高频简答/填空。相关:[[反向传播-接力棒与内积外积]](BPTT 仍是反向传播)、[[LSTM直觉-c是加性高速公路-h输出为何过tanh]](为什么 c 能传梯度、h 为何过 tanh)。