理解LSTM

如何从RNN起步,一步一步通俗理解LSTM
Understanding LSTM Networks
LSTM-from-scratch-in-Pytorch
LSTM Neural Network from Scratch
Implementing a LSTM from scratch with Numpy

这张图就是最常见的LSTM结构图,但是隐藏了很多细节。下面这张图是一个LSTM模块的细节放大图:

图中:

  • 绿色的是长期记忆 long-term memory;

  • 玫瑰红色?的是短期记忆 short term memory;

  • 灰色的线是当前的输入x;

  • 每个蓝色的方框代表sigmoid函数,输出值在 0 到 1 之间,作为权重,控制信息的流动;

  • 每个橘色的方框代表tanh函数,输出值在 -1 到 1 之间,更好的编码信息,并且保持数据的中心化;

  • 第一个浅蓝色的虚线框,代表记忆门或遗忘门 ,一体两面,都是一回事,给重要的需要记忆的高权重,给不重要的需要忘记的低权重。用来计算长期记忆中如何向下一步传递信息。公式中x是当前输入,h是短期记忆,c是长期记忆。

  • 第二个浅绿色的虚线框,是输入门 ,是当前要加入到长期记忆中的信息的权重,

  • 第三个浅黄色虚线框,是当前需要加入到长期记忆中的信息,包括短期记忆和当前输入,和权重相乘后加入到长期记忆中。

  • 第四个浅紫色的虚线框,是输出门 ,是当前处理过的长期记忆(update long-term memory)中要输出的信息的权重。

  • 第五个浅红色虚线框,是当前处理过的长期记忆(update long-term memory)经过tanh激活后,变为当前潜在要输出的短期记忆,乘以前一个输出的权重,得到新的短期记忆输出。

一个完整的计算过程 ,pytorch中的LSTM函数。

总结:

  1. 长期记忆要经过记忆门(乘以权重),决定要传播的信息;
  2. 短期记忆以及当前输入,要经过激活,再经过输入门(乘以权重),决定要加入到长期记忆中传播的信息;
  3. 经过了前两步的长期记忆,经过激活,再经过输出门(乘以权重),得到最终的短期记忆输出;
  4. 每个门,也就是权重,输入都包括短期记忆和当前输入两部分,使用sigmoid函数激活;
  5. 每个加入的信息,使用tanh函数激活。
python 复制代码
import torch
import torch.nn as nn

rnn = nn.LSTM(input_size=10, hidden_size=20, num_layers=2)
#默认batch_first=False,所以输入是(length,batch_size,input_size)
input = torch.randn(5, 3, 10)
#短期记忆,(num_layers,batch_size,hidden_size)
h0 = torch.randn(2, 3, 20)
#长期记忆,(num_layers,batch_size,hidden_size)
c0 = torch.randn(2, 3, 20)
output, (hn, cn) = rnn(input, (h0, c0))
#输出,(length,batch_size,hidden_size)
output.shape
#torch.Size([5, 3, 20])
相关推荐
小天努力学java21 分钟前
AI赋能传统系统:Spring AI Alibaba如何用大模型重构机票预订系统?
人工智能·spring
Fuweizn39 分钟前
在工业生产中,物料搬运环节至关重要,搬运机器人开启新篇章
人工智能·智能机器人·复合机器人
技术员阿伟1 小时前
《AI赋能星际探索:机器人如何开启宇宙新征程!》
人工智能
AL.千灯学长2 小时前
DeepSeek接入Siri(已升级支持苹果手表)完整版硅基流动DeepSeek-R1部署
人工智能·gpt·ios·ai·苹果vision pro
LCG元3 小时前
大模型驱动的围术期质控系统全面解析与应用探索
人工智能
lihuayong3 小时前
计算机视觉:主流数据集整理
人工智能·计算机视觉·mnist数据集·coco数据集·图像数据集·cifar-10数据集·imagenet数据集
政安晨3 小时前
政安晨【零基础玩转各类开源AI项目】DeepSeek 多模态大模型Janus-Pro-7B,本地部署!支持图像识别和图像生成
人工智能·大模型·多模态·deepseek·janus-pro-7b
一ge科研小菜鸡3 小时前
DeepSeek 与后端开发:AI 赋能云端架构与智能化服务
人工智能·云原生
冰 河3 小时前
‌最新版DeepSeek保姆级安装教程:本地部署+避坑指南
人工智能·程序员·openai·deepseek·冰河大模型
维维180-3121-14553 小时前
AI赋能生态学暨“ChatGPT+”多技术融合在生态系统服务中的实践技术应用与论文撰写
人工智能·chatgpt