2017-01-01 46 views
0

我在Matlab中查看(双层)前馈神经网络。我正在调查可以最小化分类错误的参数。神经网络参数选择

一个google search表明,这些是其中的一些:

  • 隐藏层
  • 学习率
  • 动量
  • 培训类型
  • 大纪元
  • 误差最小的神经元数目
  • 其他建议?

我已经改变了Matlab中隐藏的神经元的数量,将其从1变为10.我发现分类错误接近0%,1隐藏的神经元,然后随着神经元的数量增长得非常轻微增加。我的问题是:不应该有更多隐藏的神经元保证有相同或更好的答案,也就是说为什么分类错误会与更多隐藏的神经元一起出现?

另外,如何改变Matlab中的学习速率,动量,训练类型,时间和最小误差?

非常感谢

+0

你在找什么类型的神经网络?说前馈网络?或者是其他东西? –

+1

补充说明:双层前馈NN –

回答

1

既然你正在考虑一个简单的两层前馈网络,并已经指出,你需要考虑降低分类错误6分不同的东西,我只是想的只有一件事补充,那就是量的训练数据。如果你训练一个有更多数据的神经网络,它会更好。请注意,使用大量数据进行训练是从神经网络,特别是深度神经网络获得良好结果的关键。

为什么分类错误会随着更多的隐藏神经元而增加?

答案很简单。您的模型过度拟合了训练数据,从而导致性能不佳。请注意,如果增加隐藏层中的神经元数量,则会减少训练错误,但会增加测试错误。

在下图中,看看增加隐藏层大小会发生什么!

enter image description here

我怎么可能会有所不同学习速率,动量,培训类型,时代化最小Matlab中的错误?

我期待你已经在Matlab中看到feed forward neural net。您只需要操作功能feedforwardnet(hiddenSizes,trainFcn)的第二个参数,即trainFcn - 一种训练功能。例如,如果要使用动量和自适应学习率反向传播使用梯度下降,则使用traingdx作为训练函数。如果您想使用梯度下降和自适应学习速率反向传播,也可以使用traingda

您可以根据需要更改该功能的所有必需参数。例如,如果你想使用traingda,那么你只需要遵循以下两个步骤。

  • 设置net.trainFcntraingda。这将net.trainParam设置为traingda的默认参数。

  • net.trainParam属性设置为期望的值。

net = feedforwardnet(3,'traingda'); 
net.trainParam.lr = 0.05; % setting the learning rate to 5% 
net.trainParam.epochs = 2000 % setting number of epochs 

请参阅本 - gradient descent with adaptive learning rate backpropagationgradient descent with momentum and adaptive learning rate backpropagation