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

第三章 高级搜索

  • 局部搜索方法
  • 模拟退火方法
  • 遗传算法
    高级搜索其实就是求组合优化问题的解,之前的运筹学(还是叫别的什么名字来的)这门课上都学过,也是美赛的必备技能之一。
    优化问题的一般描述:
    在x的定义域D上,求f满足条件g的极值max f 或min f
    (什么时候能支持公式啊\怨念)

局部搜索

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

  1. 随机选择一个解x_0,生成邻域P。
    邻域的生成方法有很多种,比如旅行商问题中,选择两个点交换,将所有可能的交换结果列出来,得到的就是原始解的邻域。
  2. 如果P为空,则结束计算。否则,从P中任选一个元素x_n。
  3. 如果f(x_n)
  4. 否则,P=P-{x_n}。
  5. 转到2
    以上步骤的一个明显问题:容易陷入局部最优。只要找到一个极值点,就会停止计算。有三种改进的思路
  • 改进1:按照f的值随机选点。
    • 课件上模拟退火在用这个随机的时候,方法是按照Metropolis准则来转换状态。在P中随机选一个解,f减小则选中,f增大则按照玻尔兹曼分布选中。
  • 改进2:每次选点之后都改变一下步长。
  • 改进3:散布不同的初值点进行搜索,在最终结果中找出最优的。
    Remark:本章之后的算法都是上述改进的组合。上述改进1和改进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。对前面的部分理解了之后这一部分就没什么难的了。
比较困难的部分是编码。不过这一部分属于工程处理问题,大概不会考,期末复习笔记就不写了。

你可能感兴趣的:(人工智能期末复习笔记2018-01-11)