增强学习 - MDPs - Dynamic Programming (一)

本文介绍了马尔科夫决策过程(MDP)的基本概念,包括状态、动作、状态转移概率、回报函数和折扣因子,并详细阐述了迭代法策略评估(动态规划)的原理和步骤。通过一个简单的网格世界示例,展示了如何使用Python进行策略评估,直到状态值收敛。
摘要由CSDN通过智能技术生成
  1. MDP

MDP - 马尔科夫决策过程:
一个马尔可夫决策过程由一个五元组构成M = <S,A,P,R,γ>

S: 表示状态集(states),有s∈S,si表示第i步的状态。
A:表示一组动作(actions),有a∈A,ai表示第i步的动作。
?sa: 表示状态转移概率。?s? 表示的是在当前s ∈ S状态下,经过a ∈ A作用后,会转移到的其他状态的概率分布情况。比如,在状态s下执行动作a,转移到s’的概率可以表示为p(s’|s,a)。
R: S×A⟼R ,R是回报函数(reward function)。有些回报函数状态S的函数,可以简化为R: S⟼R。如果一组(s,a)转移到了下个状态s’,那么回报函数可记为r(s’|s, a)。如果(s,a)对应的下个状态s’是唯一的,那么回报函数也可以记为r(s,a)。
γ: γ是折扣因子,表示前面的状态对当前状态值的影响,取值0-1之间,1表示影响一样大,0表示只有前一个状态有影响

  1. Policy Evaluation

Iteration Policy Evaluation(迭代法策略评估) :
策略:
问题:评估一个给定的策略π。
解决方法:利用bellman方程反向迭代。
具体做法:每次迭代过程中,用所有的状态s的第k次迭代得到的的vvk(s′)来计算第k+1次的vk+1(s)的值。经过这种方法的反复迭代,最终是可以收敛到最优的v∗(s)。迭代的公式如下:
在这里插入图片描述

  1. Policy Evaluation python sample

一个简单的例子:,
在这里插入图片描述

a. 即时奖励:上图是一个grid,左上角和右下角是终点,它们的reward是0,其他的状态,reward都是-1。
b. 状态空间:除了灰色两个格子,其他都是非终点状态
c. 动作空间:在每个状态下,都有四种动作可以执行,分别是上下左右。
d. 转移概率:任何想要离开grid的动作将保持其状态不变,也就是原地不动。其他时候都是直接移动到下一个状态。所以状态转移概率是确定性的。
e. 折扣因子:γ=1
f. 随机策略:在任何状态下,agent都采取随机策略,也就是它的动作是随机选择的,即:
在这里插入图片描述

我们要求解在这个随机策略下的所有的状态的v(s)值:

Steps with code :
a. Build the grid with <S,A,P,R>
数据结构如下, 两个灰色点对应编号是0和15
四个方向分别是0,1,2,3, 上右下左
对于编号1的点,向下,是1: {2: [(1.0, 5, -1.0, False)],表示(prob, next_state, reward, done)
可能向下,下一个状态是点5,本身的reward是-1,不是终点 - not done
<class ‘dict’>: {0: {0: [(1.0, 0, 0.0, True)], 1: [(1.0, 0, 0.0, True)], 2: [(1.0, 0, 0.0, True)], 3: [(1.0, 0, 0.0, True)]}, 1: {0: [(1.0, 1, -1.0, False)], 1: [(1.0, 2, -1.0, False)], 2: [(1.0, 5, -1.0, F

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值