人工神经网络(Artificial Neural Netwroks)笔记-模拟退火算法(Simulated Annealing)

在  人工神经网络(Artificial Neural Netwroks)笔记-消除样本顺序的BP算法   一文的下面提到了几个要讨论的问题 其中  “局部极小点问题,如何逃离或者避开局部极小点呢?”

这个问题可以通过模拟退火算法(Simulated Annealing) 来提高逃离局部极小点向全局最优点进发的可能性。
人工神经网络(Artificial Neural Netwroks)笔记-粒子群优化(Partical Swarm Optimization - PSO)   粒子群优化同样也是为了解决这个问题。

先说说模拟退火算法(Simulated Annealing) 。

========引用的分割线==========
模拟退火來自冶金學的專有名詞退火。退火是將材料加熱後再經特定速率冷卻,目的是增大晶粒的體積,並且減少晶格中的缺陷。材料中的原子原來會停留在使內能有局部最小值的位置,加熱使能量變大,原子會離開原來位置,而隨機在其他位置中移動。退火冷卻時速度較慢,使得原子有較多可能可以找到內能比原先更低的位置。

  模擬退火的原理也和金屬退火的原理近似:我們將熱力學的理論套用到統計學上,將搜尋空間內每一點想像成空氣內的分子;分子的能量,就是它本身的動能;而搜尋空間內的每一點,也像空氣分子一樣帶有“能量”,以表示該點對命題的合適程度。演算法先以搜尋空間內一個任意點作起始:每一步先選擇一個“鄰居”,然後再計算從現有位置到達“鄰居”的概率。
========引用的分割线==========
上面引用自 http://zh.wikipedia.org/wiki/%E6%A8%A1%E6%8B%9F%E9%80%80%E7%81%AB

其中能量的状态分布公式为
P(E)=exp(E/KT)
P(E) 系统处于具有能量E的状态的概率
K为Boltzmann常数
T为系统绝对温度

根据上面的公式作为 人工神经网络(Artificial Neural Netwroks)笔记-基本的非确定性统计训练算法  描述中第九步的概率判断基础
第九步应该修改为:计算修改前和修改后的误差得到ΔE.如果ΔE大于0,则按照Boltzmann分布计算概率P(E)=exp(E/KT)。再按照均匀分布在[0,1]之间产生了一个随机数r.如果P(E)>r,则系统接受该次修改。

关于温度T的降低
有这么两种方法
1.T=λT 。 λ作为冷却率,在08-0.9之间取值。

2.T=T'/ log(1+t)。这是Geman在1984年提出的。他认为温度下降必须与时间的对数成反比,网络最终才能收敛到全局极小点。这里T'的初始值是值得商榷的。一般有三种方法
(1) T'=E({W^(h)}),也就是取初始系统目标函数的值。
(2)T'=zE({W^(h)}),也就是取系统目标函数值的若干倍。
(3)按照经验给出。

在我的实践中增加了模拟退火算法的BP网络比直接采用梯度下降的BP网络能更快地满足系统的最小误差。

参考资料: 非数值并行算法(第一册) 模拟退火算法

posted @ 2008-11-20 19:48  T.t.T!Ck.¢#  阅读(2915)  评论(11编辑  收藏  举报