Questions tagged «lstm»

长短期内存(LSTM)是一种神经网络体系结构,其中包含可记忆任意时间长度值的循环NN块。

4
LSTM如何防止消失的梯度问题?
LSTM是专门为避免梯度消失而发明的。可以假设使用恒定误差旋转木马(CEC)来做到这一点,在下图中(来自Greff等人)对应于细胞周围的回路。 (来源:deeplearning4j.org) 而且我知道该部分可以看作是一种身份函数,因此导数为1,并且梯度保持恒定。 我不明白的是它不会因其他激活功能而消失吗?输入,输出和忘记门使用S形,其导数最大为0.25,而g和h传统上为tanh。反向传播如何使梯度不消失?

5
了解LSTM单位与细胞
我学习LSTM已有一段时间了。我从较高的角度了解一切。但是,要使用Tensorflow实施它们,我注意到BasicLSTMCell需要许多单位(即num_units)参数。 从这个 LSTMs的非常详尽的解释,我已经收集单个LSTM单元是以下情况之一 实际上是GRU单位 我假设参数num_units的BasicLSTMCell指的是我们要多少,这些在层挂钩到对方。 这就提出了问题-在这种情况下什么是“单元”?“单元”是否等效于普通前馈神经网络中的一层?

1
训练损失再次上升和下降。怎么了?
我的训练损失下降,然后又上升。这很奇怪。交叉验证损失跟踪训练损失。到底是怎么回事? 我有两个堆叠的LSTMS,如下所示(在Keras上): model = Sequential() model.add(LSTM(512, return_sequences=True, input_shape=(len(X[0]), len(nd.char_indices)))) model.add(Dropout(0.2)) model.add(LSTM(512, return_sequences=False)) model.add(Dropout(0.2)) model.add(Dense(len(nd.categories))) model.add(Activation('sigmoid')) model.compile(loss='binary_crossentropy', optimizer='adadelta') 我训练了100个纪元: model.fit(X_train, np.array(y_train), batch_size=1024, nb_epoch=100, validation_split=0.2) 训练127803个样本,验证31951个样本 这就是损失的样子:

3
堆叠多个LSTM有什么优势?
有什么优势,为什么一个人在深度网络中使用多个并排堆叠的LSTM?我正在使用LSTM将一系列输入表示为单个输入。因此,一旦有了这种单一表示形式,为什么还要再次通过呢? 我之所以这样问是因为我在自然语言生成程序中看到了这一点。

1
注意力机制到底是什么?
在过去的几年中,各种深度学习论文都使用了注意力机制。Open AI研究负责人Ilya Sutskever热情地称赞了他们:https ://towardsdatascience.com/the-fall-of-rnn-lstm-2d1594c74ce0 普渡大学的Eugenio Culurciello声称应该放弃RNN和LSTM,而转而使用纯粹基于注意力的神经网络: https://towardsdatascience.com/the-fall-of-rnn-lstm-2d1594c74ce0 这似乎有点夸张,但不可否认的是,纯粹基于注意力的模型在序列建模任务中做得很好:我们都知道Google恰当命名的论文,Attention是您所需要的 但是,基于注意力的模型到底是什么?我还没有找到关于此类模型的清晰说明。假设我要根据给定的历史值来预测多元时间序列的新值。很清楚如何使用具有LSTM单元的RNN来做到这一点。对于基于注意力的模型,我该怎么做?

3
使用Keras了解LSTM中的input_shape参数
我正在尝试使用Keras文档中描述的名为“用于序列分类的堆叠式LSTM” 的示例(请参见下面的代码),并且无法input_shape在我的数据上下文中找出参数。 我输入了一个由25个可能的字符组成的序列矩阵,以整数编码为最大长度为31的填充序列。因此,my x_train具有形状(1085420, 31)含义(n_observations, sequence_length)。 from keras.models import Sequential from keras.layers import LSTM, Dense import numpy as np data_dim = 16 timesteps = 8 num_classes = 10 # expected input data shape: (batch_size, timesteps, data_dim) model = Sequential() model.add(LSTM(32, return_sequences=True, input_shape=(timesteps, data_dim))) # returns a sequence of vectors of …
20 lstm  keras  shape  dimensions 

3
为什么RNN / LSTM网络的权重会随时间共享?
我最近对LSTM产生了兴趣,当得知权重在时间上共享时,我感到很惊讶。 我知道,如果您跨时间共享权重,那么您的输入时间序列可以是可变长度。 使用共享权重,您需要训练的参数要少得多。 根据我的理解,之所以转向LSTM而不是其他学习方法,是因为您认为想要学习的数据中存在某种时间/顺序结构/依赖性。如果您牺牲了可变长度的“奢侈”,并接受了较长的计算时间,那么没有共享权重的RNN / LSTM会不会表现得更好(或者在每个时间步中您都有不同的权重),或者我缺少什么?

4
反馈RNN与LSTM / GRU之间的差异
我试图理解要应用于时间序列数据的不同的递归神经网络(RNN)架构,并且对描述RNN时经常使用的不同名称感到有些困惑。长期短期记忆(LSTM)和门控循环单元(GRU)的结构是否实质上是带有反馈回路的RNN?

2
哪种优化方法最适合LSTM?
我一直在使用theano来试验LSTM,并且想知道哪种优化方法(SGD,Adagrad,Adadelta,RMSprop,Adam等)最适合LSTM?是否有关于该主题的研究论文? 另外,答案是否取决于我使用LSTM的应用程序类型?如果是这样,我正在使用LSTM进行文本分类(首先将文本转换为单词向量)。 最后,对于RNN,答案是相同还是不同?任何指向研究论文或个人见解的指针将不胜感激! LSTM似乎很强大,我有兴趣学习更多有关如何最好地使用它们的知识。

3
使用RNN(LSTM)预测时间序列向量(Theano)
我有一个非常简单的问题,但找不到合适的工具来解决。 我有一些长度相同的向量序列。现在,我想在这些序列的训练样本上训练LSTM RNN,然后使其基于几个启动向量来预测长度为的向量的新序列。ññn 我找不到能做到这一点的简单实现。我的基本语言是Python,但是任何几天都不会安装的东西都可以使用。 我尝试使用Lasagne,但是RNN的实现尚未准备好,并且在nntools单独的软件包中。无论如何,我尝试了后者,但是我不知道如何训练它,然后通过一些测试向量对其进行填充,并让它预测新的。块是同样的问题-尽管似乎有些类和函数可以工作(例如blocks.bricks.recurrent),但是LSTM RNN没有可用的文档。 有在Theano,像几个实施RNN LSTM的GroundHog,theano-rnn,theano_lstm和一些文件的代码,但非那些与教程或指导怎么做我想做的。 我发现的唯一可用解决方案是使用Pybrain。但是不幸的是,它缺少Theano的功能(主要是GPU计算),并且是孤立的(没有新功能和支持)。 有谁知道我在哪里可以找到我想要的东西?使用RNN LSTM易于预测载体序列吗? 编辑: 我像这样尝试了Keras: from keras.models import Sequential from keras.layers.core import Dense, Dropout, Activation from keras.layers.embeddings import Embedding from keras.layers.recurrent import LSTM model = Sequential() model.add(Embedding(12, 256)) model.regularizers = [] model(LSTM(256, 128, activation='sigmoid', inner_activation='hard_sigmoid')) model.add(Dropout(0.5)) model.add(Dense(128, 12)) model.add(Activation('sigmoid')) model.compile(loss='mean_squared_error', optimizer='rmsprop') 但是我在尝试适应它时遇到此错误 …

3
神经网络中样本,时间步长和特征之间的差异
我正在浏览LSTM神经网络上的以下博客:http : //machinelearningmastery.com/understanding-stateful-lstm-recurrent-neural-networks-python-keras/ 作者针对LSTM的不同配置将输入向量X重塑为[样本,时间步长,特征]。 作者写道 实际上,字母序列是一个特征的时间步长,而不是单独特征的一个时间步长。我们为网络提供了更多的上下文,但是没有像预期的那样提供更多的顺序 这是什么意思?

1
RNN建模的可行序列长度是多少?
我正在研究使用递归神经网络(RNN)的LSTM(长期短期记忆)版本对时间序列数据进行建模。随着数据序列长度的增加,网络的复杂性也随之增加。因此,我很好奇准确建模的序列长度是多少? 我想使用相对简单的LSTM版本,而又不难实施最新技术。我的时间序列中的每个观测值可能都有4个数字变量,观测值的数量在100.000到1.000.000之间。

1
RNN:什么时候应用BPTT和/或更新权重?
我正在尝试通过Graves于2005年发表的有关音素分类的论文来理解RNN在序列标记上的高级应用。 总结问题:我们有一个庞大的训练集,包括(输入)单个句子的音频文件和(输出)专家标记的各个音素的开始时间,停止时间和标签(包括一些“特殊”音素,例如静默,以便每个音频文件中的每个样本都标有一些音素符号。) 本文的重点是在隐藏层中应用带有LSTM存储单元的RNN。(他使用了几种变体和几种其他技术作为比较。为了使事情简单,我目前仅对单向LSTM感兴趣。) 我相信我了解网络的体系结构:对应于10毫秒音频文件窗口的输入层,以音频工作的标准方式进行了预处理;LSTM单元的隐藏层,以及对所有可能的61个电话符号进行一键编码的输出层。 我相信我了解通过LSTM单元的向前通过和向后通过的(复杂但直接)的方程式。它们只是微积分和链式规则。 在几次阅读本文和几篇类似文章之后,我不明白的是何时确切地应用反向传播算法,何时确切地更新神经元中的各种权重。 存在两种可能的方法: 1)逐帧反向传播和更新 Load a sentence. Divide into frames/timesteps. For each frame: - Apply forward step - Determine error function - Apply backpropagation to this frame's error - Update weights accordingly At end of sentence, reset memory load another sentence and continue. 要么, 2)逐句反向传播和更新: Load …
15 lstm  rnn 

1
防止在小数据集上过拟合LSTM
我正在对15000条推文进行建模,以使用具有128个隐藏单元的单层LSTM(使用类似于word2vec的表示形式,具有80个维度)来进行情感预测。1个纪元后,我获得了下降精度(38%,随机= 20%)。随着训练准确性的提高,更多的训练使验证准确性开始下降-这是过度拟合的明显标志。 因此,我正在考虑进行正则化的方法。我不希望减少隐藏单元的数量(128个似乎已经有点低了)。我目前以50%的概率使用辍学率,但这可能会增加。优化器是Adam,具有Keras的默认参数(http://keras.io/optimizers/#adam)。 有什么有效的方法可以减少我的数据集对此模型的过度拟合?

1
如何训练深度网络的LSTM层
我正在使用lstm和前馈网络对文本进行分类。 我将文本转换为一键向量,然后将其输入到lstm中,这样我就可以将其总结为单个表示形式。然后,我将其馈送到另一个网络。 但是我如何训练LSTM?我只想按顺序对文本进行分类-是否应在未经培训的情况下进行输入?我只想将段落表示为单个项目,然后将其输入分类器的输入层。 我将不胜感激与此有关的任何建议! 更新: 所以我有一个lstm和一个分类器。我将lstm的所有输出并平均池化,然后将平均值输入分类器。 我的问题是我不知道如何训练lstm或分类器。我知道对于lstm的输入应该是什么,对于该输入的分类器的输出应该是什么。由于它们是两个单独的网络,它们只是按顺序激活的,因此我需要知道和不知道lstm的理想输出应该是什么,它也是分类器的输入。有没有办法做到这一点?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.