2019-05-30(让搜索过程具有一定的爬山能力)

前言

为了解决模型局部最小问题,只能通过改进搜索算法解决,一种方法是让搜索过程具有爬山的能力,同时不会爬出全局最小的山谷。本文介绍的模拟退火(Simulated Annealing)波尔兹曼机(Boltzmannn Machine)就是在模型陷入局部最优时,将模型最优搜索过程赋予爬山的能力。

模拟退火算法

当系统从一个状态转移到另一个状态时,它的能量(模型优化过程中为损失)由转化为,metropolis规则为:当小于时,直接接受;当 大于或等于 时,以一定的概率接受。p的定义如下:
p = \left\{\begin{matrix} 1 & E\left (n + 1 \right ) < E\left (n \right )\\ e^{\left ( \frac{E\left (n + 1 \right ) - E\left (n \right )}{T} \right )} & E\left (n + 1 \right ) \geq E\left (n \right ) \end{matrix}\right.
具体决策过程:首先在区间[0, 1]产生一个均匀分布随机数,如果 < p,则变化被接受,反之被拒绝,进入下一步,如此循环。
T的计算
退火算法为优化过程赋予了爬山的能力,但这会带来模型不收敛的问题,为了克服这个问题,必须控制退火算法的参数T,T很大时 变化被接受的概率减小,退火太慢可能在局部最优结束迭代;T很小时,变化被接受的概率增大,退火太快优化时间过长,可能导致不收敛。实际应用中应该采用退火温度表,初期用较大T,逐步降低。退火温度表如下:

  • 温度初始值T(0)
  • 退火速率下降方式:
  • 终止温度

退火算法用于优化过程
来源

波尔兹曼机(Boltzmann Machine)

你可能感兴趣的:(2019-05-30(让搜索过程具有一定的爬山能力))