演化计算的优势在于可以处理一些传统方法不能处理的例子例如不可导的节点传递函数或
者没有梯度信息存在。但是缺点在于:在某些问题上性能并不是特别好。2. 网络权重的编
码而且遗传算子的选择有时比较麻烦
最近已经有一些利用 PSO 来代替反向传播算法来训练神经网络的论文。研究表明 PSO 是一种
很有潜力的神经网络算法。PSO 速度比较快而且可以得到比较好的结果。而且还没有遗传算
法碰到的问题
这里用一个简单的例子说明 PSO 训练神经网络的过程。这个例子使用分类问题的基准函数
(Benchmark function)IRIS 数据集。(Iris 是一种鸢尾属植物) 在数据记录中,每组数据包
含 Iris 花的四种属性:萼片长度,萼片宽度,花瓣长度,和花瓣宽度,三种不同的花各有 50
组数据. 这样总共有 150 组数据或模式。
我们用 3 层的神经网络来做分类。现在有四个输入和三个输出。所以神经网络的输入层有 4
个节点,输出层有 3 个节点我们也可以动态调节隐含层节点的数目,不过这里我们假定隐含
层有 6 个节点。我们也可以训练神经网络中其他的参数。不过这里我们只是来确定网络权重。
粒子就表示神经网络的一组权重,应该是 4*6+6*3=42 个参数。权重的范围设定为[-100,100]
(这只是一个例子,在实际情况中可能需要试验调整).在完成编码以后,我们需要确定适应
函数。对于分类问题,我们把所有的数据送入神经网络,网络的权重有粒子的参数决定。然
后记录所有的错误分类的数目作为那个粒子的适应值。现在我们就利用 PSO 来训练神经网络
来获得尽可能低的错误分类数目。PSO 本身并没有很多的参数需要调整。所以在实验中只需
要调整隐含层的节点数目和权重的范围以取得较好的分类效果。
6. PSO 的参数设置
从上面的例子我们可以看到应用 PSO 解决优化问题的过程中有两个重要的步骤: 问题解的编
码和适应度函数
PSO 的一个优势就是采用实数编码, 不需要像遗传算法一样是二进制编码(或者采用针对实
数的遗传操作.例如对于问题 f(x) = x1^2 + x2^2+x3^2 求解, 粒子可以直接编码为 (x1,
x2, x3), 而适应度函数就是 f(x). 接着我们就可以利用前面的过程去寻优.这个寻优过程是
一个叠代过程, 中止条件一般为设置为达到最大循环数或者最小错误
PSO 中并没有许多需要调节的参数,下面列出了这些参数以及经验设置
粒子数: 一般取 20 – 40. 其实对于大部分的问题 10 个粒子已经足够可以取得好的结果, 不
过对于比较难的问题或者特定类别的问题, 粒子数可以取到 100 或 200
粒子的长度: 这是由优化问题决定, 就是问题解的长度
粒子的范围: 由优化问题决定,每一维可是设定不同的范围
Vmax: 最大速度,决定粒子在一个循环中最大的移动距离,通常设定为粒子的范围宽度,例如
上面的例子里,粒子 (x1, x2, x3) x1 属于 [-10, 10], 那么 Vmax 的大小就是 20
评论0