BP神经网络设计方法

BP神经网络的设计方法

神经网络的设计主要包括网络层数(隐含层数)、输入节点数、隐含节点数、输出节点数、传输函数、训练方法、训练参数。

  • 网络层数
    网络层数可以从一层到多层。但理论上证明,单个隐含层的网络可以通过适当的增加神经元节点的个数实现任意非线性映射。因此,对于大部分应用场合,单个隐含层即可满足训练要求。但如果样本太多,也可增加隐含层数的层数来减少网络规模。

  • 输入层节点数
    输入层节点数取决于输入向量的维数。应用神经网络解决实际问题时,首先应从问题中提炼出一个抽象模型,形成输入空间和输出空间。因此,数据的表达方式会影响输入向量的维数大小。例如,如果输入的是64×64的图像,则输入向量应为图像中所有的像素形成的4096维向量。如果待解决的问题是二元函数拟合,则输入向量应为二维向量。

  • 隐含层节点数
    隐含层节点数对BP网络的性能有很大影响。一般较多的隐含层节点数可以带来更好的性能,但可能导致训练时间过长。目前并没有一个理想的解析式可以用来确定合理的神经元节点个数,这也是BP网络的一个缺陷。通常的做法是采用经验公式给出估计值:
    (1)
    在这里插入图片描述
    其中 k k k M M M为隐含层神经元个数, n n n为输入层神经元个数。如果 i > M i>M i>M,规定 C M i = 0 C^i_M=0 CMi=0
    (2) M = n + m + a M=\sqrt{n+m}+a M=n+m +a m m m n n n分别是输出层和输入层的神经元个数, a a a是[0,10]之间的常数。
    (3) M = l o g 2 n M=log_2n M=log2n n n n为输入层神经元个数

  • 输出层神经元个数
    输出层神经元的个数同样需要根据从实际问题中得到的抽象模型来确定。如在模式分类问题中,如果共有n种类别,则输出可以采用n个神经元,如n=4时,0100表示某输入样本属于第二个类别。也可以将节点个数设计为[1og2n]个,[x]表示不小于x的最小整数。
    由于输出共有4种情况,因此采用二维输出即可覆盖整个输出空间,00、01、10和11分别表示一种类别。

  • 传递函数选择
    一般隐含层使用Sigmoid函数,而输出层使用线性函数。如果输出层也采用Sigmoid函数,则输出值将会被限制在(0,1)或(-1,1)之间。

  • 训练方法选择
    BP网络除了标准的最速下降法以外,还有若干种改进的训练算法。训练算法的选择与问题本身、训练样本的个数都有关系。一般来说,对于包含数百个权值的函数逼近网络,使用LM算法收敛速度最快,均方误差也较小。但LM算法对于模式识别相关问题的处理能力较弱,且需要较大的存储空间。对于模式识别问题,使用RPROP算法能收到较好的效果。SCG算法对于模式识别和函数逼近问题都有较好的性能表现。
    串行或批量训练方式的选择,也是神经网络设计过程中需要确定的内容。串行方式需要更小的存储空间,且输入样本具有一定随机性,可以避免陷入局部最优。批量方式的误差收敛条件非常简单,训练速度快。

  • 初始权值的确定

  • BP网络采用迭代更新的方式确定权值,因此需要一个初始值。一般初始值都是随机给定的,这容易造成网络的不可重现性。初始值过大或过小都会对性能产生影响,通常将初始权值定义为较小的非零随机值,经验值为( − 2.4 / F -2.4/F 2.4/F 2.4 / F 2.4/F 2.4/F)或( − 3 / F -3/\sqrt{F} 3/F 3 / F 3/\sqrt{F} 3/F )之间,其中 F F F为权值输入端连接的神经元个数。
    确定以上参数后,将训练数据进行归一化处理,并输入网络中进行学习,若网络成功收敛,即可得到所需的神经网络。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值