强化学习TD3算法笔记1——论文解读

2023-05-16

相关论文

TD3:TD3
Double DQN:Double DQN
DDPG:DDPG

TD3论文结构

  1. 摘要:提出Actor-Critic面对的问题,概括了TD3算法和效果
  2. 引言:提出当前对于Actor-Critic的理解不足,回顾了离散action空间中的一个问题overestimation及其解决方案
  3. 相关工作:回顾之前讨论bias和varianve问题的工作
  4. 背景:介绍强化学习的基础以及DDPG算法
  5. Overestimation Bias:讨论Actor-Critic中的overestimation bias和解决方案
  6. Variance:讨论Actor-Critic中的variance来源及解决方案,综合解决方案提出TD3算法
  7. 实验:对比各种算法并验证提出的方案的效果
  8. 结论:总结这篇论文的创新和贡献

在这里我们只是简单梳理了一下论文中最重要的两个核心部分的思路并对比了TD3和DDPG算法。

Overestimation

Overestimation是TD3主要关注的问题之一,关于overestimation在强化学习中的影响大家可以在Double DQN中得到比较详细的解答。下面我对overestimation进行一些简述。
Double DQN图表分析
从上图中可以看到在第一列中,作者利用不同阶数的多项式对真实的Q(浅紫色曲线)进行拟合。拟合后的曲线在取样密集处都能够比较好的和真实的Q进行拟合,但是在取样稀疏的地方并不能很好的拟合,从而产生一定的误差;不仅如此,对于阶数高的多项式在取样密集的地方虽然可以学到更多的特征,但是在取样稀疏的地方却会产生更大的偏差。
第二列中,作者分别利用不同的取样点得到了不同的拟合曲线,其中黑白相间的曲线代表的是max Q值后的曲线,而绿色的曲线则是没有被选择的曲线。
DQN
Double DQN
为了从理论层面说明第二列的效果将两个公式列出对比,DQN采用就是上面公式对Q值进行估计的,而Double DQN则采用下面公式先通过对action进行取最优,然后通过最优的action对Q值进行估计,这时候估计的Q值在目标网络中并不一定是最大的,从而减弱了一些overestimation。
第三列则是Double DQN和DQN误差的对比。

下面给出overestimation在DDPG存在的证明。
DDPG高偏
如上述论文的推导,在DDPG中当前网络和目标网络都存在一个域分别使得公式5和6成立,这是引文两个网络更新的参数不同,而各自的参数在自己的网络处是梯度更新最快的。然后在公式5和6 的基础上作出假设,某个阶段出现了overestimation(偏差总是存在的),即
假设
从而我们可以推导出公式7。其次是这些overestimation会产生一个循环,导致overestimation累积传播,这样的结果是次优action会得到次优Critor的高度评价,从而在下一次的策略中强化次优action。
由于Double DQN在处理overestimation上是优于DDPG的,于是TD3作者尝试将Double DQN融入DDPG中来抑制overestimation,最终效果有一丝的好转,但是还是存在很高的overestimation。
尝试失败的原因是因为在原始的Double DQN中两个Q函数较为独立,但在DDPG仍然紧密相关。于是作者提出了进一步的改进方案。
初始方案
初始方案中,作者借鉴Double DQN的思想,在DDPG的基础上引入一个新的Q值,即一个新的Critic网络,但是由于两个Q值网络参数紧密相连,如上图公式所示,两个策略的评估更新都需要对方网络的参数,因此这个方案达到的效果不是作者的预期。
最终解决方案
在新的一个方案中,采用min方式来更新策略评估函数,这种方式使得overestimation得到了极好的处理。
min论证这段话论证了min操作对于处理overestimation的有效性。

Variance

Variance来源从上图可以看出variance的变化与目标网络的更新频率有关。
参数更新
因此在参数更新时为了使variance变化更小,可以使T以更小的值对参数进行更新,这可以使得Critic目标网络更加的稳定。
由于Overestimation在Critic目标网络不稳定,即variance波动比较大时会引导agent往错误的方向学习
,因此作者建议在critic稳定前不更新其他参数。
除此之外,在更新Actor的时候,加入regularization,即加入一个额外的噪声,可以使得Actor不会在一个点寻找Q值,而是在这个点周围的域寻找Q值。

TD3和DDPG对比

DDPG
TD3
从上面两个算法的伪代码可以看出,TD3比DDPG多加了一个Critic目标网络,之后对得到的两个Q值函数进行min操作。除此之外,TD3还多了一个regulation的操作,即在进行动作决策时加入一个额外的噪声。

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

强化学习TD3算法笔记1——论文解读 的相关文章

  • 《画解数据结构》十张动图,画解双端队列

    本文已收录于专栏 画解数据结构 零 前言 目前本专栏正在进行优惠活动 在博主主页添加博主好友 好友位没有满的话 可以获取 付费专栏优惠券 数据结构 和 算法 是密不可分的 两者往往是 相辅相成 的存在 所以 在学习 数据结构 的过程中 不免
  • 《画解数据结构》二十五彩图,画解平衡二叉树

    本文已收录于专栏 画解数据结构 前言 目前本专栏正在进行优惠活动 在博主主页添加博主好友 好友位没有满的话 可以获取 付费专栏优惠券 上一篇文章 二叉搜索树 中 对于 增 删 改 查 的时间复杂度为 O l o g
  • 安装ofsoftswitch13的问题解决

    安装ofsoftswitch13的问题解决 cmake时出现错误 xff0c 是因为前面的库有的没有安装好 xff0c 安装好以后 xff0c 错误消失 根据CPqD ofsoftswitch13 OpenFlow 1 3 switch 给
  • 《画解数据结构》之画解二叉树

    本文已收录于专栏 画解数据结构 前言 目前本专栏正在进行优惠活动 在博主主页添加博主好友 好友位没有满的话 可以获取 付费专栏优惠券 数据结构 和 算法 是密不可分的 两者往往是 相辅相成 的存在 所以 在学习 数据结构 的过程中 不免会遇
  • 《画解数据结构》三十张彩图,画解二叉搜索树

    本文已收录于专栏 画解数据结构 前言 目前本专栏正在进行优惠活动 在博主主页添加博主好友 好友位没有满的话 可以获取 付费专栏优惠券 我们知道 顺序表 可以 快速索引 数据 而 链表 则可以快速的进行数据的 插入 和 删除 那么 有没有一种
  • 《画解数据结构》九张图画解二叉堆

    本文已收录于专栏 x1f333 画解数据结构 x1f333 前言 目前本专栏正在进行优惠活动 xff0c 在博主主页添加博主好友 xff08 好友位没有满的话 xff09 xff0c 可以获取 付费专栏优惠券 在之前的文章 二叉搜索树 中
  • 《算法零基础100讲》(第1讲) 幂和对数

    文章目录 零 写在前面 一 概念定义 1 幂 2 对数 3 换底公式 二 题目描述 三 算法详解 四 源码剖析 五 推荐专栏 六 习题练习 零 写在前面 目前本专栏正在进行优惠活动 在博主主页添加博主好友 好友位没有满的话 可以获取 付费专
  • 《算法零基础100讲》(第2讲) 数列

    文章目录 零 写在前面 一 概念定义 1 等差数列 2 等比数列 3 斐波那契数列 二 题目描述 三 算法详解 四 源码剖析 五 推荐专栏 六 习题练习 零 写在前面 这是 算法零基础100讲 专栏打卡学习的第 2 天了 如果觉得本专栏太贵
  • 《LeetCode零基础指南》(第九讲) 简单递归

    文章目录 零 了解网站 1 输入输出 2 刷题步骤 3 尝试编码 4 调试提交 一 概念定义 1 递归的含义 2 递归调用阶乘 1 实现一个函数 2 递归出口 3 递推关系 3 为什么叫递归 二 题目分析 1 阶乘尾后零 2 将数字变成 0
  • 《LeetCode零基础指南》(第八讲) 二级指针

    文章目录 零 了解网站 1 输入输出 2 刷题步骤 3 尝试编码 4 调试提交 一 概念定义 1 二级指针 2 解引用 3 力扣中的二级指针 4 内存申请模板 二 题目分析 1 翻转图像 2 转置矩阵 3 重塑矩阵 4 将一维数组转变成二维
  • 《LeetCode零基础指南》(第七讲) 二维数组

    文章目录 零 了解网站 1 输入输出 2 刷题步骤 3 尝试编码 4 调试提交 一 概念定义 1 矩阵的定义 2 矩阵的水平翻转 3 矩阵的垂直翻转 4 矩阵的顺时针旋转 5 矩阵的逆时针旋转 6 矩阵的转置 7 二维数组 8 二维数组的索
  • 《LeetCode零基础指南》(第五讲) 排序API

    文章目录 零 了解网站 1 输入输出 2 刷题步骤 3 尝试编码 4 调试提交 一 概念定义 1 排序简介 2 qsort 简介 3 qsort 调用 4 比较函数 1 函数原型 2 函数定义 3 简化写法 5 更多比较函数 二 题目分析
  • 《LeetCode零基础指南》(第三讲) 一维数组

    文章目录 零 了解网站1 输入输出2 刷题步骤3 尝试编码4 调试提交 一 概念定义1 顺序存储2 存储方式3 长度和容量4 数组的索引5 数组的函数传参 二 题目分析1 数组的查找2 数组的最小值3 斐波那契数列4 绝对值为 k 的数对5
  • js拼字符串,显示在页面上,出现undefined字样处理办法

    首先 xff0c 你需要明白为什么会出现undefined xff0c 这个东西是什么 xff1f undefined是说明你所使用的对象未定义 xff0c 为什么会未定义 xff1f 例如 xff1a var str str 61 str
  • 《LeetCode零基础指南》导读

    文章目录 一 出该专栏的目的 二 本专栏适宜人群 三 本专栏涉及的知识点 四 本专栏收费模式 五 付费玩家专属福利 六 专栏阅读须知 七 配套赠送福利 一 出该专栏的目的 由于之前的 算法零基础100讲 为很多真正零基础的同学造成了困扰 他
  • 《LeetCode零基础指南》(第一讲) 函数

    文章目录 零 了解网站1 输入输出2 刷题步骤3 尝试编码4 调试提交 一 概念定义1 函数简介2 函数的基本概念3 函数的基本结构4 返回类型5 函数名6 参数列表7 函数体8 返回值 二 题目分析1 整数乘法2 整数除法3 次幂函数4
  • 《算法零基础100讲》导读

    文章目录 一 为什么要学算法 二 本专栏适宜人群 三 本专栏涉及的算法 四 本专栏收费模式 五 收费玩家专属福利 六 专栏阅读须知 七 配套赠送福利 一 为什么要学算法 如果你只是想学会写代码 或许 算法与数据结构 并不是那么重要 但是 想
  • 《LeetCode零基础指南》(第二讲) 循环

    文章目录 零 了解网站1 输入输出2 刷题步骤3 尝试编码4 调试提交 一 概念定义1 语法规则2 简单应用3 初始化表达式1 xff09 初始化表达式外置2 xff09 初始化表达式内置 4 条件表达式5 执行表达式 二 题目分析1 2
  • 《LeetCode零基础指南》(第四讲) 指针

    文章目录 零 了解网站 1 输入输出 2 刷题步骤 3 尝试编码 4 调试提交 一 概念定义 1 指针即地址 2 指针的定义 3 定义指针变量 4 取地址 5 数组的地址 6 解引用 7 内存申请 8 返回数组 9 范式 10 概念总结 二
  • 《LeetCode零基础指南》(第六讲) 贪心

    文章目录 零 了解网站 1 输入输出 2 刷题步骤 3 尝试编码 4 调试提交 一 概念定义 二 题目分析 1 最大乘积差 2 三角形的最大周长 3 数组拆分 I 4 救生艇 5 摆动排序 II 6 分发饼干 7 最少操作使数组递增 8 有

随机推荐