关于粒子群优化的内容可以通过搜索得到。
下面主要是个人对于粒子群优化的一点理解,以及应用于BP神经网络中做权重的调整
原文在:http://baike.baidu.com/view/1531379.htm
引用下面一些内容
===============我是引用的分界线=================
粒子根据如下的公式来更新自己的 速度和新的位置
v[] = w * v[] + c1 * rand() * (pbest[] - present[]) + c2 * rand() * (gbest[] - present[])
present[] = persent[] + v[]
v[] 是粒子的速度, w是惯性权 重,persent[] 是当前粒子的位置. pbest[] and gbest[] 如前定义 rand () 是介于(0, 1)之间的随 机数. c1, c2 是学习因子. 通常 c1 = c2 = 2.
===============我是引用的分界线 =================
一般用X表示粒子的位置,V表示粒子的速度
X和V都是向量,因此很容易地就会和BP神经网络的权重联想到一起。
在看PSO和BP神经网络如何结合起来使用的过程中,我一直比较疑惑的就是到底是让X代替权重,还是 用V代替权重。或者是用X和V的乘积的。经过多方面的探讨,基本达成共识的就是 用X代替权重。
因为一个粒子就代表了一组权重,如果只是利用一个粒子的话。。。那么gbest[]和pbest[]就没有多 大的意义了,起码是只要一个就可以了。因此很多人就把粒子的数目做成10-30个之间。也就是这个结合 PSO的BP神经网络有10-30组权重了。一般意义上的BP神经网络就只有一组权重而已。那么这种思想对于 神经网络来说就是不只是依赖一组权重来进行最优解的搜索,而是利用多组权重来进行搜索。这样能跳 出局部最小的机会已经大了很多了。非常不错的思想。不过计算量已经比一般的BP大很多了,起码变量 已经比原来的多了。不过庆幸的是这些变量都是可控制的向量。需要调整的只是几个参数而已。
研究粒子群优化(Partical Swarm Optimization - PSO) 主要是因为之前做的BP神经网络在维度达到 100多的时候很容易陷入局部最小,所以不得不考虑如何优化了。
本来想用模拟退火算法来做权重的调整的。但是看了粒子群优化(Partical Swarm Optimization - PSO) 之后觉得这种思想更优。到底是哪里更好了?呵呵。说不出。只是一种感性的理解罢了。
PS:
我毕竟不是学数学的,我毕竟不是读计算机的,神经网络里面包含的思想与理论很多时候都超出了我 的理解。神经网络这么多年的发展,这么多前辈的努力成果,不是我等小辈能马上明白的。顿时感觉压 力很大。但是当我对他产生了强烈的兴趣的时候,一种无形的力量驱动着我去不断地去求知。不为什么 ,只为我喜欢的,我就是想知道。^_^