我正在研究一个神经网络项目,其中数据具有非线性行为,在C#和Encog中实现。
我的主要目标是预测价值观。
我有一些数据(有限),比如大约300个数据集。 在这些数据集中,我已将数据拆分用于培训和验证。网络的输入是26个神经元,输出是25。 我对数据进行了标准化并完成了培训。
我的训练方法是ResilientPropagation,并试用了不同数量的隐藏层。
network.AddLayer(new BasicLayer(null, true, 26));
network.AddLayer(new BasicLayer(new ActivationLOG(), true, 50));
network.AddLayer(new BasicLayer(new ActivationTANH(), true, 50));
network.AddLayer(new BasicLayer(new ActivationLOG(), true, 50));
network.AddLayer(new BasicLayer(new ActivationTANH(), true, 50));
network.AddLayer(new BasicLayer(new ActivationLOG(), true, 50));
network.AddLayer(new BasicLayer(new ActivationTANH(), true, 50));
network.AddLayer(new BasicLayer(new ActivationLOG(), true, 50));
network.AddLayer(new BasicLayer(new ActivationTANH(), true, 50));
network.AddLayer(new BasicLayer(new ActivationLinear(), false, 25));
var train = new ResilientPropagation(network, foldedTrainingSet, 0.02, 10);
现在的问题是训练错误是200,验证错误太高了,就像2000或更多。
我曾尝试使用不同数量的图层和激活函数,例如Log,tanH和不同数量的隐藏神经元,但错误没有改善。
截至目前我的判断是,这个错误是由于数据集的限制(非线性行为)。
我的问题是,我是否可以通过使用一些不同的策略或激活功能或训练方法,使用当前数据集限制来改善我的网络中的非线性行为。