深度强化学习——第一次知识小结(3.5)

一、策略网络的小结:

重要概念回顾:

1、动作价值函数QΠ(st,at)

动作价值函数是未来奖励总和Ut的条件期望,如果已知了策略函数Π与当前的状态st,QΠ就可以对所有的动作a打分,以此来决定选择哪个a

其实顾名思义就是给所有当前状态下所有动作打分的函数

2、状态价值函数VΠ(st)=EA[QΠ(st,A)],A~(·|st)

顾名思义就是给当前所处状态打分,得到一个值来判断当前状态是好是坏

1、策略学习的最终目标

》学习到一个策略函数Π,比如在当前状态下,agent需要做动作,但是它不知道应该做什么,就调用Π(a|s)函数,来决定当下最应该做出什么动作

在这里,调用Π(a|s)函数会得到一个数组(0.2,0.1,0.7),数组里的每个元素代表相应动作被选择的概率,然后agent从里面随机抽一个动作来执行

2、但是现实中可能有无数个状态/动作,而且我们无法预知未来,得到这个上帝函数Π(绝对正确),那么应该怎么办呢?

》使用策略神经网络Π(a|s;θ)来近似Π(a|s),所以我们的目标就是学习到一个最好的神经网络参数θ,来使Π(a|s;θ)无限接近Π(a|s)

3、我如何评价神经网络参数θ的好坏呢?

》使用V(st;θ)=。。。。。。。。。。。。来评价策略网络Π(a|s;θ)的好坏,进而评价θ的好坏,我们可以通过求V(st;θ)的极大值来获得局部最大值,也可以通过求V(st;θ)的条件期望J(θ)=ES[(S,θ)]来获得全局最大值,在本文的线性模型当中,求V(st;θ)的极大值就是全局的最大值了

4、那么如何求V(st;θ) max呢?

》先随机初始化参数θ,然后通过梯度上升,使得θ朝着极大值点的方向移动

5、如何求策略梯度

呢?

1)假如动作是离散的,即A={"left","right","up"}

这样我们计算出来策略梯度,就可以更新参数θ了

2)假如动作是连续的,我们使用蒙特卡洛近似:

 由于:

所以:

因此我们可以使用g(a hat,θ)来代替策略梯度

最后还有一个问题就是QΠ怎么算?

我们不知道QΠ,所以没法算qt,那么如何近似去算qt呢?

法一:用策略网络Π来控制agent运动,从一开始一直玩到游戏结束,把整个游戏的轨迹都记录下来,s1,a1,r1,s2,a2,r2,...sn,an,rn,观测到所有奖励r,我们就可以算出ut

由于价值函数QΠ是Ut的期望,我们可以用大Ut的观测值小ut来近似QΠ,所以reinforce强化算法就是使用观测到的ut来代替QΠ函数,reinforce算法需要玩完一局游戏,观测到所有的奖励,然后才能更新策略网络

法二:用一个神经网络来做近似:

原本已经用神经网络近似了策略函数Π,现在用另一个神经网络来近似价值函数QΠ,这样就有了两个神经网络,一个被称为Actor,一个被称为Critic,这样就有了actor-critic方法 

总结一下策略梯度算法:

1、在第t个时间点,观测到了状态st

2、使用蒙特卡洛近似来计算策略梯度,把策略网络Π作为概率密度函数,用它随机抽样得到一个动作at,比如at是向左的动作

3、计算价值函数QΠ的值,把结果记作qt

4、对策略网络Π求导,算出logΠ关于θ的导数,得到的结果dθ,t是向量、矩阵或者是张量,dθ,t的大小和θ是一样的,如果θ是100*100的矩阵,那么dθ,t也是100*100的矩阵,tensorflow和pytorch这些系统都支持自动求梯度你告诉系统当前at,st还有当前参数θt,系统可以自动求出来梯度dθ,t

5、近似地计算策略梯度,用一个样本a来算策略梯度的蒙特卡洛近似

6、最后一步,有了近似的策略梯度,就可以用它来更新策略网络的参数θ了

二、价值网络小结:

写技术类的文章好烦,研究的人不多,没怎么有人看,如果没人互动的话,就不更新了,Tandy Monkey只能自我提升了。。。。。。。。。。。。。。。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【分布式版本控制系统Git】| 国内代码托管中心-Gitee、自建代码托管平台-GitLab

目录 一:国内代码托管中心-码云 1. 码云创建远程库 2. IDEA 集成码云 3. 码云复制 GitHub 项目 二:自建代码托管平台-GitLab 1. GitLab 安装 2. IDEA 集成 GitLab 一:国内代码托管中心-码云 众所周知,GitHub 服务器在国外&…

二:伙伴系统

内核空间内存分配 目录 内核空间内存分配 伙伴系统 首先从内核空间开始,讲解内存管理模式。 主要分为三种方式: 这篇文章我们集中注意于伙伴系统 伙伴系统 解决了外部碎片问题,针对大块内存分配设计 Linux中的内存管理的“页”大小为4…

第三章(4):自然语言处理入门

第三章(4):自然语言处理入门 在本节中,我们将在简单文本数据上(例如一个句子上),执行一系列基本操作,来帮助你熟悉NLP的工作原理,其中一些技术在第三章(2&…

SLIC超像素分割算法

SLIC超像素分割算法 《SLIC Superpixels》 摘要 超像素在计算机视觉应用中越来越受欢迎。然而,很少有算法能够输出所需数量的规则、紧凑的超级像素,并且计算开销低。我们介绍了一种新的算法,将像素聚类在组合的五维颜色和图像平面空间中&a…

腾讯云COS+SpringBOot实现文件上传下载功能

文章目录 第一步:在.yml文件中配置对应秘钥内容第二步:完成COSConfig类编写第三步:编写Controller类Bug提示: 最近一直在做一个项目,需要支持视频,音频,图片的上传,前面介绍的都是把…

2023年制造业产品经理考NPDP有什么用?

产品经理国际资格认证NPDP是新产品开发方面的认证,集理论、方法与实践为一体的全方位的知识体系,为公司组织层级进行规划、决策、执行提供良好的方法体系支撑。 【认证机构】 产品开发与管理协会(PDMA)成立于1979年,是…

beef-xss浏览器劫持

beef-xss浏览器劫持 一,实验拓扑图二,租用一台阿里云,搭建docker环境和beef环境1.租一台阿里云服务器,系统选用ubuntu,计时收费的那种,一个小时几毛钱2.开启策略组3000端口,5000端口4.安装docke…

交友项目【查询好友动态,查询推荐动态】实现

目录 1:圈子 1.1:查询好友动态 1.1.1:接口分析 1.1.2:流程分析 1.1.2:代码实现 1.2:查询推荐动态 1.2.1:接口分析 1.2.2:流程分析 1.2.3:代码实现 1&#xff1a…

十五分钟带你学会 Electron

文章目录 什么是 Electron为什么要选择 Electron安装 Electron桌面CSDN实战Electron 基础配置Electron 进程主进程渲染进程主进程与渲染进程的区别主进程与渲染进程的通信 Electron 跨平台问题Electron 部署打包应用程序发布应用程序 Electron 跨端原理总结 什么是 Electron E…

数据库实验 | 第1关:建立和调用存储过程(不带输出参数的存储过程)

任务描述 本关任务: 该实验是针对数据表jdxx,该数据表有四个字段,分别是省份(sf)、城市(cs)、区县(qxmc)、街道(name)。 例如,查询天心区(qxmc)的所有字段的值结果如图所示 任务要求 建立存储过程 dqxx(in city varchar(10),i…

QT QPainter坐标系统和坐标变换

一、坐标变换函数 QPainter 在窗口上绘图的默认坐标系统如图下图所示,这是绘图设备的物理坐标。为了绘图的方便,QPainter 提供了一些坐标变换的功能,通过平移、旋转等坐标变换,得到一个逻辑坐标系统,使用逻辑坐标系统…

BEV+Transformer对无人驾驶硬件体系的巨大改变

摘要: BEVTransformer彻底终结了2D直视图CNN时代,BEVTransformer对智能驾驶硬件系统有着什么样的影响?背后的受益者又是谁? 图片来源:特斯拉 BEVTransformer是目前智能驾驶领域最火热的话题,没有之一&…

【区块链】走进web3的世界-DApp如何快速接入wall

在web3中,wall是您进入区块链的一个标识,每个用户使用的wall都不近相同,因此接入更多的wall是很有必要的,从用户角度来说,非必要情况下,我是不愿意去额外下载wall的。因此今天我们来聊一下,DApp…

开发常用的 Linux 命令2(文件的查看、搜索和权限)

开发常用的 Linux 命令2(文件的查看、搜索和权限) 作为开发者,Linux是我们必须掌握的操作系统之一。因此,在编写代码和部署应用程序时,熟练使用Linux命令非常重要。这些常用命令不得不会,掌握这些命令&…

【hello Linux】进程程序替换

目录 1. 程序替换的原因 2. 程序替换原理 3. 替换函数 4. 函数解释 5. 命名理解 6.简陋版shell的制作 补充: Linux🌷 1. 程序替换的原因 进程自创建后只能执行该进程对应的程序代码,那么我们若想让该进程执行另一个“全新的程序”这 便要用…

“分割一切”大模型SAM、超轻量PP-MobileSeg、工业质检工具、全景分割方案,PaddleSeg全新版本等你来体验!

图像分割是计算机视觉的一项基础技术,其目标是将图像中的像素按内容分成不同的类别。它在许多领域有重要应用,比如自动驾驶、工业质检、医疗图像分析、遥感图像解译等。 导读 PaddleSeg 是飞桨高性能图像分割开发套件,在图像分割领域做了大…

IC-14W网络IC卡读写器_银河麒麟桌面操作系统V10适配测试报告

银河麒麟操作系统产品NeoCertify 认证测试报告 系统版本:银河麒麟桌面操作系统V10 厂商名称: 广州荣士电子有限公司 认证产品:IC-14W网络IC卡读写器 测试日期: 2022-11-04 …

基于html+css的图片展示11

准备项目 项目开发工具 Visual Studio Code 1.44.2 版本: 1.44.2 提交: ff915844119ce9485abfe8aa9076ec76b5300ddd 日期: 2020-04-16T16:36:23.138Z Electron: 7.1.11 Chrome: 78.0.3904.130 Node.js: 12.8.1 V8: 7.8.279.23-electron.0 OS: Windows_NT x64 10.0.19044 项目…

【unity实战】随机地下城生成1——随机生成地下城初稿(含源码)

先看看实现的最终效果 #用到的素材 https://download.csdn.net/download/qq_36303853/87712757 导入素材 导入房间图片素材,配置图片信息信息 点击sprite Editor,开始切割图片 随机创建基本房间 已一个白底图片模拟房间预设体 思路:建立一个空的 GameObject 用来做…

平凡的Python为什么能一跃成为世界排名第一的语言

本文首发自「慕课网」,想了解更多IT干货内容,程序员圈内热闻,欢迎关注"慕课网"! 作者:大周|慕课网讲师 一、前言 本文将结合个人经历为各位同学客观的分析是否有学习Python的必要、Python适合谁学、为什么…