
基于模拟退火的bp网络隐藏层节点估算算法.doc
7页基于模拟退火的 BP 网络隐藏层节点估算算法 张世睿 李心科 合肥工业大学计算机与信息学院 摘 要: 单隐藏层 BP 神经网络在模式识别及数据挖掘等领域应用广泛, 而隐藏层节点的数目受到众多因素的影响, 因此节点数量的选取一直是一个复杂的问题文章提出一种基于模拟退火算法 (simulated annealing, SA) 的单隐藏层 BP 神经网络隐藏层节点估算算法, 基于经验确定隐藏节点数的下界, 通过模拟退火不断增加隐藏节点个数直至算法结束, 得到最优解该方法与经验法和试凑法相比具有较强的理论依据, 与遗传算法等方法相比不容易陷入局部最小值实验证明, 采用该方法估算隐藏层节点的准确率较高, 速度也较快关键词: BP 网络; 模拟退火算法 (SA) ; 单隐藏层; 隐藏层节点数; 作者简介:张世睿 (1991-) , 男, 安徽芜湖人, 合肥工业大学硕士生;作者简介:李心科 (1963-) , 男, 江苏徐州人, 博士, 合肥工业大学副教授, 硕士生导师, 通讯作者, E-mail:Thinker-lee9268@.收稿日期:2016-03-30An estimation algorithm of BP neural network hidden layer nodes based on simulated annealingZHANG Shirui LI Xinke School of Computer and Information, Hefei University of Technology; Abstract: Single hidden layer BP neural network has achieved widespread success in pattern recognition, data mining and other fields.The number of hidden layer nodes is affected by many factors, so the selection of the number of nodes has been a complex issue.In this paper, an estimation algorithm of hidden layer nodes of single hidden layer BP neural network based on simulated annealing (SA) is presented.The lower bound of the number of hidden nodes is determined based on the experience.Through increasing the number of hidden nodes until the end by SA, the optimal solution is gotten.Compared with experience method and trial and error method, this method has strong theoretical basis.Besides, it is not easy to fall into local minimum compared with genetic algorithm.Experimental results show that this method has higher accuracy and faster speed in the estimation of the hidden layer nodes.Keyword: BP neural network; simulated annealing (SA) ; single hidden layer; number of hidden layer nodes; Received: 2016-03-30BP 神经网络由于具有很强的自我学习能力, 能够逼近任意复杂非线性函数[1], 同时还能够解决传统参数方法难以找到合适规则的问题, 具有较强的容错性和鲁棒性, 已经被广泛应用于模式识别、信息分类和数据挖掘等领域[2-3]。
研究证明, 神经网络的学习能力取决于网络隐藏层的结构, 其中包括隐藏层的数目和每个隐藏层中隐藏节点的数量增加隐藏层的数量可以有效降低网络的训练误差, 提高网络识别的准确率, 但也会使网络的拓扑结构更加复杂, 训练时间也会更长;而增加隐藏节点数也可以提高识别的准确率, 更容易观察和调整训练效果[4]采用单隐藏层的 3 层结构神经网络能够逼近任意连续函数, 因此本文仅研究单隐藏层 BP 网络隐藏层节点的选择问题然而隐藏层节点的选择十分复杂, 节点的数目受到众多因素的影响, 例如, 分类的需求、数据集的大小等与学习算法的激励函数选择相比, 确定隐藏层节点数目的研究较少[5]对于模式识别和数据集分类等问题, 如果隐藏层节点数目过少, 那么网络的识别准确率会较低;如果隐藏层节点过多, 那么训练时间会变长, 造成过训练[6]隐藏层节点数目选取的方法主要有试凑法[7]、经验公式法[8]、增长法[9]、遗传算法[10]以及三点式搜索等综合优化选取方法[11]上述方法都有其局限性:试凑法是通过不断地选取网络节点的数量进行测试, 直至选择结果满意为止, 该方法没有目的性, 只能不断盲目地进行试验, 计算开销非常大, 对于某些节点数较多的网络, 计算效率较低;经验公式法缺少相关的理论依据, 由于其公式是来自项目和试验中的经验, 只能针对特定的数据集有效, 不能作为通用的确定隐藏层节点的方法使用;增长法是从一个最小的神经网络结构开始试验, 不断增加隐藏层中节点的数目, 直至获取满意的数目为止, 虽然相关研究较多, 但是对于如何终止增长的问题目前没有统一的解决方法;遗传算法由于其固有的爬山能力差、收敛速度慢的问题, 会导致在平坦区域搜索结果陷入局部最小值的情况;三点式搜索可能会错过全局最优解。
此外, 这些算法需要不断地模拟完整的网络训练过程, 运行时间较长且开销大本文提出了一种基于模拟退火算法 (simulated annealing, SA) 的单隐藏层BP 神经网络隐藏层节点估算算法, 利用模拟退火算法局部搜索能力较强、运行时间较短的优势, 快速确定网络隐藏层节点数, 优化网络结构, 提高网络的识别率1 基于 SA 的 BP 网络隐藏节点估算算法模拟退火算法是基于统计物理的一种算法, 通过引入物理系统中晶体退火过程这样一种自然的机制, 采用 Metropolis 准则接受产生的最优的问题解该算法最关键的一点就是对于问题的局部最小解采用一定的概率来判断是否接受, 以便跳出局部极值点, 继续对全局问题进行分解探究, 从而得到问题的全局最优解[12]本文提出的隐藏节点估算算法利用模拟退火算法的优点, 与增长法相结合, 首先选取一个初始的隐藏层节点数, 通常根据经验选择输入节点和输出节点中较大的一个为初始值, 然后对网络进行一定次数的训练, 通过模拟退火算法决定是继续增加节点数, 还是接受当前节点数为算法的结果重复上述过程, 直至退火完成算法需要确定模拟退火的一些参数:(1) 模拟退火的初始温度。
该值应当足够高, 从而使得产生的所有解都能够被接受, 避免算法陷入局部最优解, 因此, 设置初始温度为 1002) 退火的控制函数通常采用的公式为:T k+1=αT k, 其中, α 为小于 1 的系数3) 评价函数 C (H) 该函数为在隐藏层节点数为 H 时, 经过一定数量的训练后, 网络的识别误差率算法的执行步骤如下:(1) 根据具体问题确定网络的输入和输出层的个数 M 和 N, 以及网络的激励函数和学习算法, 构建基本的网络模型2) 选取初始隐藏层个数, 根据经验可知隐藏层的个数通常大于等于输入层和输出层节点的个数, 因此选择输入层节点数和输出层节点数中的最大值作为初始隐藏层个数, H=max (M, N) 3) 对网络进行训练, 训练次数为目标次数的 10%, 评价函数 C (H) 即为步骤 (3) 训练后的识别误差率函数, H 为当前隐藏层节点个数, 输出为当前训练次数后的网络识别误差率4) 增加网络中隐藏层节点的个数, 计算增量 Δt′=C (H+1) -C (H) , 若Δt′<0, 则接受 H+1 作为新的隐藏层节点个数;否则, 以概率 exp (-Δt′/T) 接受 H+1 作为网络隐藏层节点个数的新解, 其中, T 为当前温度。
5) 若连续若干个新解都没有被接受, 则终止算法;否则减小 T, 跳转到步骤 (3) , 直至 T 减到很小, 结束该算法2 实验设计与分析本文以 Fisher’s Iris 数据集作为神经网络的实验数据集, 该数据集是一个鸢尾花卉的数据集, 分为 3 种花, 每种花各 50 条数据, 共有 150 条花卉信息3种花分别为 I.setosa、I.versicolor 及 I.virginica实验中分别选取每种花的前 25 条数据作为训练数据集, 后 25 条数据作为测试数据集, 因此, 共计 75条训练数据和 75 条测试数据2.1 BP 神经网络结构确定根据数据集的内容, 确定神经网络的输入节点数目为 4, 分别表示在 Fisher’s Iris 数据集中每种花的特有属性:花萼长度 (sepal length) 、花萼宽度 (sepal width) 、花瓣长度 (petal length) 及花瓣宽度 (petal width) 神经网络的输出节点数目设置为 3, 分别表示识别为 3 种花的可能性的大小, 最终选择其中较大的一个值所对应的种类作为网络识别的结果去验证网络的识别准确率;对于输入数据, 在读入神经网络后会进行处理;根据花的不同类型设置对应的输出节点的值为 1, 其他值为 0, 作为训练数据的输出数据。
由于本文的输入数据均为正数, 为了保证收敛速度, 通过线性归一化方法将数据归一化到[0, 1]范围, 公式为:其中, x min为输入数据的最小值;x max为输入数据的最大值由于输入数据均归一化到了[0, 1]区间, 因此第 1 层激活函数选择 S 型函数, 第 2 层激活函数选择线性激活函数, 其中 S 型函数公式为:其中, 0 图 2 网络训练结果信息 下载原图输入测试数据集对该网络的识别率进行了验证, 识别率高达 98.667%, 证明了选取的隐藏层节点数合适, 网络识别率较高2.2.2 3 种方法结果对比采用本文算法、试凑法及增长法在上述数据集上进行了多次实验对比3 种方法的判定时间如图 3 所示从图 3 可以看出, 本文算法与试凑法和增长法相比能够更快地获得准确合适的隐藏层节点个数, 说明本文算法的准确性较高, 且速度。












