LSTM//循环神经网络的个人理解

[TOP] LSTM/循环神经网络的理解

前言自省:

  • 作为一名已经研究深度学习网络多年的研究员,虽曾多次浅尝LSTM这种网络,但是都没有花时间对其进行深刻解读。
  • 本文只谈对LSTM在逻辑思想上的理解,不进行技术解析。

1. 经典LSTM原理图

在这里插入图片描述
这里边涉及“遗忘门”、“记忆门”、“输出门”,具体解析可以参考:

  1. 【知乎】LSTM - 长短期记忆递归神经网络

  2. “Understanding LSTM Networks.” Understanding LSTM Networks – Colah’s Blog

2. “长短时”记忆关于时间概念的理解

因为在pytorch里边,LSTM网络需要先定义输入的维度尺寸。
见下方代码,可以看到:

  • LSTM网络在没有预给定隐藏层状态 hidden时(A处)
    lstm在输出中包含隐藏层的状态,即hidden。可以看到这个hidden的维度和batch有关,而和seq_len无关。这不禁疑问,
  • 如此,在预定义隐藏层状态时(B处)
    定义的矩阵岂不是需要batch的信息。会略微麻烦。因为,一般地,我们都希望batch的信息和网络没有关系。
lstm = nn.LSTM(10, 20, 6, batch_first=True) # input_len, hidden_size, num_layers

x = torch.ones([2, 3, 10])  # [batch, seq_len, input_len]
y, hidden = lstm(x, )  # A
print(y.shape)
print('hidden:', hidden[0].shape, hidden[1].shape , len(hidden))
# >> torch.Size([6, 2, 20]) torch.Size([6, 2, 20]) 2
y, hidden = lstm(x, hidden)  # B
print(y.shape)
print('hidden:', hidden[0].shape, hidden[1].shape , len(hidden))
# >> torch.Size([6, 2, 20]) torch.Size([6, 2, 20]) 2

初理解: [LSTM最初是用于语义理解,即,解读文本预测与生成]
假如:

  • 每个句子长度为3,即有3个词/字。 ===> seq_len = 3
  • 每次输入网络的有2个句子。 ===> batch = 2
  • 所有使用的词/字种类为10种,即词向量维度为10。 ===> input_len=10

那么

  • 网络会依次读取这2个句子的第一个词,第二个词……
  • 循环3次(seq_len)次后结束

这里
循环的思想在于

LSTM会逐字读取

  • x_{t-1} 为句子中的上一个词,x_{t}为当前词;所以,每个词都会考虑到上一个词的影响

LSTM 句子间的关联

  • 按股票预测的案例(seq_len=1),每个batch内对于一个时间区内的 batch个时刻。每个时刻前后是有关联的,即,长短时记忆能力。
  • 因为hidden是可以选择保存到下一个batch使用的,因此,长时间记忆的功能在此体现。

但,说实话,一个batch内的时序关系,体现不是很明显。从hidden参数来看,它们共用一个矩阵,这更像是cnn的整体考量,而不是有时序关系的逐一考量。

自我感觉,本文对LSTM的体悟纯正一定的缺漏和不足,请读者海涵!

这里,还请大佬批评指正,谢谢!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

biao169

创作不易,感谢您的支持,谢谢~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值