Advertisement

蒙特卡罗策略评估

阅读量:

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

重点是:

复制代码
    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])
    
    
    python
    
    
![](https://ad.itadn.com/c/weblog/blog-img/images/2025-07-13/dSV6tr0pDoAqHuce9fzTOL71Kk4G.png)

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

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

play_game函数类似于进行一次游戏操作。该函数会生成整个游戏过程的状态序列及奖励序列

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

防止重复状态被访问以达到相同的最终状态可以通过设置一个机制来阻止重复状态的添加。

整体而言,在每一次游戏循环中会生成完整的一轮游戏数据;随后通过计算该轮游戏中各个状态的价值并将其记录到字典中对应的状态字段中;最后调用np.mean()函数来获取这些价值的平均值

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

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

复制代码
    G = r + GAMMA * G  # update return
    
    
    python

由于终止状态的奖励被设定为0,并且相应的收获也为0,在每次回合结束后生成的状态序列中(即在终止状态之前),我们可以通过一次价值迭代运算精确确定其价值估计。从而得到了这一更新的价值信息,并在此基础上进行后续迭代运算以逐步提高其准确性。最终算法将收敛于稳定的解。

全部评论 (0)

还没有任何评论哟~