人工智能期末复习笔记2018-01-11

2018-01-11  本文已影响0人  铅绘_LittleWorld

第三章 高级搜索


局部搜索

基本思想:始终向着离目标最近的方向搜索。
(这里不做特殊说明,则默认是求最小值)
步骤:

  1. 随机选择一个解x_0,生成邻域P。
    邻域的生成方法有很多种,比如旅行商问题中,选择两个点交换,将所有可能的交换结果列出来,得到的就是原始解的邻域。
  2. 如果P为空,则结束计算。否则,从P中任选一个元素x_n。
  3. 如果f(x_n)<f(x_0),则把这个解作为新解,更新邻域P。
  4. 否则,P=P-{x_n}。
  5. 转到2
    以上步骤的一个明显问题:容易陷入局部最优。只要找到一个极值点,就会停止计算。有三种改进的思路

模拟退火

在上述改进1的基础上,按照Metropolis准则进行状态转化:
当从状态i转为状态j时,如果E(j)<=E(i),则接受转化状态;否则,以Boltzman分布接受,即以概率:
$e^{\frac{E(i)-E(j)}{KT}}$
接受。
其中E是待优化的函数,T是温度,K是玻尔兹曼常数。
之后的重点基本上就是算法的实现。有以下几个点:

起始温度的选择

初始温度要尽量大,使得$e^{\frac{E(i)-E(j)}{KT}}\approx 1$
可以直接给定,也可以用升温的办法求取。先给定一个小的温度,然后产生一个邻域,算一下被接受的概率。如果符合设想的值(比如0.98),那么就接受;否则就升温。

温度下降

可以采用等比例下降、等值下降或者平衡分布的方法。

每一温度下的马尔科夫链长度

算法的终止


遗传算法

遗传算法就是根据进化论推出来的一个算法——其实这样说有种戴个很大的帽子的感觉……遗传算法就是前面提到的随机搜索算法的改进1和改进3的组合。每一代通过选择、交叉、变异这三个步骤,生成子代。最后选择整个进化过程中最优的后代。
选择过程对应着改进1,用很多随机初始点进行模拟对应着改进3。对前面的部分理解了之后这一部分就没什么难的了。
比较困难的部分是编码。不过这一部分属于工程处理问题,大概不会考,期末复习笔记就不写了。

上一篇下一篇

猜你喜欢

热点阅读