【问题标题】:Interpreting gradient and performance results in neural artificial networks trainning with Matlab用 Matlab 解释神经人工网络训练中的梯度和性能结果
【发布时间】:2018-12-03 10:41:01
【问题描述】:

我正在 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?还是不行?

谢谢!

【问题讨论】:

    标签: matlab neural-network gradient-descent


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2020-01-31
      • 1970-01-01
      • 2013-04-27
      • 1970-01-01
      • 2010-11-20
      • 1970-01-01
      • 2015-08-13
      • 2015-07-11
      • 2012-12-04
      相关资源
      最近更新 更多