QCon 演讲火热征集中,快来分享技术实践与洞见! 了解详情
写点什么

李宏毅深度强化学习课程:Deep Q-learning Advanced Tips

  • 2019-12-02
  • 本文字数:1081 字

    阅读完需:约 4 分钟

李宏毅深度强化学习课程:Deep Q-learning Advanced Tips

DDQN


红色线表示 DQN 估计的 Q 值,发现都会比真实的 Q 值要高很多,那么是为什么会 Q 值会被高估?



假设现在有 4 个状态动作对,他们真实的 Q 值其实是相差不大的,但是因为在学习过程中,Q 值是一个估计值,总会有状态动作对的 Q 值会被高估,此时被高估的 Q 值就会被选择出来当做 target。



解决方法就是用两个 Q 值函数(一个是当前的值网络,一个是 target 网络),一个用作动作的选择,一个用作 target Q 值的估计。这样当 Q 值被高估后,选出相应的动作,但只要[公式] 不高估就行。另外一种情况是如果 [公式] 被高估,但是此时被高估的动作也不会被选择到(选择动作是根据另一个 Q 值选的)。


Dueling DQN



其实就是将输出 Q 值改为输出 V 值和 A 值。


那么这样有什么好处呢?



假设有两个 Q 值都希望+1,现在只能动 V 值和 A 值。现在可以让 V 值+1,那么所有的状态动作 Q 值都会改变,这样就不需要采样到所有状态动作对来更新所有的 Q 值,提高了样本的利用率。另外,必须对 A 值加 constraint,使得网络更新 A 值会比较复杂,而去倾向于更新 V 值。常做的方式是将一个动作的所有 A 值加起来为 0。



计算 Q 值的时候(V+A),先将 A 值做归一化。


Prioritized Reply



之前是从样本池中随机抽取一个 batch 训练数据,现在可优先选取 TD 误差较大的样本。TD 误差较大的样本训练价值更高,梯度会更大。


Multi-step



可结合使用 MC 和 TD 更新方法,之前 DQN 方法是存储一个时间步的转移样本 :[公式] ,现在存储 N 个时间步的转移样本。好处:sample 多个 step 的转移样本,Q 的估计值的准确性会提高,但是多个时间步的采样会导致方差变大。


Noisy Net



之前为了探索在动作上加 noise,现在可以在网络参数上加 noise。须注意的是 noise 必须在每个新的 episode 开始时加入,并且在每个 episode 期间没有动作的探索。



epsilon greedy 方法会有一个问题:在同个 state 下,可能会执行不同的动作。但是现实场景中合理的做法应该是同个 state 采取同一个 action。Noisy net 就会在同个 episode 中的同个 state 下,执行相同的动作。


Distributional Q-function



其实 Q(s,a)的值是有一个分布的,不同的分布可能会有同样的 mean 均值(当做 Q 值)。所以用 Q 来表示未来期望总奖赏会丢失一些信息。



直接输出每个状态动作对的 Q 值的分布,这样可以根据 Q 值分布获得很多额外信息,比如可根据动作 Q 值的分布的熵来决定要不要采取该动作??


Rainbow


结合上述的几个 tips




可发现,multi-step 和 priority 比较有用。


参考文献:


https://www.bilibili.com/video/av24


本文转载自 Alex-zhai 知乎账号。


原文链接:https://zhuanlan.zhihu.com/p/72994607


2019-12-02 16:231038

评论

发布
暂无评论
发现更多内容

区块链电子发票平台,区块链电子发票优势

13530558032

拍乐云推出“实时标注”,助力少儿编程、在线金融等行业场景实现高效互动

拍乐云Pano

音视频 在线教育 互动白板 实时标注 在线金融

2021最新总结网易/腾讯/CVTE/字节面经分享(附答案解析)

比伯

Java 编程 架构 面试 程序人生

【前端面试题】关于一些js的一些面试题(金融行业),我和面试官扯了三个小时

孙叫兽

JavaScript 大前端 金融 笔试题

MySQL的锁

一个大红包

3月日更

「面试高频」秒杀架构的设计套路,你值得拥有

我爱娃哈哈😍

架构设计 架构设计实战 秒杀架构

Java面试必看!阿里(嵩山版)分布式核心原理笔记来了

Java架构追梦

Java 阿里巴巴 架构 面试 架构分布式

跟我学ModelArts丨探索ModelArts平台个性化联邦学习API

华为云开发者联盟

AI 联邦学习 API 华为云 modelarts

快点来学吧!Android性能优化面试题集锦,深度解析,值得收藏

欢喜学安卓

android 程序员 面试 移动开发

冲击大厂!阿里P9纯手打Java面试小抄(21版)在GitHub上已获80万star

Java 程序员 面试

电子门锁没电的解决办法

孙叫兽

生活 程序人生 电子锁

干货 | 万字详解整个数据仓库设计体系

五分钟学大数据

大数据 数据仓库 28天写作 3月日更

一文搞懂三级管和场效应管驱动电路设计及使用

不脱发的程序猿

28天写作 电路设计 三极管 3月日更 场效应管

安卓嵌入式底层开发!整理出这份8万字Android性能优化实战解析,已开源

欢喜学安卓

android 程序员 面试 移动开发

GO训练营第10周——日志&指标&链路追踪

Glowry

如何批量下载YouTube视频到本地

科技猫

软件 音视频 经验分享 资源分享 工具分享

在线数据迁移,数字化时代的必修课 —— 京东云数据迁移实践

京东科技开发者

数据库 数据迁移

一个合格的CloudNative应用:程序当开源软件编写,应用配置外置

华为云开发者联盟

云原生 华为云 Cloud Native CCE CSE

Java 和 Python 关于 % 的那些坑

与你一起学算法

Java Python

2021 年要了解的 34 种 JavaScript 简写优化技术

LeanCloud

JavaScript 面试 大前端

【LeetCode】设计停车系统Java题解

Albert

算法 LeetCode 28天写作 3月日更

智慧党建信息管理平台系统建设

13530558032

源中瑞智慧社区解决方案,社区服务平台

13530558032

Python 生成 QR 二维码

HoneyMoose

收藏!Linux常用命令合集

roseduan

Linux

2B营销路径: 9大步骤自我拆解

boshi

营销数字化 七日更

EGG Network公链技术创新,EFTalk打造高效全能公链

币圈那点事

区块链

论文免费开源:NB-IoT智慧路灯监控系统

不脱发的程序猿

28天写作 论文 3月日更 NB-IoT智慧路灯 大学生毕业

LeetCode题解:213. 打家劫舍 II,动态规划(不缓存偷盗状态),JavaScript,详细注释

Lee Chen

算法 大前端 LeetCode

使用“零信任”,不惧“内部威胁”!

龙归科技

管理 数据完整性 零信任 内部威胁

寻找被遗忘的勇气(十九)

Changing Lin

3月日更

李宏毅深度强化学习课程:Deep Q-learning Advanced Tips_语言 & 开发_Alex-zhai_InfoQ精选文章