[通俗易懂]《动手学强化学习》学习笔记3-第5-13章

文章目录

  • 前言
  • 小总结(前文回顾)
  • 问题1:
  • 问题2:
  • 问题3:
    • 补充一点
  • 0.26.2版本gym环境问题


前言

参考:
《动手学强化学习》作者:张伟楠,沈键,俞勇
动手学强化学习 网页版
动手学强化学习 github代码
动手学强化学习 视频
强化学习入门这一篇就够了!!!万字长文(讲的很好)
+
参考:
强化学习入门(第二版)读书笔记

小总结(前文回顾)

先简单总结一下第一章所学的知识点:
我做了一个思维导图很方便理解
之后学习完会在这里一直更新。
自己学习时做的笔记:https://github.com/wild-firefox/Hands-on-RL

补充一下要下载的库
#第5章
pip install tqdm
#第7章
pip install torch
pip install gymnasium

这里仅记录下学习时遇到的问题,已经学了一个月了,只是忙于毕设没空来更新一下学习进度,发现踏入门槛后学习强化学习就轻松了,当然还有一些实验时学到的一些小细节,准备下个博客再更。

问题1:

第9章:策略梯度算法

在这里插入图片描述
问题1:上图箭头这里的t是不是对应下图的代码这里?
在这里插入图片描述
答:不是,上图的意思是:每次从一个新的序列开始时,状态重置reset,return为0,可以看作每次一个序列开始时,代表的意思是在伪代码中:for e =1 ->E do。

上图伪代码的t在代码中代表是意思是下图中的i,即计算当前一个序列eposide结束后,在更新时得到的return总和G。
在这里插入图片描述

问题2:

第8章:DQN改进算法

在这里插入图片描述
问题2:画红色横线这句话没看懂。
答:
首先:由于V值加上任意常量,并且在A中减去这个任意常量,由于这个常量的不确定,导致V不能反映state值,A不能反映advantage值。所以要将公式改成-maxA的形式。(就是将这个常量定为maxA的意思,也就得到了V=Q+maxA = maxQ)

此时已经默认优势函数A-maxA。
而这句话意思是:强制A-maxA =0,即就是A = maxA。
通俗来说,就是限制了这个常量为一个定值,取为maxA,当此时的A=maxA(下一个状态的)时,V= maxQ。

问题3:

第10章 A-C算法

在这里插入图片描述
问题3:这里箭头对应下面代码这里是没错,
在这里插入图片描述
为什么下面图中,方框内td_delta也要加detach,(即不需要加梯度信息)?
(detach() 为去掉梯度信息,训练时不训练。)
在这里插入图片描述
答:
根据伪代码:
在这里插入图片描述
td_delta 在求梯度的符号的左边 所以不求梯度 加detach
td_target 只对状态函数(w参数的函数)求梯度,而不对时序差分目标求梯度, 加detach。
对应到代码里解释:
在这里插入图片描述
actor_loss只对log_prob求梯度
critic_loss只对self.critic(states)求梯度

经过训练测试后
原代码结果:(都加detach)
在这里插入图片描述
td_delta 不加detach(),td_target加detach(),测试结果如下:
在这里插入图片描述

此时我看出第二张图的效果怎么比第一张图好?
加大eposide到3000:
原文:
在这里插入图片描述
td_delta 不加detach(),td_target加detach(),测试结果如下:
在这里插入图片描述
结论:原文代码是对的。
出现单次效果时,不能妄下结论,要通过加不同随机种子求均值或加大eposide来验证。

后续又测试了td_target加 和不加的情况:
td_delta 加detach(),td_target不加detach():
在这里插入图片描述

两者都不加:
出现报错:
RuntimeError: Trying to backward through the graph a second time (or directly access saved tensors after they have already been freed). Saved intermediate values of the graph are freed when you call .backward() or autograd.grad(). Specify retain_graph=True if you need to backward through the graph a second time or if you need to access saved tensors after calling backward.
翻译为:
RuntimeError:试图第二次向后遍历图(或者在已释放的张量之后直接访问已保存的张量)。当您调用.backward()或autograd.grad()时,将释放图中保存的中间值。如果需要第二次向后遍历图,或者在调用backward后需要访问保存的张量,则指定retain_graph=True。

参考:深度学习框架拾遗:【Pytorch(七)】——Pytorch动态计算图
了解了计算图,对这个错误的一点理解:
当着两个都进行梯度计算时,在首先进行的actor的反向传播中,结束时删除了计算图,此时的计算图包含了critic的反向传播中要进行计算的值td_target和self.critic(states)信息。
而原本都带有detach时,计算图中td_delta和td_target保留了下来,然后计算他们所需要的参数也保留了下来,所以可以继续计算backward(),不会报错。
不知道理解的对不对

结论:原文代码没错。

补充一点

在这里插入图片描述
第一个mean必须加上,因为backward()的必须是个标量(损失函数输出为一个标量),求mean这里意思为求期望。
第二个mean可加可不加,因为mse均方差损失函数已经有求均值的操作了。

0.26.2版本gym环境问题

将原代码修改三处:
第1、2处:
将训练的函数改为如下:(同理off_policy也是如此)
在这里插入图片描述
第3处:
这里注释掉,seed =0 改到为上图的在env.reset()的函数里。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/707231.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

重生奇迹MU快速获取经验解析

重生奇迹MU觉醒卡级怎么办快速获取经验攻略,在游戏中卡级是玩家会遇到的情况之一,面对打不过的敌人和过不去的主线,想办法升级才是最主要的,游戏中有很多获取经验的途径。下面让我们一起来了解一下卡级后获取经验的攻略&#xff0…

搭建Prometheus+grafana监控系统

1. 项目目标 (1)熟练部署安装node_exporter (2)熟练部署安装prometheus (3)熟练部署安装grafana 2. 项目准备 2.1. 规划节点 主机名 主机IP 节点规划 prometheus-server 10.0.1.10 server prome…

【高阶数据结构(四)】图的最短路径问题

💓博主CSDN主页:杭电码农-NEO💓   ⏩专栏分类:高阶数据结构专栏⏪   🚚代码仓库:NEO的学习日记🚚   🌹关注我🫵带你学习更多数据结构   🔝🔝 高阶数据结构 1. 前言2. 单源最短…

弘君资本股市分析|巴菲特“神秘持仓”曝光!盘后大涨

巴菲特“神秘持仓”揭晓。 当地时间5月15日周三,巴菲特旗下伯克希尔哈撒韦提交的13F美股持仓文件显现,一季度伯克希尔持有2592万股安达稳妥(Insurer Chubb),持仓市值超67亿美元(约合人民币485亿元&#xf…

微信公众号自定义分销商城小程序源码系统 带完整的安装代码吧以及系统部署搭建教程

系统概述 微信公众号自定义分销商城小程序源码系统是一款功能强大的电商解决方案,它集成了商品管理、订单处理、支付接口、分销管理等多种功能。该系统支持自定义界面设计,商家可根据自身需求调整商城的页面布局和风格,打造独特的品牌形象。…

“碳”索不止

2023年,欧盟宣布将在未来实施CBAM(碳边境调节机制),也称为碳关税,是一种针对进口货物的碳排放定价政策工具。该机制要求在欧盟境内的进口商对其进口产品支付相应的碳排放费用,以弥补其生产过程中产生的碳排…

ESP32的LEDC——以电机调速、舵机控制为例

引言 在微控制器编程中,PWM(脉冲宽度调制)是一种重要的技术,它可以用于模拟模拟信号,控制LED亮度,驱动电机,以及生成音频信号等。ESP32是内置了一个高级LEDC(LED PWM Controller&…

【数据结构】排序(一)—— 希尔排序(思路演进版)

目录 一、常见的排序算法分类 二、常见排序算法的实现 2.1插入排序 2.1.1直接插入排序 基本思想 思路 step1.单趟控制 step2.总体控制 代码实现 测试 特性总结 2.1.2 希尔排序( 缩小增量排序 ) 基本思想 思路演进 🌈1.代码实现单组排序(…

不懂技术可以当项目经理吗?看完这篇你就知道了

项目经理作为项目的核心负责人,主要负责项目的规划、组织、协调和控制。 如果你不懂技术,但具备出色的项目管理技能,你仍然可以成功地管理项目。你可以通过与技术团队建立紧密的合作关系,明确项目需求,并依赖技术团队…

Echart-折线图根据区间设置折线的样式

根据X轴区间设置折线样式 完整配置如下: option {xAxis: {type: category,data: [Mon, Tue, Wed, Thu, Fri, Sat, Sun]},yAxis: {type: value},series: [{data: [150, 230, 224, 218, 135, 147, 260],type: line}],//【注】:如果一个图中有多个折线&a…

KCM Trade受邀出席Fastbull 2024年投资影响力大奖泰国颁奖典礼

2024年4月28日,由Fastbull主办的2024年投资影响力大奖泰国颁奖典礼,在泰国曼谷的素拉旺格兰德中心点酒店盛大举办,KCM Trade受邀出席现场,这是一场备受瞩目的盛会。此次颁奖典礼汇聚了全球金融精英和业界领袖,共同见证…

使用mysql主从热备+keepalived服务+ipvsadm工具 实现 mysql高可用主备+负载均衡

目录 1、工作原理 2、环境准备 3、分别在主服务器和备用服务器上安装keepalived和ipvsadm 4、修改keepalived服务的配置文件 4.1 修改主服务器上的keepalive服务的配置文件 4.2 修改备用服务器上的keepalive服务配置文件 5、编写mysql监控脚本放到主服务器上 6、在主服…