降低RRN预测中的噪声?

时间:2015-11-10 09:49:46

标签: machine-learning neural-network encog supervised-learning

使用Encog Machine Learning Framework,我创建了一个NN来识别简单的序列模式。以下是我的RNN的配置:

var elmanNetworkPattern = new ElmanPattern {ActivationFunction = new ActivationTANH(),InputNeurons = 6};
elmanNetworkPattern.AddHiddenLayer(6);
elmanNetworkPattern.OutputNeurons = 1;
IMLMethod elmanNetwork = elmanNetworkPattern.Generate();

以下是培训数据集:

a   b   c   d   e   f   output
-----------------------------------
1   2   3   4   5   6   7
1   2   3   4   5   6   8
1   2   3   4   5   6   9
1   2   3   4   5   6   10
1   2   3   4   5   6   12
1   2   3   4   5   6   13
1   2   3   4   5   6   86

按照以下标准进行标准化后,标准化的csv如下所示:

encoganalyst.Script.Normalize.NormalizedFields[i].NormalizedHigh = 1;
encoganalyst.Script.Normalize.NormalizedFields[i].NormalizedLow = -1;
encoganalyst.Script.Normalize.NormalizedFields[i].ActualHigh = 100;
encoganalyst.Script.Normalize.NormalizedFields[i].ActualLow = 0;
encoganalyst.Script.Normalize.NormalizedFields[i].Action = NormalizationAction.Normalize;

a        b       c       d       e       f       output
-------------------------------------------------------------
-0.98   -0.96   -0.94   -0.92   -0.9    -0.88   -0.86
-0.98   -0.96   -0.94   -0.92   -0.9    -0.88   -0.84
-0.98   -0.96   -0.94   -0.92   -0.9    -0.88   -0.82
-0.98   -0.96   -0.94   -0.92   -0.9    -0.88   -0.8
-0.98   -0.96   -0.94   -0.92   -0.9    -0.88   -0.76
-0.98   -0.96   -0.94   -0.92   -0.9    -0.88   -0.74
-0.98   -0.96   -0.94   -0.92   -0.9    -0.88   0.72

成功训练没有数据集中的最后一行时,当给定1到6之间的序列时,NN成功地产生7到13之间的平均值作为输出(即-0.79)。但是,在训练最后一行(其作用类似于噪声),序列预测变化并产生输出(即-0.19)。

我想要的是,由于数据集中有更多记录指向输出的范围为-0.74和-0.86,因此NN必须优先生成该范围内的输出。

有没有什么方法可以教会网络忽略数据集中的这种噪音,或者产生最接近所需可能范围的输出。

我正在查看本文here,他们从SOM向RNN提供输入以减少数据集中的噪音,但我无法找到在我的场景中实现它的方法。

0 个答案:

没有答案