- 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表示只有前一个状态有影响
- Policy Evaluation
Iteration Policy Evaluation(迭代法策略评估) :
策略:
问题:评估一个给定的策略π。
解决方法:利用bellman方程反向迭代。
具体做法:每次迭代过程中,用所有的状态s的第k次迭代得到的的vvk(s′)来计算第k+1次的vk+1(s)的值。经过这种方法的反复迭代,最终是可以收敛到最优的v∗(s)。迭代的公式如下:
- 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