神经网络参数选择
我在Matlab中查看(双层)前馈神经网络。我正在调查可以最小化分类错误的参数。神经网络参数选择
一个google search表明,这些是其中的一些:
- 隐藏层
- 学习率
- 动量
- 培训类型
- 大纪元
- 误差最小的神经元数目
- 其他建议?
我已经改变了Matlab中隐藏的神经元的数量,将其从1变为10.我发现分类错误接近0%,1隐藏的神经元,然后随着神经元的数量增长得非常轻微增加。我的问题是:不应该有更多隐藏的神经元保证有相同或更好的答案,也就是说为什么分类错误会与更多隐藏的神经元一起出现?
另外,如何改变Matlab中的学习速率,动量,训练类型,时间和最小误差?
非常感谢
既然你正在考虑一个简单的两层前馈网络,并已经指出,你需要考虑降低分类错误6分不同的东西,我只是想的只有一件事补充,那就是量的训练数据。如果你训练一个有更多数据的神经网络,它会更好。请注意,使用大量数据进行训练是从神经网络,特别是深度神经网络获得良好结果的关键。
为什么分类错误会随着更多的隐藏神经元而增加?
答案很简单。您的模型过度拟合了训练数据,从而导致性能不佳。请注意,如果增加隐藏层中的神经元数量,则会减少训练错误,但会增加测试错误。
在下图中,看看增加隐藏层大小会发生什么!
我怎么可能会有所不同学习速率,动量,培训类型,时代化最小Matlab中的错误?
我期待你已经在Matlab中看到feed forward neural net。您只需要操作功能feedforwardnet(hiddenSizes,trainFcn)
的第二个参数,即trainFcn
- 一种训练功能。例如,如果要使用动量和自适应学习率反向传播使用梯度下降,则使用traingdx
作为训练函数。如果您想使用梯度下降和自适应学习速率反向传播,也可以使用traingda
。
您可以根据需要更改该功能的所有必需参数。例如,如果你想使用traingda
,那么你只需要遵循以下两个步骤。
设置
net.trainFcn
至traingda
。这将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 backpropagation和gradient descent with momentum and adaptive learning rate backpropagation。
你在找什么类型的神经网络?说前馈网络?或者是其他东西? –
补充说明:双层前馈NN –