×

PyTorch教程之长短期记忆(LSTM)

消耗积分:0 | 格式:pdf | 大小:0.59 MB | 2023-06-05

李艺银

分享资料个

在使用反向传播(Elman,1990训练第一个 Elman 式 RNN 后不久,学习长期依赖性(由于梯度消失和爆炸)的问题变得突出,Bengio 和 Hochreiter 讨论了这个问题 Bengio等人, 1994 年Hochreiter等人,2001 年. Hochreiter 早在他 1991 年的硕士论文中就阐明了这个问题,尽管结果并不广为人知,因为论文是用德语写的。虽然梯度裁剪有助于梯度爆炸,但处理消失的梯度似乎需要更精细的解决方案。Hochreiter 和 Schmidhuber ( 1997 )提出的长短期记忆 (LSTM) 模型是解决梯度消失问题的第一个也是最成功的技术之一LSTM 类似于标准的递归神经网络,但这里每个普通的递归节点都被一个记忆单元取代每个存储单元包含一个内部状态,即具有固定权重 1 的自连接循环边的节点,确保梯度可以跨越多个时间步而不会消失或爆炸。

“长短期记忆”一词来自以下直觉。简单的递归神经网络具有权重形式的长期记忆。权重在训练过程中缓慢变化,对数据的一般知识进行编码。它们还具有短暂激活形式的短期记忆,从每个节点传递到连续的节点。LSTM 模型通过记忆单元引入了一种中间类型的存储。存储单元是一个复合单元,由具有特定连接模式的较简单节点构成,并包含新的乘法节点。

import torch
from torch import nn
from d2l import torch as d2l
from mxnet import np, npx
from mxnet.gluon import rnn
from d2l import mxnet as d2l

npx.set_np()
import jax
from flax import linen as nn
from jax import numpy as jnp
from d2l import jax as d2l
import tensorflow as tf
from d2l import tensorflow as d2l

10.1.1。门控存储单元

每个存储单元都配备了一个内部状态和多个乘法门,用于确定 (i) 给定的输入是否应该影响内部状态(输入),(ii) 内部状态是否应该被刷新到0遗忘门),以及 (iii) 应该允许给定神经元的内部状态影响细胞的输出(输出)。

10.1.1.1。门控隐藏状态

普通 RNN 和 LSTM 之间的主要区别在于后者支持隐藏状态的门控。这意味着我们有专门的机制来确定何时应该更新隐藏状态以及何时应该重置它。这些机制是学习的,它们解决了上面列出的问题。例如,如果第一个标记非常重要,我们将学习在第一次观察后不更新隐藏状态。同样,我们将学会跳过不相关的临时观察。最后,我们将学习在需要时重置潜在状态。我们将在下面详细讨论。

10.1.1.2。输入门、遗忘门和输出门

进入 LSTM 门的数据是当前时间步的输入和前一时间步的隐藏状态,如图 10.1.1所示。三个具有 sigmoid 激活函数的全连接层计算输入门、遗忘门和输出门的值。作为 sigmoid 激活的结果,三个门的所有值都在范围内(0,1). 此外,我们需要一个 输入节点,通常使用tanh激活函数计算直观上,输入门决定了输入节点的多少值应该添加到当前存储单元的内部状态。遗忘 决定是保留内存的当前值还是刷新内存。输出门决定了记忆单元是否应该影响当前时间步的输出。

https://file.elecfans.com/web2/M00/AA/42/pYYBAGR9NtSAf5ABAAHthNZ6P7E558.svg

图 10.1.1计算 LSTM 模型中的输入门、遗忘门和输出门。

在数学上,假设有h隐藏单元,批量大小为n,输入的数量是d. 因此,输入是Xt∈Rn×d上一个时间步的隐藏状态是 Ht−1∈Rn×h. 相应地,时间步长的门t定义如下:输入门是It∈Rn×h, 遗忘门是 Ft∈Rn×h,输出门是 Ot∈Rn×h. 它们的计算方式如下:

(10.1.1)It=σ(XtWxi+Ht−1Whi+bi),Ft=σ(XtWxf+Ht−1Whf+bf),Ot=σ(XtWxo+Ht−1Who+bo),

在哪里

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

评论(0)
发评论

下载排行榜

全部0条评论

快来发表一下你的评论吧 !