使用 Matlab 进行基于神经网络的分类的参数设置
Posted
技术标签:
【中文标题】使用 Matlab 进行基于神经网络的分类的参数设置【英文标题】:Parameter settings for neural networks based classification using Matlab 【发布时间】:2014-05-19 23:04:34 【问题描述】:最近,我正在尝试使用 Matlab 内置的神经网络工具箱来完成我的分类问题。不过,我对参数设置有一些疑问。
一个。隐藏层神经元个数:
此页面上的示例Matlab neural networks classification example 显示了一个两层(即一层隐藏层和一层输出层)的前馈神经网络。在这个例子中,它在隐藏层使用了 10 个神经元
net = patternnet(10);
我的第一个问题是如何为我的分类问题定义最佳的神经元数量?我应该使用交叉验证方法来获得使用训练数据集的最佳神经元数量吗?
b.有没有办法选择三层或更多的多层神经网络?
c。我们可以在神经网络工具箱中使用许多不同的训练方法。可以在Training methods list 找到一个列表。该页面提到最快的训练功能一般是'trainlm';但是,一般来说,哪一个表现最好?还是完全取决于我使用的数据集?
d。在每种训练方法中,都有一个参数叫做'epochs',就是我理解的训练迭代。对于每种训练方法,Matlab 定义了要训练的最大 epoch 数。但是,从example 看来,“epochs”似乎是我们可以调整的另一个参数。我对吗?或者我们只是设置最大 epoch 数还是保持默认?
欢迎有任何使用 Matlab 神经网络工具箱的经验,非常感谢您的回复。答:
【问题讨论】:
【参考方案1】:一个。可以参考How to choose number of hidden layers and nodes in neural network?和ftp://ftp.sas.com/pub/neural/FAQ3.html#A_hu 当然,您可以进行交叉验证以确定最佳神经元数量的参数。但不推荐,因为它更适合在某个网络的权重训练阶段使用。
b.参考ftp://ftp.sas.com/pub/neural/FAQ3.html#A_hl 而更多层的神经网络,可以参考Deep Learning,这几年很火,在很多模式识别任务中都有state-of-the-art的表现。
c。这取决于您的数据。在训练大型网络和模式识别网络时,trainlm 在函数拟合(非线性回归)问题上比在模式识别问题上表现更好,trainscg 和 trainrp 是不错的选择。一般来说,推荐使用梯度下降和弹性反向传播。更详细的比较可以在这里找到:http://www.mathworks.cn/cn/help/nnet/ug/choose-a-multilayer-neural-network-training-function.html
d。你是对的。我们可以调整 epochs 参数。一般你可以在每个epoch输出识别结果/准确率,你会看到提升越来越慢,epoch越多计算时间越长。您可以在准确性和计算时间之间做出折衷。
【讨论】:
【参考方案2】:对于您问题的 b 部分: 你可以像这样使用代码:
net = patternnet([10 15 20]);
这个脚本创建一个有 3 个隐藏层的网络,第一层有 10 个神经元,第二层有 15 个神经元,第三层有 20 个神经元。
【讨论】:
以上是关于使用 Matlab 进行基于神经网络的分类的参数设置的主要内容,如果未能解决你的问题,请参考以下文章
优化分类基于matlab GA优化GRNN超参数分类含Matlab源码 1399期
DBN分类基于matlab麻雀算法优化深度置信网络SSA-DBN数据分类含Matlab源码 2318期