高级人工智能-lecture2-局部搜索

适用于那些关注解状态而不是路径代价的问题,如果到目标的路径是无关紧要的,我们可能考虑不同的算法,这类算法不关心路径。 局部搜索算法从单个当前结点(而不是多条路径)出发,通常只移动到它的邻近状态。一 般情况下不保留搜索路径。局部搜索算法家族包括由统计物理学带来的模拟退火法(simulated annealing) 和进化生物学带来的遗传算法 (genetic algorithms)。
除了找到目标,局部搜索算法对于解决纯粹的最优化问题十分有用,其目标是根据目标函数找到最佳状态。

爬山法(贪婪局部搜索)

是简单的循环过程,不断向值增加的方向持续移动—— 即,登高。算法在到达一个“峰顶”时终止,邻接状态中没有比它值更高的。

爬山法经常会陷入困境:

  • 局部极大值:局部极大值是一个比它的每个邻接结点都高的峰顶,但是比全局最大值要小。爬山法算法到达局部极大值附近就会被拉向峰顶,然后就卡在局部极大值处无处可走。
  • 山脊:下图显示了山脊的情况。山脊造成一系列的局部极大值,贪婪算法很难处理这种情况。
    图中的状态(黑色圆点)叠加在从左到右上升的山脊上,创造了一个不直接相连的局部极大值序列。从每个局部极大点出发,可能的行动都是指向下山方向的
    山脊示意图
  • 高原:高原是在状态空间地形图上的一块平原区域。它可能是一块平的局部极大值,不存在上山的出口,或者是山肩,从山肩还有可能取得进展。爬山法在高原可能会迷路。解决这个问题的一个方法是在最佳后继值和当前状态值相等的时候侧向移动,此时可能陷入循环,所以可以同时限制侧向移动的次数。

爬山法的变形

  • 随机爬山法在上山移动中随机地选择下一步,随机地生成后继结点直到生成一个优于当前结点的后继;被选中的概率可能随着上山移动的陡峭程度不同而不同。这种算法通常比最陡上升算法的收敛速度慢不少,但是在某些状态空间地形图上它能找到更好的解。
  • 随机重启爬山法(random restart hill climbing) :原爬山法是不完备的,该算法通过随机生成初始状态来导引爬山法搜索,直到找到目标。这个算法完备的概率接近于 1, 理由是它最终会生成一个目标状态作为初始状态。

模拟退火搜索

模拟退火算法的内层循环与爬山法类似。只是它没有选择最佳移动,选择的是随机移动。如果该移动使情况改善,该移动则被接受。否则,算法以某个小于 1 的概率接受该移动。如果移动导致状态“变坏”,概率则成指数级下降一评估值 Δ E \Delta E ΔE变坏。这个概率也随“温度’’ T T T降低而下降:开始 T T T高的时候可能允许“坏的”移动, T T T越低则越不可能发生。如果调度让 T T T下降得足够慢,算法找到全局最优解的概率逼近于 1。

局部束搜索

  • 局部束搜索(local beam search) 算法记录 k k k个状态而不是只记录一个。它从 k k k个随机生成的状态开始。每一步全部 k k k个状态的所有后继状态全部被生成。如果其中有一个是目标状态,则算法停止。否则, 它从整个后继列表中选择 k k k个最佳的后继,重复这个过程。
  • 如果是最简单形式的局部束搜索,那么由于这 k k k个状态缺乏多样性,它们很快会聚集到状态空间中的一小块区域内,使得搜索代价比高昂的爬山法版本还要多。随机束搜索(stochastic beam search) 为解决此问题的一种变形,它与随机爬山法相类似。随机束搜索并不是从候选后继集合中选择最好的 k k k个后继状态,而是随机选择 k k k个后继状态,其中选择给定后继状态的概率是状态值的递增函数。

遗传算法

遗传算法(genetic algorithm, 或 GA) 是随机束搜索的一个变形,它通过把两个父状态结合来生成后继,而不是通过修改单一状态进行。
像束搜索一样,遗传算法也是从 k k k个随机生成的状态开始,我们称之为种群。每个状态,或称个体,用一个有限长度的字符串表示,通常是 0、1 串。例如,八皇后问题的状态必须指明 8 个皇后的位置,每列有 8 个方格,所以需要 8 × log ⁡ 2 8 = 24 8 \times \log_28 = 24 8×log28=24比特来表示。
以八皇后为例的遗传算法

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值