AI(人工智能:一种现代的方法)学习之:基于信息的搜索策略(informed search)——启发式(heuristic)搜索、贪婪(greedy)搜索、A* (A star)搜索

参考

加州大学伯克利分校的 AI 公开课

回顾

  • 建议先看上一篇文章:AI(人工智能:一种现代的方法)学习之:无信息搜索(uninformed search)算法——广度优先搜索、深度优先搜索、Uniform-cost search
  • 找到解的过程是通过不同的搜索策略对所有 state 进行探索的过程;
  • 在上一篇文章的例子中,不同的城市就是不同的 state
  • 在使用搜索算法的过程中,不同的搜索算法其实只决定了对于当前处于 fringe 状态的 state,选择何种方式进行扩展;
  • 无论使用哪种策略(深度、广度优先、uniform cost),都可以通过 在概念上 对所有处在 fringe 中的 state 构造优先级队列来达到目的。他们的区别就是,在深度优先中,将 fringe 的优先级队列的优先级设为深度;而广度有限遍历则是将优先级队列的优先级设为广度;在uniform cost 中将优先级设为 cost 即可。在 实现过程中 通常深度和广度有限是分别使用 stacks 和 queue 来完成的,只有 uniform cost 是采用优先级队列。
    在这里插入图片描述

启发式搜索

  • 在搜索过程中加入包含目标的位置信息,使得搜索的方向能够更加有目的性。这种方式叫做启发式。
    在这里插入图片描述

曼哈顿距离

  • 两点之间沿着坐标轴方向的累积距离 d = ( x 1 − x 2 ) + ( y 1 − y 2 ) d=(x_1-x_2) + (y_1-y_2) d=(x1x2)+(y1y2)
    在这里插入图片描述

欧几里得距离

  • 两点之间的直线距离 d = ( x 1 − x 2 ) 2 + ( y 1 − y 2 ) 2 d = \sqrt{(x_1-x_2)^2 +(y_1-y_2)^2} d=(x1x2)2+(y1y2)2
    在这里插入图片描述
  • 但是在这个情景中,欧几里得距离很显然不太适合,因为吃豆人不能对角移动,因此这样衡量的距离不能代表你离目标的真实距离。

问题情境

  • 从 Arad 找一条最优的路径去 Bucharest
    在这里插入图片描述
  • 右侧表中列出了所有城市到目标城市的 直线 距离,也就是我们使用的 启发式 距离

贪婪算法

  • 选择当前离目标点最近的 fringe 作为扩展
    在这里插入图片描述
  • 第一次扩展只有 Arad,现在 fringe 有 Sibiu,Timisoara, Zerind
  • 根据贪婪算法,选择最短的 Sibiu 进行探索,现在 fringe 变成了 Arad, Fagaras, Oradea, Rimnicu Vilcea, Timisoara, Zerind;继续选择最短的 Fagaras 进行扩展…
  • 最终形成了 Arad, Sibiu, Fagaras, Bucharest 的路径。
  • 但是这个路径不是最优的,很显然红线的轨迹更优:
    在这里插入图片描述
  • 但是由于在 Sibiu 的时候,由于我们使用启发式函数评估的 Fagaras 的距离是 178,而 Rimnicu Vilcea的距离是 193,所以就选择了前者,但是真实的结果并不如此。
  • 因此贪婪算法总是寻找局部最优解,但是并不能保证全局最优解。

贪婪算法 V.S. Uniform-cost Search

在这里插入图片描述

  • 如果把 uniform-cost search 比喻成一只乌龟,缓慢的、按部就班地依次对所有当前最短的 cost 进行搜索,最终能够得到最优解,但是比较缓慢。

  • 那么 greedy 算法就是兔子,跑的很快,但是容易最终找不到最优的答案

  • 对于下面的例子:左边是各个 city 的状态图,右边是根据状态图构建的搜索树。
    在这里插入图片描述

  • 对于这样一颗搜索树,其中 g 是从起点到当前 fringe 的累积 cost(也就是 uniform 使用的 cost);如果按照 uniform 的思路,会依次扩展 s - a - c - d - g 然后得到最优解

  • 如果对于 greedy 算法,则依据的是当前 fringe 到 goal 的距离,然后选择最短的一条,因此他会依次扩展:s- a - e - d - g 很显然,这并不是最优的。

  • 而 A* 算法就是结合了 greedy 和 uniform-cost 的优点。

A* 算法

  • 将 g+h 作为启发式函数(代价)来完成下面步骤:
  • 注意:将节点压入 fringe 集合的时候如果符合 goal test 的条件,搜索不能马上结束。而应该等到这个 fringe 从数据结构中弹出才能进行 goal test 判断是否结束。也就是说,确定采用当前这个 fringe 当做解的一部分,才算数。
    • 首先扩展 S
    • 扩展 a,现在 b,d,e 作为 fringe
    • 根据 g+h 最小选择 d 作为新的扩展节点进行扩展,fringe 中的节点更新为:b, e, g
    • 对 g 进行扩展(加入到解中),进行 goal test ,程序结束。A* 算法完成。

A* 的终止条件

  • 再次强调,当 fringe 中出现了 g+h 最小的节点(将节点加入 fringe 的时候),不能马上 return 结果,而是要等到这个 fringe 确定加入解集合之后,在进行 goal test。

例如:
在这里插入图片描述

  • 在本图中,首先扩展 S, fringe 中加入 A, B,根据 A* 的 g+h 得出应该扩展 B(B: g=2, h=1; A: g=2, h=2);这个时候 fringe 更新为 A, G
  • 如果这时候仅凭 G 是否出现在 fringe 中判断是否返回,那么现在就 return 结果了,但是这时候 S-A-G 这条路的总 cost = 5 ;
  • 如果按照规定的流程,应该比较 G 和 A 哪个应该被扩展,A 此时的 g+h=4 ; G 的 g+h=5,因此应该选择 A 进行扩展,而这时候 fringe 更新为 G,G;从 A 那边到达的 G 的 g+h=4,因此应该选择扩展 A-G。

保证 A* 最优解——admissible heuristic

在这里插入图片描述

  • 在这个图中 S 扩展之后,A 的 g+h=7,G 的 g+h=5 因此会对 G 进行扩展,但事实并非如此,因为 S-A-G 的实际 cost 仅为 1+3=4,也就是说当启发式函数给出的预估值 > 真实的 cost 的时候,启发式函数就不能保证 A* 找到最优解。
  • 因此我们想要得到最优解的保证,就要使启发式函数的预估值 < 到目标 state 的真实值;这也叫做乐观启发式 (optimistic heuristic)。
    在这里插入图片描述

证明 admissible heuristic 是最优性的保证

在这里插入图片描述

  • 假设 A 是最优解, B 是次优解
  • 要证明的是: A 或者 A 的某个祖先节点 n n n 和 B 同时都是 fringe, 那么 n n n 或者 A A A 一定会在 B 之前被 explore
  • f ( n ) ≤ f ( A ) f(n) \leq f(A) f(n)f(A) 因为如果 n 是 A 的 祖先,那么 f ( n ) = g ( n ) + h ( n ) < f ( A ) = g ( A ) + h ( A ) f(n)=g(n)+h(n) < f(A)=g(A)+h(A) f(n)=g(n)+h(n)<f(A)=g(A)+h(A),即 f ( n ) ≤ g ( A ) f(n) \leq g(A) f(n)g(A) 因为在目标节点 A 的 h ( A ) = 0 h(A)=0 h(A)=0 也就是 g ( A ) = f ( A ) g(A)=f(A) g(A)=f(A)
  • 又因为 A 是最优解,所以 f ( A ) + g ( A ) = f ( A ) < f ( B ) = g ( B ) + h ( B ) , h ( B ) = 0 f(A)+g(A) = f(A) < f(B)=g(B)+h(B), h(B)=0 f(A)+g(A)=f(A)<f(B)=g(B)+h(B),h(B)=0;因此结论是 f ( A ) < f ( B ) f(A)<f(B) f(A)<f(B)
  • 因此可以推出 f ( n ) ≤ f ( A ) < f ( B ) f(n)\leq f(A) <f(B) f(n)f(A)<f(B) 因此 n n n 只要是 A 的祖先或者 A 自己,那么他就一定先于 B 被扩展,也就证明了只要 heuristic function 是 admissible 的,那么就一定找得到最优解。

A* V.S. Uniform-cost

uniform-cost

在这里插入图片描述

A*

在这里插入图片描述

五种搜索算法的对比

  • 图中浅蓝色的区域代表浅水区,在浅水区探索的代价比深蓝色的深水区要低

BFS

在这里插入图片描述

DFS

Greedy

在这里插入图片描述

Uniform-cost

在这里插入图片描述

A*

在这里插入图片描述

启发式函数设计练习

在这里插入图片描述

  • state 数量: 9 ! 9! 9! 因为第一个块有 9 种选择,第二个有 8 种…
  • actions:将 tile 移动到空白位置
  • 起始状态有多少个后继:有 4 个 tile 可以移动到中间空白处,所以有 4 个 后继
  • cost 如何设计:每次移动 tile 都是一个 cost
  • 如何设计启发式函数:1)处于错误位置的 tiles
    在这里插入图片描述
  • 更加合理的启发式函数:2)当前时刻所有 tile 到最终状态的曼哈顿距离之和
    在这里插入图片描述
    在这里插入图片描述
  • 当然可以用实际距离来作为启发式函数的距离
  • 因为在保证启发式是 admissible 的范围内,越接近真是的距离,越节省计算量
  • 关键问题是我们无法得知真正的距离。。。。
  • 4
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
### 回答1: 人工智能可以利用机器学习和数据分析的方法,来模拟人类的智能行为,帮助自动解决各种难题。它有助于推动技术的发展,改善人类的生活,提高工作效率和减少误差,它也可以模拟人类的智能,以便人们能够更好地理解世界。 ### 回答2: 人工智能(Artificial Intelligence,简称AI)是一种模拟人类智能的技术。它的应用正不断扩大,如自动驾驶、语音识别、机器翻译等。在未来的发展中,人工智能可能会呈现出以下几个趋势。 首先,人工智能将更加普及和渗透到我们的生活中。比如,智能家居将会成为我们居住空间的一部分,为我们提供更加智能化的生活体验。同时,在医疗领域,人工智能可能有望为疾病的诊断和治疗带来更多突破。此外,人工智能有望改变我们的工作模式,自动化和智能化的机器可能取代一些繁重和重复性的工作,从而释放出更多的人力资源。 其次,人工智能将进一步加强和改进其自学习的能力。目前,人工智能的很多应用还需要人工的干预和调整。然而,未来的人工智能系统可能会拥有更高的自主性和自适应性,能够通过不断学习和优化来自我进步。这将有助于提高人工智能系统的应用能力和适应不同环境的灵活性。 最后,人工智能的伦理和法律问题将成为重要的讨论和规范点。人工智能如同一把双刃剑,它的应用可能给社会带来巨大的益处,但也可能产生一些不利的影响。因此,我们需要制定相关的法律和伦理规范,确保人工智能的发展和应用符合社会的规范和道德底线。 总之,人工智能的发展前景广阔,应用范围广泛。但同时,我们也需要思考和解决与人工智能相关的问题,以保证其能够为人类带来最大的利益和效益。 ### 回答3: Artificial Intelligence (AI) is an evolving field with immense potential and implications. Engaging in a brainstorming session about AI can help us explore its broad applications and challenges. Here are a few ideas: 1. AI in Healthcare: AI can revolutionize healthcare by improving diagnostics accuracy, optimizing treatment plans, and enabling personalized medicine. It can assist doctors in analyzing patient history, identifying patterns, and predicting disease progression, leading to early interventions and better outcomes. 2. AI in Education: AI-driven platforms can personalize the learning experience, adapting content delivery, and pace to individual students. Virtual tutors can offer guidance and support, and AI can assist in grading assignments and exams, providing timely feedback. 3. AI in Transportation: Autonomous vehicles are a prime example of AI's potential impact on transportation. Self-driving cars can enhance road safety, reduce accidents caused by human errors, and alleviate traffic congestion. AI-powered predictive analytics can also optimize logistics and streamline transportation routes. 4. AI in Finance: AI algorithms can analyze large datasets, identify patterns, and make informed predictions, contributing to more accurate risk assessment and investment decisions. AI-powered chatbots can enhance customer service and streamline financial operations. 5. AI in Environment Conservation: AI can assist in monitoring and analyzing environmental data to detect and prevent natural disasters. It can also aid in wildlife conservation efforts by tracking animal behavior, detecting poaching activities, and preserving ecosystems. 6. Ethical Considerations: While AI offers numerous benefits, ethical concerns need to be addressed. Fairness, transparency, and accountability must guide algorithm development. Ensuring privacy and avoiding biases in AI systems are crucial aspects that need careful consideration. 7. AI and Future Employment: The rise of AI may reshape the job market, requiring a reevaluation of workforce skills. While AI might automate some tasks, it can also create new job opportunities, demanding skills in AI development, maintenance, and creativity. 8. AI in Social Interactions: AI-powered chatbots and virtual assistants are becoming increasingly sophisticated, empathetic, and capable of natural language processing. This could transform social interactions, enhance customer experiences, and change the way we communicate. As technology advances, exploring these possibilities through brainstorming sessions can help us harness AI's potential while also addressing any challenges that arise. It is important to continuously discuss and adapt to the evolving landscape of AI to maximize its benefits for society.

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

暖仔会飞

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值