用Matlab进行神经人工训练的解释梯度和性能结果

时间:2018-06-24 20:12:37

标签: matlab neural-network gradient-descent

我正在Matlab中训练神经网络,但在理解获得的结果时遇到了一些麻烦。

例如,Matlab在nntraintool中表示在训练阶段获得的Performance和Gradient值。

如果我理解得很好,我们希望性能尽可能小,即性能值应接近net.trainParam.goal = 0.001参数。

但是,我不知道如何解释梯度值。我们想要最小或最大的价值?

假设一个MLP网络具有20个神经元的隐藏层(场景1.a)。数据集是 甲状腺数据集。代码如下:

[InputData,TargetData] = thyroid_dataset;

net = newff(InputData,TargetData,20 ,{'logsig' 'tansig'},'traingd');

net.trainParam.epochs=20000;
net.trainParam.goal=0.001;
net.trainParam.lr=0.05;
net.divideParam.trainRatio=0.7;
net.divideParam.valRatio=0;
net.divideParam.testRatio=0.3;

[net,tr] = train(net,InputData,TargetData);

OutputData = net(InputData);
errors = gsubtract(TargetData, OutputData);
performance = perform(net, TargetData, OutputData);

还假定添加了一个新的具有20个神经元的隐藏层,因此新的MLP为(场景1.b):

net = newff(InputData,TargetData,[20 20],{'logsig' 'logsig' 'tansig'},'traingd');

然后,我同时运行了两种情况,并获得了以下结果:

 Scenario 1.a
 Gradient: 0.00111 / Performance: 0.00443 / Epoch: 20000


 Scenario 1.b
 Gradient: 0.00070 / Performance: 0.04460 / Epoch: 20000

哪种情况最好?

现在,让我们假设学习算法已更改。在方案2.a中,我们有Levenberg-Marquardt,在方案2.b中,我们是具有自适应学习率反向传播的梯度下降。

结果是:

Scenario 2.a
Gradient: 3.14e-08 / Performance: 0.00205 / Epoch: 174


 Scenario 2.b
 Gradient: 3.08e-08 / Performance: 0.04580 / Epoch: 212

在方案2.a和2.b中,世代比在方案1.a和1.b中小得多。而且,梯度也较小。

这是什么意思?

方案2.a和2.b优于1.a和1.b?还是不?

谢谢!

1 个答案:

答案 0 :(得分:0)

用于训练神经网络的梯度方法是基于梯度的。

这是什么意思?这些方法使用梯度在解空间中移动。当它们在解空间中移动时,它们的值将改变,因为解空间中每个点的梯度都不同。

梯度与性能之间有任何关系。