d2l-GRU-LSTM

1. 门控循环单元 GRU

GRU和RNN的区别

  • GRU支持对隐状态的门控。模型有专门的机制来决定何时更新隐状态,何时重置隐状态
  • GRU的数值稳定性更强,能够处理更长的文本
  • GRU的功能是LSTM的变种,两者功能类似

重置门 (reset gate)更新门 (update gate):这两个门和隐状态的形状相同,因此GRU的可学习参数是RNN的3倍
img

Rt=σ(XtWxr+Ht1Whr+br)

Zt=σ(XtWxz+Ht1Whz+bz)

其中,σ为sigmoid激活函数

候选隐状态 (candidate hidden state):由重置门Rt与常规隐状态更新机制集成得到
img

H~t=tanh(XtWxh+(RtHt1)Whh+bh)

其中,为Hadamard积(按元素乘积)。

  • Rt接近1时,类似于普通的RNN
  • Rt接近0时,H~t 是以 Xt 为输入的多层感知机的结果。先前的隐状态被重置为默认值。

隐状态Ht还取决于Ht1, H~t, 更新门Zt
img

Ht=ZtHt1+(1Zt)H~t

  • Zt接近1时,模型倾向于保留就状态,从而忽略Xt的信息
  • Zt接近0时,新的隐状态Ht接近候选状态H~t
# Pytorch 简洁实现
num_inputs = vocab_size
gru_layer = nn.GRU(num_inputs, num_hiddens)
model = d2l.RNNModel(gru_layer, len(vocab))
model = model.to(device)
d2l.train_ch8(model, train_iter, vocab, lr, num_epochs, device)

综上所述:

  • 重置门有助于模型捕获序列中的短期依赖关系
  • 更新门有助于模型捕获序列中的长期依赖关系

2. 长短期记忆网络 LSTM

LSTM中有3种门:遗忘门 F输入门 I输出门 O
img

It=σ(XtWxi+Ht1Whi+bi)

Ft=σ(XtWxf+Ht1Whf+bf)

Ot=σ(XtWxo+Ht1Who+bo)

其中,σ为sigmoid激活函数

候选记忆元C~t使用tanh作为激活函数。
img

C~t=tanh(XtWxc+Ht1Whc+bc)

记忆元Ct
img

Ct=FtCt1+ItC~t

  • 遗忘门Ft控制保留过去多少的记忆元 Ct1
  • 输入门It控制采用多少来自C~t的新数据

隐状态Ht
img

Ht=Ottanh(Ct)

  • tanh函数保证了Ht始终在(-1, 1)内,防止梯度爆炸
  • 输出门Ot接近1时,能够将所有记忆传递给预测部分
  • 输出门Ot接近0时,只保留记忆元内的信息,而不更新隐状态

综上所述:

  • LSTM中有3种门:遗忘门、输入门、输出门
  • LSTM的隐藏层输出包括:
    1. 隐状态H:会传递到输出层
    2. 记忆元C:属于内部信息
posted @   Frank23  阅读(9)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示