pytorch-LSTM

目录

  • [1. RNN存在的问题](#1. RNN存在的问题)
  • [2. LSTM的由来](#2. LSTM的由来)
  • [3. LSTM门](#3. LSTM门)
    • [3.1 遗忘门](#3.1 遗忘门)
    • [3.2 输入门](#3.2 输入门)
    • [3.3 输出门](#3.3 输出门)
  • [4. LSTM是如何减轻梯度弥散问题](#4. LSTM是如何减轻梯度弥散问题)

1. RNN存在的问题

如下图:RNN能满足预测下一个单词,但是对于获取更多的上下文信息就做不到了。

2. LSTM的由来

RNN能做到短时记忆即short time memory,而LSTM相对RNN能够处理更长的时间序列,因此被称为LSTM即long short time memory

RNN有一串重复的模块,这些模块使用统一的权重Whh和Wih

LSTM也有一连串的类似结构,但是重复模块是不同的结构,它用四个单层的神经网络替代,并以指定的方式相互作用。它有三个门,分别是遗忘门、输入门和输出门。

3. LSTM门

门是一种信息过滤方式,他们由sigmod函数和点乘操作组成,sigmod范围是0~1,因此通过sigmod函数可以控制输出。

3.1 遗忘门

遗忘门ft是ht-1和xt经过一系列运算,再经过sigmod函数得到的

3.2 输入门

输入门由两部分组成,一个是it输入门层,它是通过ht-1和xt经过一系列运算,再经过sigmod函数得到的。

另一个是新的输入Ct',这里没有直接使用xt作为输入,而是通过ht-1和xt经过一系列运算,再经过tanh函数得到新的输入Ct'。

最后输出Ct = ft*Ct-1 + it*Ct'

3.3 输出门

输出门ot也是通过ht-1和xt经过一系列运算,再经过sigmod函数得到的。

最后的输出ht = ot*tanh(Ct)
注意:LSTM中ht已经不是memory了,而是输出,Ct才是memory

可以看出每个门的运算都与ht-1和xt相关,并且通过sigmod函数来控制门的开度,最后的输出ht使用了tanh

输入们和遗忘门门的组合,会得到不同的值,如下图:

4. LSTM是如何减轻梯度弥散问题

从梯度计算公式可以知道,RNN的梯度中有Whh的累乘,当Whh<1时,就可能出现梯度弥散,而LSTM梯度由几项累加得到,即使W很小也很难出现梯度弥散。

相关推荐
承渊政道14 小时前
【从零开始大模型开发与微调:基于PyTorch与ChatGLM】(从ChatGLM本地化到LoRA、PEFT的高级微调)
android·人工智能·pytorch·chatglm·本地化部署·大模型开发与微调
Smoothcloud润云17 小时前
GPU算力平台推荐:新手租GPU时,镜像环境和显存应该怎么选?
大数据·人工智能·pytorch·分布式·深度学习·gpu算力
田里的水稻2 天前
PyTorch_TensorBoard展示
人工智能·pytorch·python·深度学习·神经网络
想七想八不如114082 天前
元学习简单入门
人工智能·pytorch·python·深度学习·学习·机器学习
田里的水稻2 天前
PyTorch_torchvision---数据集下载\TensorBoard可视化
人工智能·pytorch·python·深度学习·机器学习
智恒百亿2 天前
5090 八卡服务器踩坑实录:架构、多卡通信、PyTorch Distributed 一次说清楚
服务器·pytorch·架构
田里的水稻2 天前
PyTorch-Dataset\DataLoader数据加载
人工智能·pytorch·python
智码看视界2 天前
深度学习:环境搭建PyTorch vs TensorFlow 选型
pytorch·深度学习·tensorflow·gpu·环境搭建·cuda·框架选型
论文复现现场2 天前
InfiniteTalk 需要多少显存?RTX 3090 24GB 单卡如何验证 480P、排查 OOM
pytorch·模型部署·ai视频生成·显存优化·infinitetalk·rtx3090·cuda oom
Zip-List2 天前
工作小记-pytorch的算子优化: 转gpu核函数 python调c
c语言·c++·pytorch·python·cuda