强化学习笔记:连续控制 & 确定策略梯度DPG

2023-11-09

1 离散控制与连续控制              

 

         之前的无论是DQN,Q-learning,A2C,REINFORCEMENT,SARSA什么的,都是针对离散动作空间,不能直接解决连续控制问题。

        考虑这样一个问题:我们需要控制一只机械手臂,完成某些任务,获取奖励。机械 手臂有两个关节,分别可以在 [0, 360] [0, 180] 的范围内转动。这个问题的自由度 是 d = 2,动作是二维向量,动作空间是连续集合 A = [0, 360] × [0, 180]

        如果想把此前学过的离散控制方法应用到连续控制上,必须要对连续动作空间做离散化(网格化)。

        比如把连续集合 A = [0, 360] × [0, 180] 变成离散集合 A= {0, 20, 40, · · · , 360} × {0, 20, 40, · · · , 180}

  • 对动作空间做离散化之后,就可以应用之前学过的方法训练 DQN 或者策略网络,用 于控制机械手臂
  • 可是用离散化解决连续控制问题有个缺点。
    • 把自由度记作 d。自由度 d 越大,网格上的点就越多,而且数量随着 d 指数增长,会造成维度灾难。
    • 动作空间的 大小即网格上点的数量。如果动作空间太大,DQN 和策略网络的训练都变得很困难,强 化学习的结果会不好。
    • ——>上述离散化方法只适用于自由度 d 很小的情况;如果 d 不是很小, 就应该使用连续控制方法。

2 确定策略梯度

        确定策略梯度 (Deterministic Policy Gradient, DPG)) 是最常用的连续控制方法。
        DPG是一种 Actor-Critic 方法,它有一个策略网络(演员),一个价值网络(评委)。
        
        策略网络控制智能体做运动,它基于状态 s 做出动作 a
        价值网络基于状态 s 给动作 a 打分,从而指导策略网络做出改进。

 2.1 确定性策略网络

  • 这里的策略网络和之前DQN,A2C的策略网络略有不同:
    • 在之前的模型里,策略网络 π ( a | s ; θ ) 是 一个概率质量函数,它输出的是概率值【每个动作被执行的概率】。
    • 确定策略网络 µ ( s ; θ ) 的输出是 d 维的向量 a ,作为动作【a直接是μ的输出,没有随机性】。
    • 两种策略网络一个是随机的,一个是确定性的
actor-critic中的策略网络:

2.2 价值网络

        价值网络同样是对动作价值函数Q_\pi(s,a)的近似,但形式上也有不同:

 

actor-critic中的价值网络:

 3 算法推导

DPG可以看作一种异策略(off-policy)的方法。

我们把agent的轨迹整理成(s_t,a_t,r_t,s_{t+1})的四元组。

训练的时候,随机取一组四元组,其中训练策略网络μ(s;θ)的时候,只用到状态s_t;训练价值网络q(s,a;w)的时候,需要用到四元组(s_t,a_t,r_t,s_{t+1})中的所有元素

 

这里的ε指的是噪声

3.1 训练策略网络

 

  •  给定状态s,策略网络会输出动作 a=μ(s;θ)
  • 然后价值网络会根据s和a打一个分数q(s,a;w)
  • 参数θ影响a,进而影响q
    • ——>训练策略网络的目标就是改进θ,使得q最大
  • 训练策略网络的时候,如果当前状态是s,那么策略网络会输出动作μ(s,θ)
    • 那么此时价值网络的打分就是q(s,\mu(s;\theta);w)
  • 我们希望打分的期望越高越好,所以此时目标函数定义为打分的期望:

  • 所以此时策略网络的学习可以建模成\max_{\theta} J(\theta)
  • 注意,这里我们只训练策略网络,所以最大化问题中的优化变量是策略网络的参数 θ ,而
    价值网络的参数 w 被固定住
我们用梯度上升来增大J(θ),每一次用随机变量S的一组观测值来计算梯度

 

  • gj是\nabla_\theta J(\theta)的无偏估计,叫做确定策略梯度(DPG deterministic policy gradient)

 

这里我们是\theta \rightarrow a \rightarrow q

所以使用链式法则求出gj:

 3.2 训练价值网络

价值网络的目的是为了让q(s,a;w)的预测接近于真实价值函数Q_\pi(s,a)

同样地,我们使用TD来训练价值网络

4 整体训练流程

记当前策略网络和价值网络的参数为w_{now}\theta_{now}

  • 1 从经验回放数组中取出一个四元组(s_t,a_t,r_t,s_{t+1})
  • 2 让策略网络做预测
    • 注意!!!
      • 计算动作\hat{a_j}使用的是当前的策略网络\mu(s_j;\theta_{now}),用 \hat{a_j}来更新\theta_{now}
      • 而从经验回放中得到的aj则是用过时的策略网络\mu(s_j;\theta_{old})算出来的,它是用来更新w_{now}
      • ——>诠释了DPG是一个异策略的网络
  • 3 让价值网络做预测(注意什么地方用aj,什么地方用\hat{a_j}
  • 4  计算TD目标和TD误差
  • 5 更新价值网络 (注意什么地方用aj,什么地方用\hat{a_j}
  • 6  更新策略网络 (注意什么地方用aj,什么地方用\hat{a_j}

 

 

 

 

 

 

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

强化学习笔记:连续控制 & 确定策略梯度DPG 的相关文章

随机推荐

  • android动态页实现原理,Android

    本系列文章主要介绍天猫团队开源的Tangram框架的使用心得和原理 由于Tangram底层基于vlayout 所以也会简单讲解 该系列将按以下大纲进行介绍 需求背景 Tangram和vlayout介绍 Tangram的使用 vlayout原
  • 初探gitlab & gitlab-runner & asp.net core持续集成

    文章简介 gitlab gitlab runner 简介 基于gitlab gitlab runner 的asp net core webapi 极简持续集成实践 gitlab gitlab runner 简介 写在最前面 文中示例使用到了
  • Node.js后端开发 - 进阶篇 #10 express框架之封装handler.js模块

    目录 一 前言 二 封装 handler js 业务模块 步骤1 写业务模块 handler js 步骤2 路由模块 router js 调用 步骤3 其他代码贴上 主模块app js 配置模块 config js 三 最终效果 一 前言
  • KVM下虚拟机网卡桥接配置

    基本概念 KVM基本概念 KVM 全称是 Kernel based Virtual Machine 是 Linux 下 x86 硬件平台上的全功能虚拟化解决方案 包含一个可加载的内核模块 kvm ko 提供和虚拟化核心架构和处理器规范模块
  • 在安卓手机搭建kali环境,手机变成便携式渗透神器

    kali是著名的黑客专用系统 一般都是直接装在物理机或者虚拟机上 我们可以尝试把kali安装在手机上 把手机打造成一个便携式渗透神器 我们需要下载以下3款软件 1 Termux 终端模拟器 2 AnLinux 里边有各种安装liunx的命令
  • 离散数学期末复习—学习笔记

    主要是看ppt和做课后练习 数理逻辑 1 命题逻辑的基本概念 1 1 命题与连接词 1 2 命题公式及其赋值 1 3 习题 2 命题逻辑等值演算 2 1等值式 基本等值式 16组 24个公式 2 2 析取范式和合取范式 主要是主析取范式和主
  • kettle入门教程

    目录 1 kettle叙述 1 1什么是kettle 1 2kettle工程存储方式 1 3kettle两种设计 1 4kettle的组成 1 5kettle的下载安装 2 kettle教程 2 1转换 2 1 1普通转换 2 1 2执行s
  • html中div hover的用法,CSS: hover选择器的使用详解

    有些时候需要用到mouseover和mouseout这两个鼠标事件 但是写js又比较麻烦 还要添加监听事件 所以能用css解决的东西尽量yongcss解决 这样可以提高性能 下面说一下我对 hover 的了解 之前在学计算机应用的时候 老师
  • Windows端pytorch镜像快速安装【清华源】

    目录 0 说在前面 1 安装Anacoda 1 1 说在前面 1 2 下载 1 3 安装 1 4 记住3条命令 2 安装CUDA 2 1 更新NVIDIA驱动 2 2 下载CUDA 3 安装cudnn 3 1 下载安装 4 安装pytorc
  • MySQL必知必会 学习笔记 第七章 数据过滤

    可用AND操作符给WHERE子句附加条件 SELECT columnName FROM tableName WHERE columnName1 1 AND columnName2 2 OR操作符指示MySQL匹配符合操作符任一端条件的行 S
  • 监听器

    监听器在JavaWeb开发中用得比较多 下面说一下监听器 Listener 在开发中的常见应用 一 统计当前在线人数 在JavaWeb应用开发中 有时候我们需要统计当前在线的用户数 此时就可以使用监听器技术来实现这个功能了 1 packag
  • vue3 在原型上挂载方法

    在vue3 中没有 this 不在是实例化查出来的vue对象 那怎么往原型挂在公用的方法呢 const app createApp App const test gt console log 我是测试函数触发的 return 测试成功 ap
  • nginx第三方模块---nginx-sticky-module的平滑升级

    nginx第三方模块 nginx sticky module的平滑升级 第一步 下载 下载地址 链接 https bitbucket org nginx goodies nginx sticky module ng downloads ta
  • 5个方面详解:AI产品运营必知的软硬件技术

    比算法更难得是算法的思想 比编程工具更难的是编程的思维 比做产品更难的是产品的梦想 本文主要从5个方面 详细阐述AI产品运营必知的软硬件技术 一 AI产品运营对基础关系的安排 1 智能软硬件与软件和硬件 在AI产品里没有纯粹单独的软件和硬件
  • 【SpringBoot应用篇】SpringBoot集成MinIO对象存储服务

    SpringBoot应用篇 SpringBoot集成MinIO对象存储服务 对象存储服务MinIO MinIO简介 MinIO特点 开箱使用 docker安装启动 管理控制台 快速入门 Java 上传文件到minio 配置访问权限 封装Mi
  • 计算机基础知识深入研究系列:定点数与浮点数

    插眼 总结 暂无 自己还没深入研究 留链接供以后参考 深入浅出浮点数 https blog csdn net cppptr article details 573372 硬件中的定点数与浮点数运算与相互转换 https blog csdn
  • Qt 官方资源下载地址

    1 所有Qt版本下载地址 http download qt io archive qt 2 所有Qt Creator下载地址 http download qt io archive qtcreator 3 所有Qt VS开发插件下载地址 h
  • CubeMX——F1和G0系列外部中断回调函数差异

    以前写代码 一些固定的代码总喜欢复制粘贴 然后在G0系列使用外部中断的时候 发现死活触发不了 一路检查了CubeMX的配置以及硬件连接 均发现没问题 然后发现G0系列的外部中断回调函数和F1系列的不一样 以下列举的是配置下降沿触发模式 主要
  • 怎么给input插入一个图片

    html部分
  • 强化学习笔记:连续控制 & 确定策略梯度DPG

    1 离散控制与连续控制 之前的无论是DQN Q learning A2C REINFORCEMENT SARSA什么的 都是针对离散动作空间 不能直接解决连续控制问题 考虑这样一个问题 我们需要控制一只机械手臂 完成某些任务 获取奖励 机械