当前位置: 首页 > news >正文

Optimization of DQN

Optimization of DQN

1.Experience Replay

在这里插入图片描述
在这里插入图片描述

回顾TD算法。


1.1普通TD算法的缺点

在这里插入图片描述

我们直到每次更新网络参数 w w w 是通过一次transition,再使用后,我们便会丢弃该经验,这是一种浪费。


在这里插入图片描述

每次更新都是通过相邻两个状态转移,相邻两个状态具有强相关性,对实际动作的策略指导会存在问题。


1.2 介绍

在这里插入图片描述

Experience Replay 采用一个Replay Buffer 存储 n n n个transition。


在这里插入图片描述

buffer中的transition 保存的是最近的n个,类似LRU(?)


在这里插入图片描述

再更新参数时,我们每次从buffer中随机抽样一个或多个(对应multi step) transition,然后计算TD error,然后SGD更新 w w w


1.3 优点

在这里插入图片描述

1.减弱强相关性。

2.重复利用experience。

1.4 Prioritized Experience Replay

在这里插入图片描述

因为每个transition 重要性是不同的,比如右边的transition 就很难学习到,因此更重要。


在这里插入图片描述

可以考虑用TD error 近似优先级,因为越重要就越难学习到,因此error会 越大。


在这里插入图片描述

第一种方法将其抽样概率 p t p_t pt 正比TD error 加上 超参数 ϵ \epsilon ϵ ,该参数是保证概率 > 0 >0 >0

第二种是反比按照TD error 排序后的排名。


在这里插入图片描述

为保证网络的均匀稳定,当使用优先经验回放时,学习率 α \alpha α 应该调整,因为抽样概率不同。

在这里插入图片描述

设置函数 ( n p t ) − β (np_t)^{-\beta} (npt)β 这样可以使高重要性的transitions 有低的学习率。


在这里插入图片描述

如果新收集的transition,设置 δ t \delta_t δt 为最大,这样优先级最高,先更新其TD errror。每次我们对抽样的transitions的TD errror进行更新,使得误差更小。


在这里插入图片描述

2.Target Network and Double DQN

在这里插入图片描述
在这里插入图片描述

使用DQN 中的 Q Q Q函数得到 y t y_t yt 更新 Q Q Q,会导致自举问题。


2.1 高估的原因

在这里插入图片描述

DQN高估动作价值的原因有:

1.最大化,在进行TD 算法时计算TD target 会对 Q Q Q所有的 a a a max ⁡ \max max

因此导致 y t y_t yt 大于真实值。

2.自举,用估计值来反向传播。


在这里插入图片描述

根据数学证明可知,在噪声均值为0的分布下得到的 Q Q Q 的最大值期望会更大。

在这里插入图片描述

因此会导致高估 q q q

在这里插入图片描述

而高估的 y t y_t yt 会进一步更新 Q Q Q 导致高估的影响不断增大。


在这里插入图片描述


在这里插入图片描述

两重影响。


2.2 高估有危害的原因

在这里插入图片描述

如果是均匀的高估,对于动作的选择没有影响,因为动作的选择是根据动作打分的相对大小,选取相对最大的进行执行。


在这里插入图片描述

但是如果高估不是均匀的,则可能会导致选择错误的动作。


在这里插入图片描述

因为 ( s , a ) (s,a) (s,a) 在replay buffer中出现的频率不是均匀的,出现次数越多, Q ( s , a ; w ) Q(s,a;w) Q(s,a;w)的高估就越明显。


在这里插入图片描述

2.3 Target Network

在这里插入图片描述

用一个DQN 控制agent 执行动作和收集experience,再使用一个DQN Q ( s , a ; w − ) Q(s,a;w^-) Q(s,a;w) 计算TD target。

在这里插入图片描述


在这里插入图片描述

更新target network 有两种方法:

1.使用DQN之前的 w w w更新。

2.使用两者的加权平均。


在这里插入图片描述

相比naive update,target network 减缓了自举带来的高估。


2.4 Double DQN

在这里插入图片描述

这是target network 更新的方法,使用target network选择 a ∗ a^* a,用target network更新 y t y_t yt。但是不能完全消除高估。


在这里插入图片描述

Double DQN类似于naive update 和 target network 的一种优化。

它使用DQN来选择 a ∗ a^* a ,然后用target network 计算 y t y_t yt ,将selection 与 evaluation 分隔开。

使用Double DQN的 Q ( s t + 1 , a ∗ , ; w − ) ≤ m a x a Q ( s t + 1 , a ; w − ) Q(s_{t+1},a^{*},;w^-)\le max_aQ(s_{t+1},a;w^{-}) Q(st+1,a,;w)maxaQ(st+1,a;w)
因此target network 使用自己的 Q Q Q计算动作 a ∗ a^* a,选取的是最大的。

而Double DQN不是target network最大的 a ∗ a^{*} a,而是DQN里的最优的。

2.5 Summary

在这里插入图片描述
在这里插入图片描述

从该图可以看出,结合趋于平衡往往是最优的。

3.Dueling Network

3.1 相关定义

在这里插入图片描述

回顾几个定义。

在这里插入图片描述

这里定义最优优势函数 A ∗ A^* A Q ∗ Q^* Q V ∗ V^* V 的差值。


在这里插入图片描述

定理1,显然最优的 V V V 是取得所有 a a a 后的 Q ∗ Q^* Q


在这里插入图片描述

因此可以得到 m a x a A ∗ ( s , a ) = 0 max_{a}A^*(s,a)=0 maxaA(s,a)=0


在这里插入图片描述

因此可以这样表示 Q ∗ Q^* Q


在这里插入图片描述

我们采用一个神经网络近似 A ∗ A^* A


在这里插入图片描述

一个神经网络近似 V ∗ V^* V


3.2 网络模型

因此可以用这两个网络近似 Q ∗ Q^* Q

在这里插入图片描述
在这里插入图片描述


在这里插入图片描述

因为两个网络的卷积层操作相同,所以可以公用。

在这里插入图片描述

该网络同样可以使用experience replay、Double DQN,Multi-step TD 这些trick。


3.3 使用max-0常量的必要性

在这里插入图片描述
在这里插入图片描述

显然若 V ′ , A ′ V',A' V,A的变化和最后为0,其 Q Q Q 也不会影响。

但是会导致对 V V V A A A的网络训练出现问题。

在这里插入图片描述

而引用max后就不会出现评价的偏差。

在实际应用中采用mean效果更优。


在这里插入图片描述

V , A V,A V,A 两者是一起训练的,参数看成一个整体 w = ( w V , w A ) w=(w^V,w^A) w=(wV,wA) ,训练方式与DQN类似。


相关文章:

  • 猿创征文|微软出品效率神器PowerToys,太实用了
  • Arduino框架下ESP32/8266使用PROGMEM功能将数据存储到flash中的使用规范
  • 并查集(路径压缩)
  • 防火墙实验二——实现域间、域内双向NAT、双机热备实验
  • 【Django】REST_Framework框架——视图集ViewSet和ModelViewSet源码解析
  • 如何对SAP数据库表进行增删改查操作(3)
  • Spring-06 Xml和注解方式配置Aop
  • 同步请求和异步请求(利用axios)
  • 猿创征文|瑞吉外卖——移动端_笔记
  • SpringBoot异常处理——异常显示的页面
  • 高等数学二从零开始学习的总结笔记(持续更新)
  • 无服务器学习01:基本概念+优点+面临的挑战
  • C#实验二
  • 熟悉c语言结构体
  • uboot源码分析(基于S5PV210)之启动第二阶段
  • Bytom交易说明(账户管理模式)
  • ES6系列(二)变量的解构赋值
  • markdown编辑器简评
  • React 快速上手 - 06 容器组件、展示组件、操作组件
  • Spring Boot MyBatis配置多种数据库
  • 对象引论
  • 前端攻城师
  • 如何解决微信端直接跳WAP端
  • 说说动画卡顿的解决方案
  • 微信小程序开发问题汇总
  • 详解NodeJs流之一
  • 掌握面试——弹出框的实现(一道题中包含布局/js设计模式)
  • 《码出高效》学习笔记与书中错误记录
  • #QT(智能家居界面-界面切换)
  • (二)七种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (六)什么是Vite——热更新时vite、webpack做了什么
  • (论文阅读30/100)Convolutional Pose Machines
  • (转)【Hibernate总结系列】使用举例
  • .Mobi域名介绍
  • .NET “底层”异步编程模式——异步编程模型(Asynchronous Programming Model,APM)...
  • .NET Conf 2023 回顾 – 庆祝社区、创新和 .NET 8 的发布
  • .NET/C# 使窗口永不获得焦点
  • .NET/C# 使用反射注册事件
  • .NET企业级应用架构设计系列之开场白
  • .net下简单快捷的数值高低位切换
  • @DateTimeFormat 和 @JsonFormat 注解详解
  • @NoArgsConstructor和@AllArgsConstructor,@Builder
  • [ web基础篇 ] Burp Suite 爆破 Basic 认证密码
  • [2010-8-30]
  • [ajaxupload] - 上传文件同时附件参数值
  • [BetterExplained]书写是为了更好的思考(转载)
  • [CareerCup] 17.8 Contiguous Sequence with Largest Sum 连续子序列之和最大
  • [CC2642r1] ble5 stacks 蓝牙协议栈 介绍和理解
  • [ComfyUI进阶教程] animatediff视频提示词书写要点
  • [Docker]三.Docker 部署nginx,以及映射端口,挂载数据卷
  • [HNOI2010]BUS 公交线路
  • [Java][Android][Process] ProcessBuilder与Runtime差别
  • [LeetCode] 197. 上升的温度
  • [MFC] MFC消息机制的补充
  • [office] excel中weekday函数的使用方法 #学习方法#微信#媒体