Count-based exploration with neural density models论文笔记

Count-based exploration with neural density models[J]. International Conference on Machine Learning,International Conference on Machine Learning, 2017.

基于计数的神经密度模型探索

0、问题

这篇文章的关键在于弄懂pseudo-count的概念,以及是如何运用pseudo-count去进行探索的。pseudo-count主要用于生成探索奖励,即可以理解为生成内在奖励。

但是仍然保留一个疑问为在使用PixelCNN得到状态st的概率密度和状态st+1的概率密度后,为何不适用
N ^ n ( x ) = ρ n ( x ) ( 1 − ρ n ′ ( x ) ) ρ n ′ ( x ) − ρ n ( x ) \hat{\mathrm{N}}_n(x)=\frac{\rho_n(x)(1-\rho_n'(x))}{\rho_n'(x)-\rho_n(x)} N^n(x)=ρn(x)ρn(x)ρn(x)(1ρn(x))
这一公式来直接计算pseudo-count,这里的计算好像还用的是等号?而使用
N ^ n ( x ) ≈ ( e P G n ( x ) − 1 ) − 1 \hat{\mathrm{N}}_n(x)\approx\left(e^{\mathrm{PG}_n(x)}-1\right)^{-1} N^n(x)(ePGn(x)1)1
这一公式来近似计算pseudo-count?

1、Motivation

本文主要是针对强化学习中的智能体探索方面,提出了一种基于计数的探索方式。

在强化学习中,dynamics(动态模型)指的是对环境的模拟或建模。它描述了智能体与环境互动的方式,包括智能体采取行动后环境如何变化以及智能体所观察到的状态转换。

“pseudo-count”(伪计数)是一个在统计学和机器学习中常用的概念。它指的是一种人为引入的计数,用于对现有数据的不确定性进行建模。

密度模型(Density Model)是一种用于建模概率密度函数的数学模型,它可以用来描述或预测随机变量的分布。密度模型在统计学、概率论、信息论、机器学习等领域中得到了广泛应用。

2、Background

状态的概率密度模型p
ρ ( x ) = P ( X n + 1 = x ∣ X 1 … X n = x 1 : n ) = N ^ ( x ) n ^ \rho(x)=P(X_{n+1}=x|X_1\ldots X_n=x_{1:n})=\frac{\hat{N}(x)}{\hat{n}} ρ(x)=P(Xn+1=xX1Xn=x1:n)=n^N^(x)
prediction gain of ρ:
P G n ( x ) = log ⁡ ρ n ′ ( x ) − log ⁡ ρ n ( x ) \mathrm{PG}_n(x)=\log\rho_n^{\prime}(x)-\log\rho_n(x) PGn(x)=logρn(x)logρn(x)
pseudo-count:

  1. N ^ n ( x ) = ρ n ( x ) ( 1 − ρ n ′ ( x ) ) ρ n ′ ( x ) − ρ n ( x ) \hat{\mathrm{N}}_n(x)=\frac{\rho_n(x)(1-\rho_n'(x))}{\rho_n'(x)-\rho_n(x)} N^n(x)=ρn(x)ρn(x)ρn(x)(1ρn(x))

pseudo-count可以用PG来近似:
N ^ n ( x ) ≈ ( e P G n ( x ) − 1 ) − 1 \hat{\mathrm{N}}_n(x)\approx\left(e^{\mathrm{PG}_n(x)}-1\right)^{-1} N^n(x)(ePGn(x)1)1
tips:以上公式的具体推导引用了白辰甲老师的知乎回答强化学习中的探索与利用(count-based) - 知乎 (zhihu.com)

由此可以得到这篇文章中提出的内在奖励公式:
r + ( x ) : = ( N ^ n ( x ) ) − 1 / 2 r^+(x):=(\hat{\mathrm{N}}_n(x))^{-1/2} r+(x):=(N^n(x))1/2
本文估计期望回报采用mixed Monte-Carlo update (MMC)算法:
Q ( x , a ) ← Q ( x , a ) + α [ ( 1 − β ) δ ( x , a ) + β δ M C ( x , a ) ] Q(x,a)\leftarrow Q(x,a)+\alpha\left[(1-\beta)\delta(x,a)+\beta\delta_{\mathsf{MC}}(x,a)\right] Q(x,a)Q(x,a)+α[(1β)δ(x,a)+βδMC(x,a)]

其中:
δ ( x , a ) = r ( x , a ) + γ max ⁡ a ′ Q ( x ′ , a ′ ) − Q ( x , a ) \delta\left(x,a\right)=r(x,a)+\gamma\operatorname*{max}_{a^{\prime}}Q(x^{\prime},a^{\prime})-Q(x,a) δ(x,a)=r(x,a)+γamaxQ(x,a)Q(x,a)

δ MC ( x , a ) = ∑ t = 0 ∞ γ t r ( x t , a t ) − Q ( x , a ) \delta_{\text{MC}}( x , a )=\begin{aligned}\sum_{t=0}^{\infty}\gamma^{t}r(x_{t},a_{t})-Q(x,a)\end{aligned} δMC(x,a)=t=0γtr(xt,at)Q(x,a)

前者为TD算法中的目标值与实际值之差,后者为蒙特卡洛算法中实际回报与实际动作状态价值之差。

3、一些估计Return的算法

各种算法估计Return的利弊:

  1. TD(λ) with important sampling :可以保证收敛,但是重要性采样的系数引入了极大的方差,导致算法的收敛过程不稳定。
  2. Q(λ) :忽略重要性采样系数,直接乘以λ,能保证方差小,但是只有在采样策略和目标策略接近时才可以保证收敛,不安全。
  3. Retrace算法:低方差(控制了重要性采样系数的大小)、安全性高(总是能“安全”地利用各种行为策略采样得到的样本,当behavior policy和target policy差很多的时候,依然能保障收敛性)、样本效率高(对reward的压缩性没有那么高),但是Retrace(λ)算法在学习时过于谨慎,可能无法充分利用探索奖励,因为在计算重要性采样比率时采样的数据会被截断,只有那些足够接近当前策略的状态-行为轨迹才会被保留

估计Return的通用算子:
R Q ( x , a ) : = Q ( x , a ) + E μ [ ∑ t ≥ 0 γ t ( ∏ s = 1 t c s ) ( r t + γ E π Q ( x t + 1 , ⋅ ) − Q ( x t , a t ) ) ] \mathcal{R}Q(x,a):=Q(x,a)+\mathbb{E}_\mu\left[\sum_{t\geq0}\gamma^t(\prod_{s=1}^tc_s)(r_t+\gamma\mathbb{E}_\pi Q(x_{t+1},\cdot)-Q(x_t,a_t))\right] RQ(x,a):=Q(x,a)+Eμ[t0γt(s=1tcs)(rt+γEπQ(xt+1,)Q(xt,at))]
将TD(λ)、Q(λ)、Retrace等算法的不同归结为c_{s}的不同:

  1. TD(λ) with import sampling:
    c s = λ ⋅ π ( a s ∣ x s ) μ ( a s ∣ x s ) c_s=\lambda\cdot\frac{\pi(a_s|x_s)}{\mu(a_s|x_s)} cs=λμ(asxs)π(asxs)

  2. Q(λ):
    c s = λ c_s=\lambda\ cs=λ 

  3. Retrace(λ):
    c s = λ ⋅ m i n ( 1 , π ( a s ∣ x s ) μ ( a s ∣ x s ) ) c_s=\lambda\cdot min{\left(1,\frac{\pi(a_s|x_s)}{\mu(a_s|x_s)}\right)} cs=λmin(1,μ(asxs)π(asxs))

由于Retrace(λ)使用了在1处截断的Importance Sampling,方差得到了降低。同时,因为
min ⁡ ( 1 , π ( a s ∣ x s ) μ ( a s ∣ x s ) ) ≥ π ( a s ∣ x s ) \min\left(1,\frac{\pi(a_s|x_s)}{\mu(a_s|x_s)}\right)\geq\pi(a_s|x_s) min(1,μ(asxs)π(asxs))π(asxs)
所以Retrace(λ)对回报的压缩幅度更弱(尤其是在两个policy接近时),从而提高了return的利用效率。

tips:对于Retrace(λ)算子的详细推导过程见【Typical RL 19】Retrace - 知乎 (zhihu.com)

4、方法过程

使用PixelCNN,将当前状态作为输入,输出对应状态的概率密度估计,通过对状态概率密度进行计数,计算出每个状态的探索奖励,即越少访问过的状态获得的奖励越高。这样,在选择下一个动作时,在智能体的策略中加入了探索奖励的权重,以鼓励更多地探索未知的状态,从而提高学习效率和收敛速度。

为了确保pseudo-counts与真实计数近似线性增长,PG应该以n^-1的速率衰减。于是将PG_{n}替换为c_{n}*PG_{n},其中c_{n}为:
c n = c n c_n=\frac{c}{\sqrt{n}} cn=n c
文章中通过实验确定c=0.1时结果最好。

由于当神经网络模型的优化器超过局部损失的最小值时,会出现负PG,因此需要给PG设定一个阈值为0,得到最终的伪计数公式为:
N ^ n ( x ) = ( exp ⁡ ( c ⋅ n − 1 / 2 ⋅ ( PG ⁡ n ( x ) ) + ) − 1 ) − 1 \begin{aligned}\hat{\mathrm{N}}_n(x)&=\left(\exp\left(c\cdot n^{-1/2}\cdot(\operatorname{PG}_n(x))_+\right)-1\right)^{-1}\end{aligned} N^n(x)=(exp(cn1/2(PGn(x))+)1)1
因此最终得到的组合探索奖励为:
r t = r ( x , a ) + ( N ^ n ( x ) ) − 1 / 2 r_t=\begin{aligned}r(x,a)+(\hat{\text{N}}_{n}(x))^{-1/2}\end{aligned} rt=r(x,a)+(N^n(x))1/2

总而言之,引入PixelCNN是为了计算PG,进而计算状态的伪计数,将伪计数转化为智能体的内在奖励

5、实验

1、文章通过实验表明探索奖励(exploration bonus)对智能体性能的影响比较均匀,可以在很多游戏中提高智能体的表现。特别是在Reactor-PixelCNN这个环境下,使用探索奖励的效果要比没有探索奖励的Reactor更好,表现为更高的样本利用效率。

2、文章还通过实验说明了在极度难以探索的游戏中,MMC和PixelCNN探索奖励的组合效果最好,两者相辅相成,加快了训练进展并促使智能体达到高性能水平。

3、文章说明了PixelCNN模型在估计探索奖励方面的有效性,这里与CTS模型进行了对比。

4、文章通过实验发现在一定范围内增加 PG scale 可以加快算法的探索速度,并在多次试验中获得记录峰值分数。但是增加 PG scale 也会导致一些问题。因为探索奖励是一个固定的值,如果过度注重探索奖励,可能会导致算法稳定性下降,从而影响长期性能。

6、结论

虽然目前的伪计数理论对密度模型提出了严格的要求,但文章证明PixelCNN可以在更简单和更一般的设置中使用,并且可以完全在线训练。它还被证明与值函数和基于策略的RL算法广泛兼容。

PixelCNN提高了基础RL算法的学习速度和稳定性。

6、算法伪代码(以DQN为base)

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

springboot,spring框架返回204 status code的时候,会吞掉返回值

背景 发现有个有意思的现象,就是当你的接口返回204的 HTTP status code 的时候,会自动把 response body 吃掉,即使代码里是有返回的。例如 (其实204本身就是NO_CONTENT的意思,不过我是真没想到真干掉了返回&#xff0…

数据库系统概念系列 - 数据库系统的历史

从商业计算机的出现开始,数据处理就一直推动着计算机的发展。事实上,数据处理自动化早于计算机的出现。Herman Hollerith 发明的穿孔卡片,早在20世纪初就用来记录美国的人口普查数据,并且用机械系统来处理这些卡片和列出结果。穿孔…

Kotlin HashMap entries.filter过滤forEach

Kotlin HashMap entries.filter过滤forEach fun main(args: Array<String>) {val hashMap HashMap<String, Int>()hashMap["a"] 1hashMap["b"] 2hashMap["c"] 3println(hashMap)hashMap.entries.filter {println("filter $…

GDPU 数据结构 天码行空9

实验九 哈夫曼编码 一、【实验目的】 1、理解哈夫曼树的基本概念 2、掌握哈夫曼树的构造及数据结构设计 3、掌握哈夫曼编码问题设计和实现 二、【实验内容】 1、假设用于通信的电文仅由8个字母 {a, b, c, d, e, f, g, h} 构成&#xff0c;它们在电文中出现的概率分别为{ 0.…

酷安官网下载页前端自适应源码

酷安官网下载页前端自适应源码&#xff0c;自己拿走玩玩 站长只打开看了一眼&#xff0c;感觉风格还不错&#xff0c;纯html&#xff0c;自己魔改 转载自 https://www.qnziyw.cn/wysc/qdmb/24470.html

达梦SQL语法兼容笔记

1. DDL工具语法 查看库和表列表 # 查看所有数据库 select distinct object_name from all_objects where object_typeSCH; # 查看所有可见的表名&#xff1a; SELECT table_name FROM all_tables; # 查看用户可见的所有表 SELECT table_name FROM all_tables WHERE owner s…

磁盘空间占用巨大的meta.db-wal文件缓存(tracker-miner-fs索引服务)彻底清除办法

磁盘命令参考本博客linux磁盘空间满了怎么办. 问题: 磁盘空间被盗 今天瞄了一下我的Ubuntu系统盘&#xff0c; nftdiggernftdigger-Ubuntu:~$ df -h 文件系统 容量 已用 可用 已用% 挂载点 udev 16G 0 16G 0% /dev tmpfs 3.2G 1.9…

VUE获取当前日期的周日和周六

<template><div><div click"handleLast()">上一周</div><div click"handleNext()">下一周</div><el-calendarref"monChild"v-model"value":first-day-of-week"7":range"[sta…

2023.11.8 hadoop学习-概述,hdfs dfs的shell命令

目录 1.分布式和集群 2.Hadoop框架 3.版本更新 4.hadoop架构详解 5.页面访问端口 6.Hadoop-HDFS HDFS架构 HDFS副本 7.SHELL命令 8.启动hive服务 1.分布式和集群 分布式: 多台服务器协同配合完成同一个大任务(每个服务器都只完成大任务拆分出来的单独1个子任务)集 群:…

怎样在iOS手机上进行自动化测试

Airtest支持iOS自动化测试&#xff0c;在Mac上为iOS手机部署iOS-Tagent之后&#xff0c;就可以使用AirtestIDE连接设备&#xff0c;像连接安卓设备一样&#xff0c;实时投影、控制手机。iOS测试不仅限于真机测试&#xff0c;iOS模拟器也可以进行。Mac端上部署完成后还可以提供给…

设计模式之组合模式-创建层次化的对象结构

目录 概述概念主要角色应用场景 组合模式的实现类图NS图基本代码组合模式的精髓意外收获&#xff08;❀❀&#xff09; 应用示例-公司组织架构管理需求结构图代码 组合模式的优缺点优点缺点 总结 概述 概念 组合模式是一种结构型设计模式&#xff0c;它允许将对象组合成树形结…

【Linux】 reboot 命令使用

reboot 命令用于用来重新启动计算机。 语法 reboot [参数] 命令选项及作用 执行令 man --reboot 执行命令结果 参数 -n : 在重开机前不做将记忆体资料写回硬盘的动作-w : 并不会真的重开机&#xff0c;只是把记录写到 /var/log/wtmp 档案里-d : 不把记录写到 /var/log…

拓世科技集团打造数字人营销解决方案,为车企提供新的“增长担当”

汽车&#xff0c;已经渐渐融入了现代人的日常生活&#xff0c;从高端的身份标志转变为普罗大众的出行选择&#xff0c;它驶入了千家万户&#xff0c;成为了我们日常出行的可靠伙伴&#xff0c;见证着人们的生活故事和时代的变迁。 中国汽车市场的蓬勃发展引起了业内外的广泛关…

解决Jenkins执行git脚本时报错:No such device or address问题

问题现象&#xff1a; Jenkins执行BeanShell脚本时&#xff0c;报错&#xff1a;jenkins fatal: could not read Username for http://112.11.120.1: No such device or address 解决方案&#xff1a; 解决服务器拉取git仓库的代码权限&#xff0c;使用高级子模块克隆功能。…

深入解析 Redis 分布式锁原理

一、实现原理 1.1 基本原理 JDK 原生的锁可以让不同线程之间以互斥的方式来访问共享资源&#xff0c;但如果想要在不同进程之间以互斥的方式来访问共享资源&#xff0c;JDK 原生的锁就无能为力了。此时可以使用 Redis 来实现分布式锁。 Redis 实现分布式锁的核心命令如下&am…

投票助手图文音视频礼物打赏流量主小程序开源版开发

投票助手图文音视频礼物打赏流量主小程序开源版开发 图文投票&#xff1a;用户可以发布图文投票&#xff0c;选择相应的选项进行投票。 音视频投票&#xff1a;用户可以发布音视频投票&#xff0c;观看音视频后选择相应的选项进行投票。 礼物打赏&#xff1a;用户可以在投票过…

cpu 支持内存带宽与内存最大长度的关系《鸟哥的 Linux 私房菜》

鸟哥的 Linux 私房菜 -- 计算机概论 -- 計算机&#xff1a;辅助人脑的好工具 同理&#xff0c;64 位 cpu 一次接受内存传递的 64bit 数据&#xff0c;内存字节地址用 64 位记录&#xff0c;最多能记录2^64个字节2^64Bytes2^34GB17179869184GB2^24TB&#xff0c;理论上&#xff…

Java后端开发——JDBC入门实验

JDBC&#xff08;Java Database Connectivity&#xff09;是Java编程语言中用于与数据库建立连接并进行数据库操作的API&#xff08;应用程序编程接口&#xff09;。JDBC允许开发人员连接到数据库&#xff0c;执行各种操作&#xff08;如插入、更新、删除和查询数据&#xff09…

计算机考研408有多难?25考研经验贴,开个好头很有必要

前言 大家好&#xff0c;我是陈橘又青&#xff0c;相信关注我的各位小伙伴们中&#xff0c;大多都是在计算机专业的大学生吧&#xff01; 每天都有许多人在后台私信我&#xff0c;问我要不要考研&#xff0c;我想说这个东西是因人而异的&#xff0c;像我本人就选择了就业&…

基于公共业务提取的架构演进——外部依赖防腐篇

1.背景 有了前两篇的帐号权限提取和功能设置提取的架构演进后&#xff0c;有一个问题就紧接着诞生了&#xff0c;对于诸多业务方来说&#xff0c;关键数据源的迁移如何在各个产品落地&#xff1f; 要知道这些数据都很关键&#xff1a; 对于帐号&#xff0c;获取不到帐号信息是…