IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 基于Monte Carlo 的策略评估 -> 正文阅读

[数据结构与算法]基于Monte Carlo 的策略评估

基于Monte Carlo 的策略评估

在强化学习中,Monte Carlo 是一种被广泛用到的方法。这种方法主要是从经验 experience 中拟合数值,本质上就是从不同的采样中获得结果,然后将其平均。由于最后当采样的数量达到一定的数量级后,这种方法可以很好地拟合我们想要的函数。

这里有一个很有意思的demo,展现的是Monte Carlo 如何应用在评估 π \pi π 的数值上。
https://academo.org/demos/estimating-pi-monte-carlo/

在这里插入图片描述
如上图所示,如果我们随机在一个正方形中随机打入点,那么只要记录圈内的数量和圈外的数量,根据比值就可以得到 π \pi π 的结果。

那么Monte Carlo 是怎么应用在强化学习中的呢?那么比较经典的例子就是 BlackJack(21 )。 在BlackJack,游戏中,我们必须等到游戏最终结束的时候,才知道之前的策略是好还是坏。所以对一场游戏(episode),我们在游戏的过程中记录所有action 和对应的state。然后不断地学习 action value function Q π ( s , a ) Q_{\pi}(s,a) Qπ?(s,a)。这里 s ∈ S , a ∈ A ( s ) s \in \mathcal{S}, a \in \mathcal{A}(s) sS,aA(s) 表示对应的状态和当前状态下的合法行为。 π \pi π 表示当前的策略。这个case 下,游戏的总目标就是学习两组参数:

  • 游戏的策略 π \pi π, 就是给定状态 s s s和对应的行为 action a a a,要返回对应的概率。
  • action value function Q π ( s , a ) Q_{\pi}(s,a) Qπ?(s,a),在策略(policy) π \pi π下,的action value function。 也就是说当给定对应的 s , a s, a s,a 的时候,就返回对应的value数值。

那我们知道这个目的以后呢,接下来分别介绍如何更新 action value function 和 游戏的策略 π \pi π

  • action value function Q π ( s , a ) Q_{\pi}(s,a) Qπ?(s,a) 的更新
    • Action value function的更新如下所示。
      实际上呢,首先我们对这个action value function的进行一个初始化,它实际上就是对每一个状态,都有一个对应的一个action,然后我们也对每一个 s , a s,a s,a对,有一个空的list。这个list呢是用于记录在整个游戏过程中被访问到的对应的状态 s s s和action s s s,所以我们最后会通过平均的方法把它的这个数字进行拟合。
      按照这个思路呢,我们就无限循环,就是说基于这个policy基于这个策略,我们会有一系列的行为,然后在一个在这个游戏过程中有总共有大T个步长,就是然后每一个步长里面都会有对应的这个状态和行为,然后我们会得到对应的结果,这个结果呢,我们会最后把它啊append到对应的List里面去,最后取平均,然后我们希望每一个状态呢都只访问一遍,因为实际上它这个访问一遍和访问多遍的这个实际情况都是一样的,所以我们只访问一遍。

    • 然后我们现在已经得到了这个action value function,那么我们如何去优化这个策略 π \pi π呢?实际上我们可以用 generalized policy iteratioin, GPI这个方法去进行优化 policy π \pi π,这个方法再强化学习中已经被广泛应用,就是说我们先优化这个action value function Q π ( s , a ) Q{\pi}(s,a) Qπ(s,a),然后接着去基于这个function ,预测对应的policy π \pi π然后通过这样子往复的形式呢去得到最终的一个结果.如下图所示:在这里插入图片描述
      就是说通过这种形式呢,我们能够保证对 action value function Q π ( s , a ) Q_{\pi}(s,a) Qπ?(s,a)的优化,同时,第2步我们能够继续对policy进行一个优化,这样的一个交替迭代的一个方式,能够保证两个 function方式都能在最后得到我们想要的结果。虽然这个东西最终还没有经过证明,但是已经从大量的实验中已经经过了论证。

    • 还有一个问题就是如果说我们只是用这个policy π \pi π去优化的话,那么他有很多的状态他是不会被访问到的,因为我们已经得到了这个policy之后呢,在每次使用的时候我们都会去max的 policy,所以这样的问题就会导致很多状态也没有被访问到。所以在使用GPI 的时候,我们会引入一种 ε \varepsilon ε-greedy policy,这种policy能够让算法在学习的过程中,能够随机的去访问一些状态,也就是说它会随机的访问状态和一些对应的行为,所以这样子就能让一些更多的行为能够被访问到,这样子,能够更好的去帮助啊,算法去找到更好的一个决策。对应的算法如下所示:在这里插入图片描述
      这里会看到我们在算法1的基础上,就是加了一个对policy的一个优化。在 policy 优化的过程中,我们再里面加入了 ε \varepsilon ε-greedy policy去帮助网络能够对一些非最有的行为也进行探索。

参考:http://incompleteideas.net/book/first/ebook/node50.html

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2021-12-09 11:55:23  更:2021-12-09 11:58:12 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年1日历 -2025/1/10 2:41:14-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码