Search vs. Planning
• What happens when we try to search in the real world?
• Consider the task of buying a book with ISBN 1234567890.
• The agent has actions of the form Buy(X) where X is a ISBN number.
• Using search, all 10 billion states have to be examined to see if one contains
Have(1234567890), which is the goal test.
• A sensible agent should reason as follows:
I have the goal Have(X) where X = 1234567890. Now Buy(Y ) → Have(Y ).
Therefore
Buy(1234567890) → Have(1234567890).
Therefore, I have to execute Buy(1234567890)
- 我的目标是 Have(X),其中 X = 1234567890。
- 知道 Buy(Y) → Have(Y)(购买Y会导致拥有Y)。
- 因此,Buy(1234567890) → Have(1234567890)(购买ISBN 1234567890的书会导致拥有这本书)。
- 因此,我需要执行 Buy(1234567890)。
-
搜索(Search):
- 在搜索中,智能体通常会从当前状态开始,探索所有可能的状态转换,直到找到满足目标的状态。
- 在上述例子中,这意味着智能体可能会尝试所有可能的购买操作,直到找到正确的ISBN号码。
- 这种方法在状态空间很大时非常低效。
-
规划(Planning):
- 规划则是一种更加高效的方法。在规划中,智能体会首先考虑目标,然后推理出达到目标的行动序列。
- 在购买书的例子中,智能体通过逻辑推理直接得出需要执行的操作,而不需要探索所有可能的状态。
- 规划允许智能体跳过不必要的搜索,直接制定出达到目标的行动计划。
结论:
在现实世界中,规划通常比搜索更为高效,因为它允许智能体利用先验知识和逻辑推理来减少需要探索的状态数量。规划使得智能体能够以一种更为直接和智能的方式达到目标,而不是盲目地搜索整个状态空间。
Problem 1: overwhelming number of irrelevant actions 无关操作
Problem 2: Identifying a good heuristic function 启发式函数确定
Problem 3: Problem decomposition 问题分解
• What if we are trying to buy 4 rather than 1 book?
There are 1040 plans of 4 steps, we need a heuristic function.
• But each domain needs a new new heuristic function
• We need to use a domain-independent heuristic to allow the agent to function in any
situation.
• If we have goals of the form
Have(A) ∧ Have(B) ∧ Have(C) ∧ Have(D),
a state containing Have(A) ∧ Have(C) would have cost 2.
Representing our domain in this way automatically gives us a useful heuristic
计划的数量
- 如果每本书的购买是一个单独的步骤,那么在4个步骤内完成购买的计划数量是巨大的。具体来说,如果每本书的购买都是独立的,那么可能的计划组合数量是 10401040(假设每本书有10种选择)。
需要启发式函数
- 在这样的巨大搜索空间中,智能体需要一种方法来有效地选择最有可能成功的路径。这就是启发式函数的用武之地。启发式函数可以估计从当前状态到目标状态的代价,从而指导搜索过程。
启发式函数的领域依赖性
- 每个不同的领域可能需要不同的启发式函数。例如,购买书籍的启发式函数可能与机器人导航或任务调度的启发式函数完全不同。
需要领域无关的启发式函数
- 为了让智能体能够在任何情况下都能有效地工作,我们需要一个领域无关的启发式函数。这样的启发式函数不依赖于特定领域的知识,可以在多种不同的环境中使用。
目标的表示
- 如果我们的目标是形式化的
,这意味着我们需要同时拥有A、B、C和D四本书。
启发式函数的应用
- 在这个例子中,如果某个状态包含了 Have(A) ∧ Have(C),那么距离目标状态的估计代价是2,因为还缺少 Have(B) 和 Have(D)。
- 将我们的领域表示为这种形式,自动为我们提供了一个有用的启发式函数。这个启发式函数可以是“未满足的目标数量”。在这种情况下,启发式函数的值就是剩余需要购买的书籍数量。
启发式函数的具体例子
- 未满足目标数量启发式:这个启发式函数简单地计算当前状态下未满足的目标数量。在上面的例子中,如果一个状态已经拥有了A和C,那么启发式函数的值就是2,因为还有两个目标(B和D)没有满足。
- 最大剩余成本启发式:这个启发式函数可以估计完成所有未满足目标所需的最大成本。
• Problem: delivering packages to various locations
• It makes sense to decompose the problem, finding the nearest airport for each
destination and dividing the overall problem into one subproblem for each airport.
• If it takes O(n!) time to find the best plan in the original case, it will only take
(O(n/k)! × k) time if we can decompose the problem into k equal parts
- 假设我们有 10 个包裹需要递送(n = 10),并且我们可以将问题分解成 2 个子问题(k = 2)。
- 在没有分解的情况下,找到最佳计划的时间复杂度可能是 O(10!)。
- 分解后,每个子问题处理 5 个包裹,时间复杂度是 O(5!)。
- 因此,总时间复杂度将是 O(5! × 2),这比 O(10!) 要小得多。
• A standard representation of the planning problem – states, actions and goals –
make it possible for algorithms to take advantage of the structure of the problem.
— We need to find a representation that is expressive enough to describe many problems.
— But this representation must be restrictive enough to allow efficient algorithms to exist.
态、动作和目标的表示
- 状态:描述了问题在特定时间点的配置,包括所有相关的变量和它们的值。
- 动作:定义了智能体可以执行的操作,这些操作能够将问题从一种状态转换到另一种状态。
- 目标:描述了智能体试图达到的状态或条件。
表示方法的要求
-
足够的表现力:
- 表示方法必须足够丰富,能够描述许多不同类型的问题。
- 这意味着表示方法应该能够处理各种复杂性和多样性,包括不同的变量、约束和目标。

最低0.47元/天 解锁文章
736

被折叠的 条评论
为什么被折叠?



