神经网络参数如何确定

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了神经网络参数如何确定相关的知识,希望对你有一定的参考价值。

神经网络各个网络参数设定原则:

①、网络节点  网络输入层神经元节点数就是系统的特征因子(自变量)个数,输出层神经元节点数就是系统目标个数。隐层节点选按经验选取,一般设为输入层节点数的75%。如果输入层有7个节点,输出层1个节点,那么隐含层可暂设为5个节点,即构成一个7-5-1 BP神经网络模型。在系统训练时,实际还要对不同的隐层节点数4、5、6个分别进行比较,最后确定出最合理的网络结构。

②、初始权值的确定  初始权值是不应完全相等的一组值。已经证明,即便确定  存在一组互不相等的使系统误差更小的权值,如果所设Wji的的初始值彼此相等,它们将在学习过程中始终保持相等。故而,在程序中,我们设计了一个随机发生器程序,产生一组一0.5~+0.5的随机数,作为网络的初始权值。

③、最小训练速率  在经典的BP算法中,训练速率是由经验确定,训练速率越大,权重变化越大,收敛越快;但训练速率过大,会引起系统的振荡,因此,训练速率在不导致振荡前提下,越大越好。因此,在DPS中,训练速率会自动调整,并尽可能取大一些的值,但用户可规定一个最小训练速率。该值一般取0.9。

④、动态参数  动态系数的选择也是经验性的,一般取0.6 ~0.8。

⑤、允许误差  一般取0.001~0.00001,当2次迭代结果的误差小于该值时,系统结束迭代计算,给出结果。

⑥、迭代次数  一般取1000次。由于神经网络计算并不能保证在各种参数配置下迭代结果收敛,当迭代结果不收敛时,允许最大的迭代次数。

⑦、Sigmoid参数 该参数调整神经元激励函数形式,一般取0.9~1.0之间。

⑧、数据转换。在DPS系统中,允许对输入层各个节点的数据进行转换,提供转换的方法有取对数、平方根转换和数据标准化转换。

扩展资料:

神经网络的研究内容相当广泛,反映了多学科交叉技术领域的特点。主要的研究工作集中在以下几个方面:

1.生物原型

从生理学、心理学、解剖学、脑科学、病理学等方面研究神经细胞、神经网络、神经系统的生物原型结构及其功能机理。

2.建立模型

根据生物原型的研究,建立神经元、神经网络的理论模型。其中包括概念模型、知识模型、物理化学模型、数学模型等。

3.算法

在理论模型研究的基础上构作具体的神经网络模型,以实现计算机模拟或准备制作硬件,包括网络学习算法的研究。这方面的工作也称为技术模型研究。

神经网络用到的算法就是向量乘法,并且广泛采用符号函数及其各种逼近。并行、容错、可以硬件实现以及自我学习特性,是神经网络的几个基本优点,也是神经网络计算方法与传统方法的区别所在。

参考资料:百度百科-神经网络(通信定义)

参考技术A 神经网络参数要有很多,具体看你具体的问题的设定是怎样的?

您如何确定用于图像分类的卷积神经网络的参数?

【中文标题】您如何确定用于图像分类的卷积神经网络的参数?【英文标题】:How do you decide the parameters of a Convolutional Neural Network for image classification? 【发布时间】:2014-08-21 23:50:05 【问题描述】:

我正在使用 卷积神经网络(无监督特征学习来检测特征 + Softmax 回归分类器)进行图像分类。我已经阅读了 Andrew NG 在这方面的所有教程。 (http://ufldl.stanford.edu/wiki/index.php/UFLDL_Tutorial)。

我开发的网络有一个:

输入层 - 大小 8x8(64 个神经元) 隐藏层 - 大小为 400 个神经元 输出层 - 大小 3

我已经学习了使用稀疏自动编码器将输入层连接到隐藏层的权重,因此具有 400 个不同的特征。

通过从任何输入图像 (64x64) 中获取连续的 8x8 补丁并将其馈送到输入层,我得到了 400 个大小 (57x57) 的特征图。

然后我使用大小为 19 x 19 的窗口的最大池化来获得 400 个大小为 3x3 的特征图。

我将此特征图输入到 softmax 层,以将其分为 3 个不同的类别。

这些参数,例如隐藏层的数量(网络的深度)和每层的神经元数量,是在教程中提出的,因为它们已成功用于所有图像大小为 64x64 的特定数据集.

我想将此扩展到我自己的数据集,其中图像要大得多(比如 400x400)。 我如何决定

    层数。

    每层的神经元数量。

    池化窗口的大小(最大池化)。

【问题讨论】:

【参考方案1】:

简而言之,您决定可能的参数值,并使用这些值,运行一系列模型构建模拟,然后进行预测,以选择最佳参数值,从而提供最小的预测误差和更简单的模型。

在数据分析方面,我们使用holdout, cross-validation, bootstrapping 来决定模型参数的值,因为以无偏的方式进行预测很重要。

【讨论】:

【参考方案2】:

隐藏层数: 所需隐藏层的数量取决于数据集的内在复杂性,这可以通过查看每个层实现的功能来理解:

零隐藏层允许网络仅对线性函数进行建模。这对于大多数图像识别任务来说是不够的。

一个隐藏层允许网络对任意复杂函数进行建模。这对于许多图像识别任务来说已经足够了。

理论上,两个隐藏层比单层几乎没有什么好处,但是,在实践中,一些任务可能会发现额外的层是有益的。这应该谨慎对待,因为第二层可能会导致过度拟合。使用两个以上的隐藏层几乎从不有益仅对特别复杂的任务有益,或者当有大量训练数据可用时(根据 Evgeni Sergeev 评论更新)。

李>

长话短说,如果您有时间,请同时测试一个和两个隐藏层,看看哪个可以达到最令人满意的结果。如果您没有时间,那么您应该在单个隐藏层上进行一次平底船,并且您不会出错。

卷积层数: 根据我的经验,卷积层越多越好(在合理的范围内,因为每个卷积层都会减少全连接层的输入特征的数量),尽管在大约两三层之后,精度增益变得相当小,所以你需要决定是否您的主要关注点是泛化准确性或训练时间。也就是说,所有图像识别任务都是不同的,因此最好的方法是简单地尝试一次增加一个卷积层的数量,直到您对结果满意为止。

每个隐藏层的节点数: ...再一次,没有决定节点数量的神奇公式,每个任务都不同。一个粗略的指导是使用前一层大小的 2/3 大小的节点数量,第一层大小是最终特征图大小的 2/3。然而,这只是一个粗略的指南,再次取决于数据集。另一个常用的选项是从过多的节点开始,然后通过剪枝去除不必要的节点。

最大池化窗口大小: 我总是在卷积之后直接应用最大池化,所以可能没有资格就您应该使用的窗口大小提出建议。也就是说,19x19 最大池化似乎过于严重,因为它实际上会丢弃大部分数据。或许你应该看看更传统的 LeNet 网络布局:

http://deeplearning.net/tutorial/lenet.html

https://www.youtube.com/watch?v=n6hpQwq7Inw

在其中重复执行卷积(通常是 5x5 或 3x3),然后是最大池化(通常使用 2x2 池化窗口,尽管对于大型输入图像可能需要 4x4)。

结论 找到合适的网络布局的最好方法就是进行试错测试。很多测试。没有万能的网络,只有您知道数据集的内在复杂性。执行必要测试次数的最有效方法是通过cross validation。

【讨论】:

在最先进的"PhotoOCR" paper from 2013 中,我们读到:“我们表现最好的配置是在配置 422-960-480-480-480- 中有五个隐藏层的网络480- 100. 层是全连接的并且使用整流线性单元...”。 (他们没有使用卷积层。)目前的答案是“使用两个以上的隐藏层几乎没有好处。”没有引用参考资料或提供论据。 @Evgeni Sergeev 有趣的发现,论文中使用的训练样本数量非常大,所以我猜他们可以在不过度拟合的情况下摆脱大型网络。我已经相应地更新了答案。

以上是关于神经网络参数如何确定的主要内容,如果未能解决你的问题,请参考以下文章

paddle Conv2D参数,在手撕数字识别案例中调参数;卷积神经网络的卷积核大小个数,卷积层数如何确定呢?

paddle Conv2D参数,在手撕数字识别案例中调参数;卷积神经网络的卷积核大小个数,卷积层数如何确定呢?

paddle Conv2D参数,在手撕数字识别案例中调参数;卷积神经网络的卷积核大小个数,卷积层数如何确定呢?

如何在卷积神经网络中确定三重态丢失的准确性

matlab中建立bp神经网络的函数newff的第二个参数的问题

matlab BP神经网络出错 newff参数 隐含层 怎么确定