序贯神经网络

时间:2013-09-17 17:13:48

标签: r machine-learning neural-network nnet

我正在尝试将神经网络构建为生成模型,以预测一系列向量之后的下一个向量(每个向量是实际长度n的分布)。

我的想法是采用k之前的序列并将它们连接起来,以获得k x n输入向量。为了训练模型,我将序列中的下一个向量作为输出。当我在寻找非确定性输出时,我将使用低梯度的sigmoid激活函数。

这个程序看起来合理吗?

希望如此,我尝试使用nnetneuralnet库在R中实现它,但是我遇到的文档和示例似乎输入和输出向量必须是长度相同。在这两个模块中训练不同长度的输入/输出向量的语法是什么?

我的输入矢量样本是:

      [,1]      
 [1,] 0         
 [2,] 0         
 [3,] 0.6       
 [4,] 0.4       
 [5,] 0         
 [6,] 0         
 [7,] 0.06666667
 [8,] 0.6666667 
 [9,] 0         
[10,] 0.2666667 
[11,] 0         
[12,] 0.4       
[13,] 0         
[14,] 0         
[15,] 0.6       

输出矢量:

      [,1]    
 [1,] 0         
 [2,] 0         
 [3,] 0.8571429 
 [4,] 0         
 [5,] 0.1428571 

N.B。上面的示例包含n=5k=3,但我的实际数据集有n~200。在这两种情况下,将各个向量标准化为1。

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:2)

一般来说,这是一种非常简单和天真的方法,相反不会产生好的结果。您正在尝试执行从时间序列集到时间序列的回归,将所有内容视为简单属性和简单模型。关于时间序列预测已有数千篇论文/研究,代表时间依赖性等。你在这里面临着一种难以预测的问题,找到好的解决方案需要大量的工作,而且提出的模型很少有机会运作良好

从您的文字中我推断,您实际上有一系列时间序列,而对于“时间窗口”[t-k,t-k+1,..,t-1],您希望预测t中的值(时间序列)。如果这是真的,则这是实际时间序列预测问题,其中每个属性本身是时间序列,并且可以在此使用所有时间序列相关技术,例如递归神经网络(如果您真的喜欢NN)或条件RBM(如果你真的想要一个非确定性的生成模型 - 因为它们近年来已成功应用于时间序列预测)。

现在很少有其他疑惑:

  

当我正在寻找非确定性输出时,我将使用sigmoid激活函数

Sigmoid激活功能不是非确定性。如果您正在寻找非确定性模型,您应该考虑一些RBM等架构,但正如@Ben Allison在评论中提到的那样,传统神经网络也可以通过一些简单的修改以概率方式使用。

  

低梯度。

低渐变是什么意思?你的激活函数有一个小斜率?在简单的训练程序(如BP算法)的情况下,这将导致有问题的学习

  

[DATA]

您的数据看起来像是对每个时间序列进行了标准化,因此它总和为1,这是神经网络中数据范数化的一种非常流行的方法(您更喜欢按列标准化数据,因此每个维度都是标准化的,而不是每个样品)。

  

标题

您的问题和模型不是“顺序”,并且不包括“变化的矢量长度”,寻找有关此类现象的论文不会引导您回答您的问题。