《人工智能:一种现代方法》第17章复杂决策问题学习笔记

本文是《人工智能:一种现代方法》第17章的学习笔记,探讨了序贯决策问题,如在不确定性的环境中如何进行决策。重点介绍了马可夫决策问题(MDP)的概念和值迭代算法,通过示例展示了如何计算最佳策略和状态效用。
摘要由CSDN通过智能技术生成

前言

本篇文章来自Artificial Intelligence: A Modern Approach一书第17章“复杂决策问题”,进行了翻译和整理,仅供学习参考。

正文

在之前的章节中讨论了单个决策问题,这些问题特点是行动带来的效用是完全知道的,而接下来讨论的序贯决策问题,效用取决于一序列的行动,而不是单个的行动。举个例子,就像下象棋一样,最后的输赢并不能够从一开始下的几步就可以预见到,只有当你最后输了或者赢了的时候,再回过头去分析自己走过的每一步,就会发现有哪几步走得不好,影响了后面几步,乃至决定了胜负。但是在下棋过程,你是不知道,也无法确定那几步就会决定胜负关系的。所以说下象棋的输赢取决于一系列的步数,而不是单个的下子。

17.1 序贯决策问题

game
现在设定一个如上图所示的游戏,规则是智能体从Start位置开始,每步只能按照上下左右的动作走一格,当到达+1和-1时游戏结束,当智能体到达+1则表示赢得了游戏。如果智能体选择其中一种动作,而且该动作100%会执行或者说发生,那么很明显可以按照上上右右右或者右右上上上的顺序依次执行,达到+1。但是如果这是一个充满着“不确定”的世界,当智能体选择某一种动作时,只有80%的概率到达动作期望的状态,而20%的概率则是与所选择动作呈90°的方向到达另一个状态。比如说,从(1,1)开始,如果选择上,并且最终到达状态(1,2)的概率只有80%,而实际执行右并到达(2,1)有10%概率,实际执行左将碰到墙壁而保持不动有10%概率。我们用转换模型(Transition Model)来表示这样一组从一个状态因采取不同的动作到达另一个状态的概率模型。

现在我们来定义效用函数。定义一个动作序列的效用函数就是最后状态的效用减去0.04*动作序列的长度,也就是说,每一个除了+1和-1的状态,都有-0.04的“奖励”,而一系列的状态的奖励之和可以计算出其效用。比如说动作序列长度为6,那么一系列动作后到达+1,那么效用为0.76。在一个“确定”的世界,智能体在给定的动作下可以到达期望的状态,而在一个“不确定”的世界,智能体虽然给定了动作,但是有一定的概率达到期望的状态。比如说,智能体在(3,2),动作是(上,右),那么它到达(4,3)状态的概率是0.64。具体过程如下图所示:
在这里插入图片描述
它可能到达的状态有5个:

  • 到达(4,3)的概率为0.8*0.8=0.64
  • 到达(3,3)的概率为0.8*0.1+0.1*0.1=0.09
  • 到达(3,2)的概率为0.8*0.1=0.08
  • 到达(4,2)的概率为0.1*0.8+0.1=0.18
  • 到达(3,1)的概率为0.1*0.1=0.01

正好所有的概率之和为0.64+0.09+0.08+0.18+0.01=1

一个完整的从状态到动作的映射称之为策略。给定一个策略,可以计算出该策略的期望效用。所以,我们要解决的问题也就是计算出最佳的策略,即可以最大化期望效用的策略。这样一个理想和随机的世界,通过转换模型寻找最佳策略的问题称之为马可夫决策问题(MDP),以俄罗斯的统计学家Andrei A. Markov命名。马可夫属性是指任何一个状态的转换概率仅仅取决于当前该状态,而与之前的历史状态无关。

另外,如果是在一个非理想的环境中,智能体在感知时不能获取到足够的信息来描述其当前的状态以及转换概率。在运筹学领域,这样的问题被称为部分可观测马可夫决策问题(POMDP)。这一点暂时不展开。

17.2 值迭代

通过值迭代的算法来计算最佳策略。值迭代的基本思路是先计算每个状态的效用U(state),然后根据效用选择每个状态的最佳行动。
首先需要定义每个状态的效用函数:
R ( i ) = E U ( H ( i , p o l i c y ∗ ∣ M ) = ∑ P ( H ( i , p o l i c y ∗ ) ∣ M ) U h ( H ( i , p o l i c y ∗ ) ) ( 17.1 ) R(i) = EU(H(i, policy*|M) = \sum P(H(i, policy*)|M)U_h(H(i, policy*)) \quad (17.1) R(i)=EU(H(i,policyM)=P(H(i,policy)M)Uh(H(i,policy))(17.1)

这里的policy*是由转换模型M和序列U_h的效用决定的。这里的U_h要求符合可分割特性,该特性表明可以找到一个函数f使得U_h满足:
U h ( [ s 0 , s 1 , . . . , s n ] ) = f ( s 0 , U h ( [ s 1 , . . . , s n ] ) ) U_h([s_0, s_1, ..., s_n]) = f(s_0, U_h([s_1, ..., s_n])) Uh([s0,s1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值