d2l-GRU-LSTM
1. 门控循环单元 GRU
GRU和RNN的区别:
- GRU支持对隐状态的门控。模型有专门的机制来决定何时更新隐状态,何时重置隐状态
- GRU的数值稳定性更强,能够处理更长的文本
- GRU的功能是LSTM的变种,两者功能类似
重置门 (reset gate)
,更新门 (update gate)
:这两个门和隐状态的形状相同,因此GRU的可学习参数是RNN的3倍。
其中,
候选隐状态 (candidate hidden state)
:由重置门
其中,
接近1时,类似于普通的RNN 接近0时, 是以 为输入的多层感知机的结果。先前的隐状态被重置为默认值。
隐状态
接近1时,模型倾向于保留就状态,从而忽略 的信息 接近0时,新的隐状态 接近候选状态
# 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
其中,
候选记忆元
记忆元
- 遗忘门
控制保留过去多少的记忆元 - 输入门
控制采用多少来自 的新数据
隐状态
- tanh函数保证了
始终在(-1, 1)内,防止梯度爆炸 - 输出门
接近1时,能够将所有记忆传递给预测部分 - 输出门
接近0时,只保留记忆元内的信息,而不更新隐状态
综上所述:
- LSTM中有3种门:遗忘门、输入门、输出门
- LSTM的隐藏层输出包括:
- 隐状态H:会传递到输出层
- 记忆元C:属于内部信息
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律