Pytorch深度强化学习1-5:详解蒙特卡洛强化学习原理

2023-12-05

0 专栏介绍

本专栏重点介绍强化学习技术的数学原理,并且 采用Pytorch框架对常见的强化学习算法、案例进行实现 ,帮助读者理解并快速上手开发。同时,辅以各种机器学习、数据处理技术,扩充人工智能的底层知识。

????详情: 《Pytorch深度强化学习》


在这里插入图片描述

1 蒙特卡洛强化学习

Pytorch深度强化学习1-4:策略改进定理与贝尔曼最优方程详细推导 中,我们介绍了贝尔曼最优方程

{ V γ ∗ ( s ) = max ⁡ a ∈ A ∑ s ′ ∈ S P s → s ′ a [ R s → s ′ a + γ V γ ∗ ( s ′ ) ] Q γ ∗ ( s , a ) = ∑ s ′ ∈ S P s → s ′ a [ R s → s ′ a + γ max ⁡ a ′ ∈ A Q γ ∗ ( s ′ , a ′ ) ] { \begin{cases} V_{\gamma}^{*}\left( s \right) =\underset{a\in A}{\max}\sum_{s'\in S}{P_{s\rightarrow s'}^{a}}\left[ R_{s\rightarrow s'}^{a}+\gamma V_{\gamma}^{*}\left( s' \right) \right]\\ Q_{\gamma}^{*}\left( s,a \right) =\sum_{s'\in S}{P_{s\rightarrow s'}^{a}}\left[ R_{s\rightarrow s'}^{a}+\gamma \underset{a'\in A}{\max}Q_{\gamma}^{*}\left( s',a' \right) \right]\\\end{cases}} V γ ( s ) = a A max s S P s s a [ R s s a + γ V γ ( s ) ] Q γ ( s , a ) = s S P s s a [ R s s a + γ a A max Q γ ( s , a ) ]

然而,在现实的强化学习任务中,转移概率、奖赏函数甚至环境中存在哪些状态往往很难得知,因此有模型强化学习在实际应用中不可行。本节借助有模型学习的思想推广到更一般的 免模型学习(model-free learning) 中,即假设转移概率和环境状态未知,奖赏也仅是根据经验或需求设计

蒙特卡洛强化学习 是免模型学习中的一种,其核心思想是使用蒙特卡洛方法来估计各个状态-动作对的值函数。通过对大量的样本进行采样,并根据它们的累积奖励来评估状态-动作对的价值,智能体可以逐步学习到最优策略。

2 策略评估原理

在有模型学习中,采用的是贝尔曼算子迭代进行策略评估,即

Q γ π ( s , a ) = ∑ s ′ ∈ S P s → s ′ a [ R s → s ′ a + γ ∑ a ′ ∈ A π ( s ′ , a ′ ) Q γ π ( s ′ , a ′ ) ] Q_{\gamma}^{\pi}\left( s,a \right) =\sum_{s'\in S}{P_{s\rightarrow s'}^{a}}\left[ R_{s\rightarrow s'}^{a}+\gamma \sum_{a'\in A}{\pi \left( s',a' \right) Q_{\gamma}^{\pi}\left( s',a' \right)} \right] Q γ π ( s , a ) = s S P s s a [ R s s a + γ a A π ( s , a ) Q γ π ( s , a ) ]

考虑到动力学特性 P s → s ′ a P_{s\rightarrow s'}^{a} P s s a 和状态集合 S S S 未知,因此上式无法计算。回归到定义

Q γ π ( s , a ) = E [ R t ] ∣ s t = s , a t = a Q_{\gamma}^{\pi}\left( s,a \right) =\mathbb{E} \left[ R_t \right] \mid_{s_t=s,a_t=a}^{} Q γ π ( s , a ) = E [ R t ] s t = s , a t = a

可以用蒙特卡洛采样来近似逼近回报期望,即

Q γ π ( s , a ) ≈ 1 n ∑ i = 1 n R t , i Q_{\gamma}^{\pi}\left( s,a \right) \approx \frac{1}{n}\sum_{i=1}^n{R_{t,i}} Q γ π ( s , a ) n 1 i = 1 n R t , i

其中回报 R t , i = ∑ j = t + 1 ∞ γ j − t r j , i R_{t,i}=\sum\nolimits_{j=t+1}^{\infty}{\gamma ^{j-t}r_{j,i}} R t , i = j = t + 1 γ j t r j , i ,问题转换为如何采样这些回报。蒙特卡洛强化学习提出如下的采样方法:

  • 设初始状态为 s 0 s_0 s 0 并给定终止状态 s T s_T s T
  • s 0 s_0 s 0 下根据当前策略 π ( a ∣ s 0 ) \pi \left( a|s_0 \right) π ( a s 0 ) 选择一个动作 a 0 a_0 a 0
  • s 0 s_0 s 0 a 0 a_0 a 0 确定的条件下,环境转换到下一个状态 s 1 s_1 s 1 并返回一个奖励 r 1 r_1 r 1 (这个过程是未知的动力学过程,由环境自身决定而不受智能体影响);
  • 重复上述过程直至达到终止状态 s T s_T s T

称有序数对 ( s t , a t , r t + 1 ) \left( s_t,a_t,r_{t+1} \right) ( s t , a t , r t + 1 ) 为一个步骤,重复过程中产生的序列

< s 0 , a 0 , r 1 , s 1 , a 1 , r 2 , ⋯   , s T − 1 , a T − 1 , r T , s T > \left< s_0,a_0,r_1,s_1,a_1,r_2,\cdots ,s_{T-1},a_{T-1},r_T,s_T \right> s 0 , a 0 , r 1 , s 1 , a 1 , r 2 , , s T 1 , a T 1 , r T , s T

称为 经验轨迹 幕(episode) 。由于策略 π \pi π 是概率分布,因此即使不同幕都达到了给定的终态,中间执行轨迹可能存在差异,但任意两个幕之间独立同分布于 π \pi π

3 策略改进原理

蒙特卡洛强化学习中用来生成采样幕的策略称为 行动策略(behavior policy) ,记为 b b b ;实际应用的待评估、待改进的策略称为 目标策略(target policy) ,记为 π \pi π 。当 π = b \pi=b π = b 时称为 同轨策略方法(on-policy) ,否则称为 离轨策略方法(off-policy) 。必须指出,用于采样的策略必须是软性策略,即对 ∀ s ∈ S , a ∈ A ( s ) , b ( a ∣ s ) > 0 \forall s\in S,a\in A\left( s \right) ,b\left( a|s \right) >0 s S , a A ( s ) , b ( a s ) > 0 ,若采样策略是确定性策略,则必然导致部分状态-动作对永远不会出现在幕中,造成样本缺失与误差

3.1 同轨蒙特卡洛强化学习

引入单步强化学习的 ϵ \epsilon ϵ -贪心思想,这部分请参考 Pytorch深度强化学习1-2:详解K摇臂赌博机模型和ϵ-贪心算法 ,设

π = b ( a ∣ s ) = { a ∗ = a r g max ⁡ a ∈ A Q π ( s , a ) , 概率 1 − ϵ + ϵ ∣ A ( s ) ∣ A ( s ) / a ∗    , 概率 ϵ ∣ A ( s ) ∣ \pi =b\left( a|s \right) =\begin{cases} a^*=\mathrm{arg}\max _{a\in A}Q^{\pi}\left( s,a \right) , \text{概率}1-\epsilon +\frac{\epsilon}{|A\left( s \right) |}\\ A\left( s \right) / a^*\,\, , \text{概率}\frac{\epsilon}{|A\left( s \right) |}\\\end{cases} π = b ( a s ) = { a = arg max a A Q π ( s , a ) , 概率 1 ϵ + A ( s ) ϵ A ( s ) / a , 概率 A ( s ) ϵ

则算法流程如表所示

在这里插入图片描述

3.2 离轨蒙特卡洛强化学习

同轨策略中虽然保证了采样的随机性,但导致了以下问题

  • 引入先验误差: ϵ \epsilon ϵ 是人为经验设置的,不合理的 ϵ \epsilon ϵ 会为策略带来错误的先验分布;
  • 目标策略失去确定性

因此引入离轨策略,将行动策略和目标策略分而治之。

将基于策略 π \pi π 的回报期望展开为回报与其概率分布加权的形式

Q π ( s , a ) = E π [ R ] ∣ s t = s , a t = a = ∑ R ⋅ P ( r t + 1 , s t + 1 , ⋯   , s T − 1 , a T − 1 , s T ∣ s t = s , a t = a ) \begin{aligned}Q^{\pi}\left( s,a \right) &=\mathbb{E} _{\pi}\left[ R \right] \mid_{s_t=s,a_t=a}^{}\\&=\sum{R\cdot P\left( r_{t+1},s_{t+1},\cdots ,s_{T-1},a_{T-1},s_T|s_t=s,a_t=a \right)}\end{aligned} Q π ( s , a ) = E π [ R ] s t = s , a t = a = R P ( r t + 1 , s t + 1 , , s T 1 , a T 1 , s T s t = s , a t = a )

其中概率分布为从当前步骤到幕结束所有元素的联合分布。

根据马尔科夫性,下一个时刻的状态只取决于当前状态,则

Q π ( s , a ) = ∑ R ⋅ P ( r t + 1 , s t + 1 ∣ s t = s , a t = a ) π ( a t + 1 ∣ s t + 1 ) P ( r t + 2 , s t + 2 ∣ s t + 1 , a t + 1 ) ⋯ = ∑ R ∏ i = t + 1 T − 1 π ( a i ∣ s i ) P ( r i , s i ∣ s i − 1 , a i − 1 ) P ( s T ∣ s T − 1 , a T − 1 ) = ∑ ∏ i = t + 1 T − 1 π ( a i ∣ s i ) b ( a i ∣ s i ) [ R ∏ i = t + 1 T − 1 b ( a i ∣ s i ) P ( r i , s i ∣ s i − 1 , a i − 1 ) P ( s T ∣ s T − 1 , a T − 1 ) ] = ∑ ( ρ t + 1 : T − 1 R ) ∏ i = t + 1 T − 1 b ( a i ∣ s i ) P ( r i , s i ∣ s i − 1 , a i − 1 ) P ( s T ∣ s T − 1 , a T − 1 ) = E b [ ρ t + 1 : T − 1 R ] ∣ s t = s , a t = a \begin{aligned}Q^{\pi}\left( s,a \right) &=\sum{R\cdot P\left( r_{t+1},s_{t+1}|s_t=s,a_t=a \right) \pi \left( a_{t+1}|s_{t+1} \right) P\left( r_{t+2},s_{t+2}|s_{t+1},a_{t+1} \right)}\cdots \\&=\sum{R\prod_{i=t+1}^{T-1}{\pi \left( a_i|s_i \right)}P\left( r_i,s_i|s_{i-1},a_{i-1} \right) P\left( s_T|s_{T-1},a_{T-1} \right)}\\&=\sum{\prod_{i=t+1}^{T-1}{\frac{\pi \left( a_i|s_i \right)}{b\left( a_i|s_i \right)}}\left[ R\prod_{i=t+1}^{T-1}{b\left( a_i|s_i \right) P\left( r_i,s_i|s_{i-1},a_{i-1} \right) P\left( s_T|s_{T-1},a_{T-1} \right)} \right]}\\&=\sum{\left( \rho _{t+1:T-1}R \right)}\prod_{i=t+1}^{T-1}{b\left( a_i|s_i \right) P\left( r_i,s_i|s_{i-1},a_{i-1} \right) P\left( s_T|s_{T-1},a_{T-1} \right)}\\&=\mathbb{E} _b\left[ \rho _{t+1:T-1}R \right] \mid_{s_t=s,a_t=a}^{}\end{aligned} Q π ( s , a ) = R P ( r t + 1 , s t + 1 s t = s , a t = a ) π ( a t + 1 s t + 1 ) P ( r t + 2 , s t + 2 s t + 1 , a t + 1 ) = R i = t + 1 T 1 π ( a i s i ) P ( r i , s i s i 1 , a i 1 ) P ( s T s T 1 , a T 1 ) = i = t + 1 T 1 b ( a i s i ) π ( a i s i ) [ R i = t + 1 T 1 b ( a i s i ) P ( r i , s i s i 1 , a i 1 ) P ( s T s T 1 , a T 1 ) ] = ( ρ t + 1 : T 1 R ) i = t + 1 T 1 b ( a i s i ) P ( r i , s i s i 1 , a i 1 ) P ( s T s T 1 , a T 1 ) = E b [ ρ t + 1 : T 1 R ] s t = s , a t = a

其中 ρ t + 1 : T − 1 = ∏ i = t + 1 T − 1 π ( a i ∣ s i ) / b ( a i ∣ s i ) \rho _{t+1:T-1}=\prod\nolimits_{i=t+1}^{T-1}{ { {\pi \left( a_i|s_i \right)}/{b\left( a_i|s_i \right)}}} ρ t + 1 : T 1 = i = t + 1 T 1 π ( a i s i ) / b ( a i s i ) 重要性因子 ,关联了行动策略与目标策略。不妨取行动策略 b b b 为目标策略 π \pi π ϵ \epsilon ϵ 贪心形式进行采样,而目标策略仍保持确定性策略,具体算法流程如表所示。

在这里插入图片描述


???? 更多精彩专栏

  • 《ROS从入门到精通》
  • 《Pytorch深度学习实战》
  • 《机器学习强基计划》
  • 《运动规划实战精讲》

????源码获取 · 技术交流 · 抱团学习 · 咨询分享 请联系????
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Pytorch深度强化学习1-5:详解蒙特卡洛强化学习原理 的相关文章

  • 在二维数组中进行所有可能的组合

    我正在尝试制作具有所有可能组合的 4x4 16 像素黑白图像数组 我制作了以下数组作为模板 template 0 0 0 0 start with all white pixels 0 0 0 0 0 0 0 0 0 0 0 0 然后我想迭
  • 函数名称未定义

    我有一段代码 看起来像这样 if name main main def main print hello 但是 当我尝试运行此代码时 出现错误 NameError 名称 main 未定义 我是否没有在函数 def main 的第一行定义名称
  • 学习Python中的解析器

    我记得我读过有关解析器的内容 您只需提供一些示例行 它就知道如何解析某些文本 它只是确定两条线之间的差异 以了解可变部分是什么 我以为它是用 python 写的 但我不确定 有谁知道那是什么图书馆吗 可能你的意思是模板制作器 http co
  • pandas read_csv 之前预处理数据文件

    我使用 SAP 的数据输出 但它既不是 CSV 因为它不引用包含其分隔符的字符串 也不是固定宽度 因为它具有多字节字符 它是一种 固定宽度 字符 为了将其放入 pandas 我当前读取文件 获取分隔符位置 对分隔符周围的每一行进行切片 然后
  • 在 python 中发送标头[重复]

    这个问题在这里已经有答案了 我有以下 python 脚本 我想发送 假 标头信息 以便我的应用程序就像 Firefox 一样运行 我怎么能这么做呢 import urllib urllib2 cookielib username passw
  • NumPy 数组与 SQLite

    我在 Python 中见过的最常见的 SQLite 接口是sqlite3 但是有什么东西可以很好地与 NumPy 数组或 rearray 配合使用吗 我的意思是 它可以识别数据类型 不需要逐行插入 并提取到 NumPy rec 数组中 有点
  • 获取字符串模板中所有标识符列表的函数(Python)

    对于标准库string template在Python中 有没有一个函数可以获取所有标识符的列表 例如 使用以下 xml 文件
  • pandas 数据框的最大大小

    我正在尝试使用读取一个有点大的数据集pandas read csv or read stata功能 但我不断遇到Memory Errors 数据帧的最大大小是多少 我的理解是 只要数据适合内存 数据帧就应该没问题 这对我来说不应该是问题 还
  • 尝试校准keras模型

    我正在尝试通过 Sklearn 实现来校准我的 CNN 模型CalibratedClassifierCV 尝试将其包装为KerasClassifier并覆盖预测功能但没有成功 有人可以说我做错了什么吗 这是模型代码 def create m
  • 提高光线追踪命中功能的性能

    我有一个简单的 python 光线追踪器 渲染 200x200 的图像需要 4 分钟 这对于我的口味来说绝对是太多了 我想改善这种情况 几点 我为每个像素发射多条光线 以提供抗锯齿功能 每个像素总共发射 16 条光线 200x200x16
  • Pygame:有人可以帮我实现双跳吗?

    我知道已经有其他关于此问题的帖子了 但我的运动系统与我发现的有点不同 所以随后我问这个问题 我的运动系统基于一个名为的命名元组Move up left right down 然后就是这个 def update self move block
  • 在python中使用编解码器utf-8打开文件错误

    我在 windows xp 和 python 2 6 4 上执行以下代码 但它显示 IOError 如何打开名称带有 utf 8 编解码器的文件 gt gt gt open unicode txt euc kr encode utf 8 T
  • 为什么我无法杀死 k8s pod 中的 python 进程?

    我试图杀死一个 python 进程 ps aux grep python root 1 12 6 2 1 2234740 1332316 Ssl 20 04 19 36 usr bin python3 batch run py root 4
  • 解析整数集的字符串并列出间隔

    I have 2 5 7 9 12 string 我想从中获取 2 5 7 8 9 12 列表 python中有没有内置的函数 Thanks UPD 我想 直接的答案是No 不管怎样 谢谢你的 片段 使用一个 建议者斯文 马尔纳克 s 2
  • 在 4K 屏幕上使用 Matplotlib 和 TKAgg 或 Qt5Agg 后端

    我在 Ubuntu 16 04 上使用 Matplotlib 2 0 和 Python 3 6 来创建数据图 电脑显示器的分辨率为 4k 分辨率为 3840x2160 绘图数字看起来非常小 字体也很小 我已经尝试过TKAgg and Qt5
  • 为什么我会在 Python 字符串格式中使用除 %r 之外的其他内容?

    我偶尔会使用 Python 字符串格式 这可以像这样完成 print int i Float f String s 54 34 434 some text 但是 这也可以这样做 print int r Float r String r 54
  • 带 Qt 的菜单栏/系统托盘应用程序

    我是 Qt PyQt 的新手 我正在尝试制作一个应用程序 其功能将从菜单栏 系统托盘执行 这里展示了一个完美的例子 我找不到关于如何做到这一点的好资源 有人可以建议吗 Thanks 我认为您正在寻找与QMenu and QMainWindo
  • Django 中使用外键的抽象基类继承

    我正在尝试在 Django 支持的网站上进行模型继承 以遵守 DRY 我的目标是使用一个名为 BasicCompany 的抽象基类来为三个子类提供通用信息 Butcher Baker CandlestickMaker 它们位于各自的应用程序
  • 在自定义 keras 层的调用函数中传递附加参数

    我创建了一个自定义 keras 层 目的是在推理过程中手动更改前一层的激活 以下是基本层 它只是将激活值乘以一个数字 import numpy as np from keras import backend as K from keras
  • 将函数按元素应用于两个 DataFrame

    如何应用函数z ij f x ij y ij 来自数据框X and Y相同大小并将结果保存到 DataFrameZ 这取决于你有什么样的功能 很多功能已经被矢量化为数据框 例如 等等 所以对于这些功能 你可以简单地做Z X Y or Z X

随机推荐

  • unity dots jobSystem 记录

    Looking for a way to get started writing safe multithreaded code Learn the principles behind our Job System and how it w
  • Linux(12):磁盘配额(Quota)与进阶文件系统管理

    磁盘配额 Quota 的应用与实作 Quota 的一般用途 针对 www server 例如 每个人的网页空间的容量限制 针对 mail server 例如 每个人的邮件空间限制 针对 file server 例如 每个人最大的可用网络硬盘
  • Linux报too many open files的解决方案及 lsof、sysctl 命令介绍

    Too many open files in system 问题处理 服务器异常 一串的etc下的shell文件报 etc profile d bash completion sh Too many open files in system
  • 算法题-简单系列-03-判断链表中是否有环

    文章目录 1 题目 1 1 思路1 双指针 1 2 思路2 哈希表 1 题目 判断给定的链表中是否有环 如果有环则返回true 否则返回false 1 1 思路1 双指针 我们使用两个指针 fast 与 slow 它们起始都位于链表的头部
  • React为啥要用PureComponent代替Component

    个人博客 公众号 React中的purecomponent 求关注 写在前面的话 之所以写这个文章 是因为现在在维护react的旧项目 用的是类组件 所以不得不使用pureComponent 而现在开发都是用函数式组件 所以不建议用类组件开
  • Android 相机库CameraView源码解析 (三) : 滤镜相关类说明

    1 前言 这段时间 在使用 natario1 CameraView 来实现带滤镜的 预览 拍照 录像 功能 由于 CameraView 封装的比较到位 在项目前期 的确为我们节省了不少时间 但随着项目持续深入 对于 CameraView 的
  • Android 相机库CameraView源码解析 (四) : 带滤镜拍照

    1 前言 这段时间 在使用 natario1 CameraView 来实现带滤镜的 预览 拍照 录像 功能 由于 CameraView 封装的比较到位 在项目前期 的确为我们节省了不少时间 但随着项目持续深入 对于 CameraView 的
  • 阿里内部自动化测试教程:python+pytest接口自动化-HTTP协议基础

    HTTP协议简介 HTTP 即 HyperText Transfer Protocol 超文本传输协议 是互联网上应用最为广泛的一种网络协议 所有的 WWW 文件都必须遵守这个标准 设计 HTTP 最初的目的是为了提供一种发布和接收 HTM
  • 算法题-简单系列-02-合并两个排序的算法

    文章目录 1 题目 1 1 迭代 1 题目 输入两个递增的链表 单个链表的长度为n 合并这两个链表并使新链表中的节点仍然是递增排序的 1 1 迭代 设置result为哑结点 放置于新链表之前 最后返回的就是result next 设置cur
  • C/C++ 谓词 lambda表达式

    文章目录 前言 1 引例 2 谓词的含义 2 1 谓词运用 总结 前言 最近看lambda相关知识点 发现这个概念比较难以理解 看了几遍 可能是第一次正式接触STL的原因 对标准库的泛型编程理解不够深刻 这篇博客就写一下lambda的相关
  • centos7 设置静态ip

    文章目录 设置VMware 主机设置 centos7 设置 设置VMware 主机设置 cen
  • 算法题-简单系列-05-两个链表的第一个公共结点

    文章目录 1 题目 1 1 思路1 循环遍历 1 题目 输入两个无环的单向链表 找出它们的第一个公共结点 如果没有公共节点则返回空 1 1 思路1 循环遍历 使用两个指针N1 N2 一个从链表1的头节点开始遍历 我们记为N1 一个从链表2的
  • 计算机组成与设计:硬件/软件接口,第二章详细梳理,附思维导图

    文章目录 二 指令 计算机的语言 章节导图 一 MIPS概述 计算机的组成 MIPS的设计思想 MIPS 32中的通用寄存器 二 三类汇编指令
  • JAVA打印日志规范实践

    前言 日常开发 日志打印尤为重要 记录程序运行情况 方便快速定位问题 一份实用的日志打印规范能极大的帮助我们日常开发 一 日志介绍 1 弄懂日志 SpringBoot启动日志 2 什么是日志 日志 维基百科中对其的定义是 一个或多个由服务器
  • 当班主任应该具备什么条件

    当班主任需要具备什么条件 这个问题其实可以从多个角度来回答 下面我列举一些我认为比较重要的条件 责任心和爱心 班主任的职责是关注学生的成长 帮助学生解决学习和生活中的问题 这需要班主任具备强烈的责任心和爱心 只有真正关心学生的成长和发展 才
  • 算法题-简单系列-01-链表反转

    文章目录 1 题目 1 1 使用栈解决 1 2 反转链表 1 题目 给定一个单链表的头结点pHead 该头节点是有值的 比如在下图 它的val是1 长度为n 反转该链表后 返回新链表的表头 如当输入链表 1 2 3 时 经反转后 原链表变为
  • 数字化转型浪潮中,施耐德电气如何用技术革新引领未来?

    作为一家187年的老牌企业 施耐德电气不仅见证了科技的演进 也是数字化转型潮流中的先行者 在近日的施耐德电气数字化战略暨软件创新沟通会上 施耐德电气全球执行副总裁 首席数字官 Peter Weckesser 施耐德电气副总裁 数字化服务业务
  • 零基础上手,秒识别检测,IDEA研究院发布全新T-Rex模型

    目标检测作为当前计算机视觉落地的热点技术之一 已被广泛应用于自动驾驶 智慧园区 工业检测和卫星遥感等场景 开发者在研究相关目标检测技术时 通常需熟练掌握图像目标检测框架 如通用目标检测框架 YOLO 系列 旋转目标检测框架 R3Det 等技
  • 什么是野指针?

    什么是野指针 指针指向了非法的地址空间 称之为野指针
  • Pytorch深度强化学习1-5:详解蒙特卡洛强化学习原理

    目录 0 专栏介绍 1 蒙特卡洛强化学习 2 策略评估原理 3 策略改进原理 3 1 同轨蒙特卡洛强化学习 3 2 离轨蒙特卡洛强化学习 0 专栏介绍 本专栏重点介绍强化学习技术的数学原理 并且 采用Pytorch框架对常见的强化学习算法