Questions tagged «rnn»

递归神经网络(RNN)是一类人工神经网络,其中单元之间的连接形成有向循环。

2
长短期记忆(LSTM)递归神经网络背后的直觉是什么?
循环神经网络(RNN)背后的想法对我很清楚。我以以下方式理解它:我们有一系列观察()(或换句话说,多元时间序列)。每个单个观测是一个维数值向量。在RNN模型中,我们假定下一个观测值是先前观测值以及先前的“隐藏状态”,其中隐藏状态也由数字表示向量(观察状态和隐藏状态的尺寸可以不同)。还假定隐藏状态本身取决于先前的观察和隐藏状态:o⃗ 1,o⃗ 2,…,o⃗ nØ→1个,Ø→2,…,Ø→ñ\vec o_1, \vec o_2, \dots, \vec o_no⃗ iØ→一世\vec o_iNñNo⃗ i+1Ø→一世+1个\vec o_{i+1}o⃗ iØ→一世\vec o_{i}h⃗ iH→一世\vec h_i Ø⃗ 一世,小时⃗ 一世= F(o⃗ i − 1,小时⃗ i − 1)Ø→一世,H→一世=F(Ø→一世-1个,H→一世-1个)\vec o_i, \vec h_i = F (\vec o_{i-1}, \vec h_{i-1}) 最后,在RNN模型中,函数FFF被假定为神经网络。我们使用可用数据(观察序列)训练(拟合)神经网络。我们训练的目标是能够使用先前的观察结果尽可能准确地预测下一个观察结果。 现在,LSTM网络是对RNN网络的修改。据我了解,LSTM背后的动机是解决RNN特有的短存储问题(常规RNN在相关事件之间存在时间间隔过长的问题)。 我了解LSTM网络是如何工作的。这是我发现的LSTM的最佳解释。基本思想如下: 除了隐藏状态向量之外,我们还引入了一种所谓的“单元状态”向量,该向量具有与隐藏状态向量(C⃗ 一世C→一世\vec c_i)相同的大小(维数)。我认为引入了“细胞状态”向量来建模长期记忆。与常规RNN一样,LSTM网络将观察到的和隐藏的状态作为输入。使用此输入,我们可以通过以下方式计算新的“单元状态”: C⃗ 我+ 1= ω⃗ 1个(o⃗ 一世,小时⃗ 一世)⋅ …

1
我应该使用什么损失函数来对seq2seq RNN模型进行评分?
我正在研究Cho 2014论文,该论文介绍了用于seq2seq建模的编码器-解码器体系结构。 在本文中,他们似乎使用给定输入(或负对数似然)的输出概率作为长度为M的输入和长度为N的输出y的损失函数:xxxMMMyyyNNN P(y1,…,yN|x1,…,xM)=P(y1|x1,…,xm)P(y2|y1,x1,…,xm)…P(yN|y1,…,yN−1,x1,…,xm)P(y1,…,yN|x1,…,xM)=P(y1|x1,…,xm)P(y2|y1,x1,…,xm)…P(yN|y1,…,yN−1,x1,…,xm)P(y_1, …, y_N | x_1, …, x_M) = P(y_1 | x_1, …, x_m) P(y_2 | y_1, x_1, …, x_m) \dots P(y_N | y_1, …, y_N-1, x_1, …, x_m) 但是,我认为将其用作损失函数会遇到一些问题: 似乎假设教师在训练期间是强迫的(即,不是使用解码器的位置猜测作为下一次迭代的输入,而是使用已知标记。 它不会惩罚长序列。由于概率是输出的到N,因此如果解码器生成更长的序列,则第一个N之后的所有内容都不会计入损失。111NNNNNN 如果模型预测字符串尽头的早期令牌,则损失函数仍需要步-这意味着我们将基于未经训练的模型“流形”生成输出。这似乎草率。NNN 这些顾虑是否有效?如果是这样,那么向更高级的损失功能迈进了吗?

1
具有L2正则化的RNN停止学习
我使用双向RNN来检测不平衡事件的发生。积极的阶层比消极的阶层少100倍。尽管不使用正则化,但我可以在训练集上获得100%的准确性,在验证集上获得30%的准确性。我启用了l2正则化,结果在训练集上的准确度也只有30%,而不是更长的学习,而在验证集上的准确度是100%。 我当时以为我的数据可能太小了,所以只是为了进行实验,我将训练集与以前未使用的测试集合并了。情况与我使用l2正则化的情况相同,而我现在没有。我在训练+测试和验证中获得了30%的准确性。 在提到的实验中使用128个隐藏单元和80个时间步长当我将隐藏单元的数量增加到256个时,我可以再次在Train + Test Set上过拟合以达到100%的准确性,但在验证组上仍然只有30%。 我确实为超参数尝试了很多选项,但几乎没有结果。可能是加权的交叉熵引起了问题,在给定的实验中,正类的权重为5。尝试更大的权重时,结果的准确性通常会降低20%左右。 我尝试了LSTM和GRU细胞,没有区别。 我得到的最好的结果。我尝试了2个具有256个隐藏单元的隐藏层,这花了大约3天的计算时间和8GB的GPU内存。在进行l2正则化时,我再次获得了40-50%的准确度,然后又开始过度拟合,但强度不高。 我使用的是Adam优化器,其他的则效果不佳。我拥有的功能就足够了,因为在使用状态机时,我可以获得90%的精度。在该状态机中,主要特征是基于其他特征属性进行求和和阈值处理,并且其可变长度有时为10,有时为20,涉及该特征的时间戳。 在这种情况下,有一些一般性准则可以做什么?我什么都找不到。

1
了解LSTM拓扑
和其他许多人一样,我发现这里和这里的资源对于理解LSTM单元非常有用。我确信我了解值是如何流动和更新的,并且我也有足够的信心添加上述“窥孔连接”等。 在我的示例中,每个时间步长都有一个输入向量length i和一个输出向量length in o,其中o < i。 这两页都没有真正涵盖的是如何安排和培训这些内容。 我有两个问题: 在我的训练数据中,我有很多输入/输出向量对,它们对应许多很多时间单位。假设我用所有数据训练LSTM。然后可以通过它运行任意长度的输入集吗?我的意思是,如果我有整个2015年和2016年的培训数据,那么我可以通过网络运行2017年的数据吗?还是从2017年到2020年? 根据我所读的内容,感觉每个时间单位都有一个LSTM单元,因此,如果我有很多时间单位,那么我会有许多链接的LSTM单元。由于链的长度取决于我要通过网络运行的数据的长度,并且大概是任意的,所以我看不到如何训练它,除非我只训练一个LSTM单元,然后将其复制为一个数字次。因此,似乎我将训练一个LSTM单元,然后n将它们链接在一起以获得给定长度的输入矢量列表n?即使单个LSTM单元包含许多元素和功能,也感觉不足以在这么小的事物中捕获这么多的信息吗? 谢谢。我还有其他(相对较快)可以消耗的资源可以帮助我理解实施细节吗?上面的2个链接给出了正在发生的事情的高级概述,但未能捕获这些更详细的信息。
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.