蒙特卡罗策略评估

用蒙特卡罗方法来实现策略评估,即给定一个策略,找出价值函数。

重点是:

    for _ in range(100):
        # generate an episode using pi
        states, rewards = play_game(grid, policy)
        G = 0
        T = len(states)
        for t in range(T - 2, -1, -1):
            s = states[t]
            r = rewards[t + 1]
            G = r + GAMMA * G  # update return

            # we'll use first-visit Monte Carlo
            if s not in states[:t]:
                returns[s].append(G)
                V[s] = np.mean(returns[s])

描述:蒙特卡罗解决的是,不知道环境的状态转移概率分布的问题。

实际上从过去的经验里学习。更符合强化学习实际上的定义。

play_game函数相当于玩游戏玩一次。返回整个游戏过程的状态序列和奖励序列。

接下来通过收获的期望公式来更新收获。

为了避免重复进入相同的状态,可以设置重复的状态不再添加到收获字典里。

总的来说,每玩一次游戏,得到一个完整的回合,接着评估这个回合所有状态的收获,然后存入字典的值列表里最后用np.mean()计算均值。

重复玩游戏的次数越多,得到的价值函数越准确。

那这是怎么起作用的?
不断的迭代,准确的值不断变多

G = r + GAMMA * G  # update return

因为我们知道终止状态的奖励为0,收获也为0,那么在一次回合结束后得到的状态序列中,终止状态之前的状态的价值通过一次迭代后一定是准确的,于是知道了这个新的价值,然后再迭代,越来越准确。最后收敛。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值