每次运行时,不同大小的训练和测试数据对神经网络的预测准确性是否有所不同

时间:2016-06-25 13:56:59

标签: matlab neural-network

我有一个函数y=(x1)^2 + 2*(x2 )+(x3 )+ 3*(x4)^3,我必须预测它的值。所以输入层有4个输入,输出层有1个隐藏层和2个节点。如果[1 0]为正数,则默认输出为y;如果[0 1]为负数,则输出为y

输入介于01之间,权重介于-11之间。 Alpha为0.01,阈值为0.005

当我训练200个例子的数据时,我得到94%的训练数据和86%的测试数据(隐藏层中的4个节点)。

我在250个示例的训练集上获得90.2%的准确率,在测试数据上获得96%的准确率。并且再次运行相同的程序会在训练和测试数据上产生不同的准确性(由于随机权重)。

所以现在你可以建议我如何才能提高准确度达到98% - 100%。

1 个答案:

答案 0 :(得分:0)

要提高性能和收敛速度,请在动量更新中添加动量项。该术语减少了梯度下降期间的振荡,并且可以导致梯度下降以超出局部最小值。发生这种情况是因为如果梯度下降到达类似高原的结构,则梯度变得非常小并且算法可能会停止。

由于动量项将最近的权重更新与当前更新的alpha(与学习率不同)相加,因此能够超越此类平台。

enter image description here

来源:https://page.mi.fu-berlin.de/rojas/neural/neuron.pdf

我不知道您的培训程序,但您可以按如下方式培训您的网络:

将所有训练数据输入网络。然后验证测试数据的结果。执行此操作直到在时间t运行的验证结果几乎等于t-1的结果,因此测试数据的错误将停止下降。