Exploration by random network distillation论文笔记
Exploration by Random Network Distillation (2018)
随机网络蒸馏探索
0、问题
这篇文章提出的随机网络蒸馏方法与Curiosity-driven Exploration by Self-supervised Prediction中提出的好奇心机制的区别?
猜想:本文是基于随机网络蒸馏提出的intrinsic reward设计方式,好奇心是基于前向动力学模型的误差设计的intrinsic reward。
1、Motivation
依然旨在为智能体的探索提供一种有效的探索奖励,文章还提供一种灵活的结合intrinsic 和 extrinsic reward的方法。
论文使用随机网络蒸馏算法。
问题:以往的论文,探索奖励是基于智能体过去经验训练的网络的预测误差来量化新经验的新颖性,但是最大化这种预测误差的智能体,往往会被输入是随机的transition所吸引。举例来说就是,如果预测问题是在给定当前观察和动作(前向动态)的情况下预测下一个观察结果,那么对于一个transition(st,at,r,st+1),输入的st是例如电视雪花一样的随机噪声,那么预测出来的st+1肯定是误差最大的,因此智能体会陷入这种transition中。
于是本论文提出新的方案解决这种问题,即在当前观测值的基础上预测一个固定的随机初始化神经网络的输出。
为了结合exploration bonus和extrinsic rewards,文章引入了PPO算法的修改版本。
2、方法
Target网络:一个固定且随机初始化的网络。
Predictor网络:在智能体收集的数据上进行训练的网络。
Target网络对智能体的observation进行映射:
f : O → R k f:\mathcal{O}\to\mathbb{R}^k f:O→Rk
Predictor网络也对智能体的observation进行映射:
f ^ : O → R k \hat{f}:\mathcal{O}\to\mathbb{R}^k f^:O→Rk
并且通过梯度下降来最小化期望MSE:
∥ f ^ ( x ; θ ) − f ( x ) ∥ 2 \|\hat{f}(\mathrm{x};\theta)-f(\mathrm{x})\|^2 ∥f^(x;θ)−f(x)∥2
以此来更新Predictor网络的参数θ,如果observation是Predictor网络没有训练过的,那么预测出来的误差将比较高,以此可以来作为智能体的探索奖励来推动智能体探索新颖的环境。
3、预测误差的来源以及其他模型的问题
- 训练数据量。对于Predictor很少看到的类似的例子的observation,预测误差很高。
- 随机性。由于目标函数是随机的,因此预测误差很高。随机的Transition是前向动力学模型预测误差的来源。
- 模型错误规范。因为缺少必要的信息,或者模型类太有限,无法适应目标函数的复杂性,使得预测误差很高。
- 学习动力。因为优化过程未能在模型类中找到最接近目标函数的预测器,所以预测误差很高。
因素1是能用预测误差来作为exploration bonus的原因。因素2会导致基于forward dynamics model的预测误差为exploration bonus的智能体陷入局部熵源中,例如“noisy-TV”。
有论文提出了改进方法来避免因素2和3带来的不良影响问题,但是这些方法往往是计算昂贵的,难以扩展。
而RND方法消除了因素2和3带来的不良影响,因为Target网络是被固定下来的,并且在Predictor网络的模型类内。
tips:【伏羲讲堂】强化学习的探索方法简介 - 知乎 (zhihu.com)对此处有详细解释
4、奖励和Observation归一化
在不同的环境和不同的时间点,奖励的规模可能会有很大的不同,所以要对exploration bonus进行归一化处理。
对observation进行归一,如果缺乏归一化处理,嵌入的方差可能会非常低,并且携带的关于输入的信息很少。
5、实验
-
在纯intrinsic reward的实验中,发现non-episodic agent比episodic agent表现得更好,探索到的房间更多。
-
针对状态价值结合方式:
V = V E + V I V=V_{E}+V_{I} V=VE+VI
实验得出结论,在使用两个状态价值函数,即状态Extrinsic reward价值函数和状态intrinsic reward价值函数的情况下,使用non-episodic的intrinsic reward结合episodic的extrinsic reward这种组合要优于都是episodic的intrinsic reward和extrinsic reward的组合。而在episodic的设置中,使用单个的状态价值函数来直接估计VE和VI的结合,分别使用两个状态价值函数分别估计VE和VI效果差不多,但是文章的实验还是基于两个状态价值函数,这样做是为了将VE和VI与各自不同的特征结合起来。
-
实验研究extrinsic reward和intrinsic reward折扣因子的性能,发现外部奖励的折扣因子越高,性能越好,而对于内在奖励,它会损害探索。实验发现当extrinsic reward的折扣因子γE为0.999,intrinsic reward的折扣因子γI为0.99时,性能最好,但是当γI增加到0.999时,性能反而受到了损害。
-
实验表明在使用不同数量并行环境进行实验时,通过调整批次大小并保持内在奖励递减速率恒定,能够帮助策略模型有效地利用那些临时的、随着时间消失的内在奖励,以促进对于新颖状态的探索和学习。
-
实验表明基于RNN的策略要更频繁地优于基于CNN的策略,因为基于RNN的策略可以保持总结过去的状态。
6、结论
RND探索奖励足以处理局部探索,即探索短期决策的结果,如是否与特定对象互动或避免它。然而,涉及长期协调决策的全局勘探超出了RND方法的范围。
文章指出未来仍然有需要继续研究的地方:举了个例子,在Montezuma’s Revenge游戏的第一关中,智能体要想通关必须打开进入一个由两扇门锁着的房间,这就需要两把钥匙。但是整个环境中,一共有6扇门和4把钥匙,这就意味着智能体需要保留4把钥匙中的2把,以留到最后的两扇门中来打开,但是打开前面4扇门又能够立即获得外部奖励,这意味着智能体需要有足够的内在奖励来使智能体放弃打开前4扇门中的2扇,以平衡由于早期使用密钥而失去的外部奖励。可是RND方法并不能很好的实现这种策略。
7、RND+PPO算法的伪代码
相关文章:

Exploration by random network distillation论文笔记
Exploration by Random Network Distillation (2018) 随机网络蒸馏探索 0、问题 这篇文章提出的随机网络蒸馏方法与Curiosity-driven Exploration by Self-supervised Prediction中提出的好奇心机制的区别? 猜想:本文是基于随机网络蒸馏提出的intrin…...

Ubuntu22.04配置Go环境
Ubuntu上配置Go环境biCentOS简单多了,有两种方案,一种直接使用apt进行安装,一种自己从官网下载安装包进行安装。 1、使用apt直接安装 更新apt安装包,常规操作 apt update 然后看看apt自带的Go版本是多少 apt list golang 是1…...

Zabbix深入解析与实战
1.Zabbix 1.1.监控概述 监控是指对行为、活动或其他变动中信息的一种持续性关注,通常是为了对人达成影响、管理、指导或保护的目的 监控 监视主机架构状态控制,事后追责目标:早发现早处理(故障、性能、架构) 网站扩容(用数据说话) 为什么要…...

怎么用电脑开发安卓app?能外包吗?
随着智能手机的普及,安卓应用程序的开发需求也越来越高,许多人都想开发自己的安卓应用程序,但苦于缺乏相关知识和技能,本文将介绍如何使用电脑开发安卓应用程序,以及是否可以将开发工作外包给专业的开发团队。 一、了…...

1-前端基本知识-HTML
1-前端基本知识-HTML 文章目录 1-前端基本知识-HTML总体概述什么是HTML?超文本标记语言 HTML基础结构文档声明根标签头部元素主体元素注释 HTML概念词汇:标签、属性、文本、元素HTML基本语法规则HTML常见标签标题标签段落标签换行标签列表标签超链接标签…...

磁盘的分区、格式化、检验与挂载 ---- fdisk,mkfs,mount
磁盘的分区、格式化、检验与挂载 磁盘管理是非常重要的,当我们想要再系统里面新增一块磁盘使用时,应执行如下几步: 对磁盘进行划分,以建立可用的硬盘分区 (fdisk / gdisk)对硬盘分区进行格式化࿰…...
Solr搜索参数详解
Solr 页面搜索 1.1 基本查询 参数意义q查询的关键字,此参数最为重要,例如,qid:1,默认为q:,fl指定返回哪些字段,用逗号或空格分隔,注意:字段区分大小写,例如,…...

Flink(三)【运行时架构】
前言 今天学习 Flink 的一些原理性的东西,比较偏概念,但是十分重要。有人觉得上来框框敲代码才能学到东西,那是狗屁不通的道理(虽然我以前也这么认为)。个人认为,学习 JavaEE那些框架,你上来就敲…...
conda添加清华镜像源
一、conda下载 https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/ 显示所有channel conda config --show channels 二、添加清华镜像源 conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/ conda config --add channels https://…...

「Verilog学习笔记」求两个数的差值
专栏前言 本专栏的内容主要是记录本人学习Verilog过程中的一些知识点,刷题网站用的是牛客网 timescale 1ns/1ns module data_minus(input clk,input rst_n,input [7:0]a,input [7:0]b,output reg [8:0]c );always (posedge clk or negedge rst_n) begin if (~rst_…...

微头条项目实战:通过postman测试登录验证请求
1、CrosFilter package com.csdn.headline.filters; import jakarta.servlet.*; import jakarta.servlet.http.HttpServletResponse; import java.io.IOException; public class CrosFilter implements Filter {/*** 过滤器方法,用于处理HTTP请求* param servletReq…...
ARCGIS SERVER WMS、WFS服务添加过滤条件
我们知道geoserver中的wms,wfs过滤参数为cql_filter。比如过滤字段“mc”为"恒宇花园"的数据: cql_filtermc‘恒宇花园 但是arcgis server有所不同。具体可以看下它的标准:使用 WMS 请求中的 layerDefs 参数过滤要素—文档 | ArcGIS Enterpris…...

2013年108计网
第33题 在 OSI 参考模型中, 下列功能需由应用层的相邻层实现的是()A. 对话管理B. 数据格式转换C. 路由选择D. 可靠数据传输 很显然,题目所问的应用层的相邻层是表示层。该层实现与数据表示相关的功能。选项a中的对话管理属于会话层。选项c中的路由选择属于网络层。…...

【数据结构】单链表OJ题(一)
🔥博客主页: 小羊失眠啦. 🎥系列专栏:《C语言》 《数据结构》 《Linux》《Cpolar》 ❤️感谢大家点赞👍收藏⭐评论✍️ 文章目录 前言一、移除链表元素二、寻找链表中间结点三、输出链表倒数第k个结点四、反转单链表五…...

2023年云计算发展趋势浅析
云计算的概念 云计算是一种通过互联网提供计算资源和服务的模式。它允许用户通过网络访问和使用共享的计算资源,而无需拥有或管理这些资源的物理设备。云计算的核心理念是将计算能力、存储资源和应用程序提供给用户,以便随时随地根据需要…...

[极客大挑战 2019]Http1
打开题目 没有发现什么,我们查看源代码 在这里我们发现了提示 访问一下页面得到 提示说不能来自于https://Sycsecret.buuoj.cn,我们尝试访问一下这个url 发现访问不了 我们bp抓包一下 伪造个referer头 referer:https://Sycsecret.buuoj.cn 发包过去…...

C 语言 for循环
C 语言 for循环 在本教程中,您将借助示例学习在C语言编程中创建for循环。 在编程中,循环用于重复代码块,直到满足指定条件为止。 C语言编程具有三种循环类型: for 循环while 循环do… while 循环 我们将在本教程中学习for循环…...
浅谈数据结构之链表
链表是一种灵活的数据结构,有单向链表、双向链表和循环链表等多种形式。在本文中,我们将深入探讨单向链表、双向链表、循环链表的定义、Java实现方式、使用场景,同时比较它们的不同之处。我们还会介绍链表与队列之间的区别。 单向链表 定义…...
封装一个 虚拟列表渲染 组件
组件代码 <template><div ref"list" class"infinite-list-container" scroll"scrollEvent($event)"><div class"infinite-list-phantom" :style"{ height: listHeight px }"></div><div class…...
Spring中@Bean标注的方法是如何创建对象呢?
Bean 标注的方法如何创建对象呢? 参考文章:https://blog.csdn.net/qq_35971258/article/details/128241353 下边只讲一下 Bean 注解标注的方法,是如何去进行创建 bean,以及流程是怎样的,如果需要看源码具体执行流程&a…...

深度学习在微纳光子学中的应用
深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向: 逆向设计 通过神经网络快速预测微纳结构的光学响应,替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…...

多模态2025:技术路线“神仙打架”,视频生成冲上云霄
文|魏琳华 编|王一粟 一场大会,聚集了中国多模态大模型的“半壁江山”。 智源大会2025为期两天的论坛中,汇集了学界、创业公司和大厂等三方的热门选手,关于多模态的集中讨论达到了前所未有的热度。其中,…...
进程地址空间(比特课总结)
一、进程地址空间 1. 环境变量 1 )⽤户级环境变量与系统级环境变量 全局属性:环境变量具有全局属性,会被⼦进程继承。例如当bash启动⼦进程时,环 境变量会⾃动传递给⼦进程。 本地变量限制:本地变量只在当前进程(ba…...

微软PowerBI考试 PL300-选择 Power BI 模型框架【附练习数据】
微软PowerBI考试 PL300-选择 Power BI 模型框架 20 多年来,Microsoft 持续对企业商业智能 (BI) 进行大量投资。 Azure Analysis Services (AAS) 和 SQL Server Analysis Services (SSAS) 基于无数企业使用的成熟的 BI 数据建模技术。 同样的技术也是 Power BI 数据…...

学校招生小程序源码介绍
基于ThinkPHPFastAdminUniApp开发的学校招生小程序源码,专为学校招生场景量身打造,功能实用且操作便捷。 从技术架构来看,ThinkPHP提供稳定可靠的后台服务,FastAdmin加速开发流程,UniApp则保障小程序在多端有良好的兼…...

srs linux
下载编译运行 git clone https:///ossrs/srs.git ./configure --h265on make 编译完成后即可启动SRS # 启动 ./objs/srs -c conf/srs.conf # 查看日志 tail -n 30 -f ./objs/srs.log 开放端口 默认RTMP接收推流端口是1935,SRS管理页面端口是8080,可…...
Qt Http Server模块功能及架构
Qt Http Server 是 Qt 6.0 中引入的一个新模块,它提供了一个轻量级的 HTTP 服务器实现,主要用于构建基于 HTTP 的应用程序和服务。 功能介绍: 主要功能 HTTP服务器功能: 支持 HTTP/1.1 协议 简单的请求/响应处理模型 支持 GET…...

ServerTrust 并非唯一
NSURLAuthenticationMethodServerTrust 只是 authenticationMethod 的冰山一角 要理解 NSURLAuthenticationMethodServerTrust, 首先要明白它只是 authenticationMethod 的选项之一, 并非唯一 1 先厘清概念 点说明authenticationMethodURLAuthenticationChallenge.protectionS…...
Java 加密常用的各种算法及其选择
在数字化时代,数据安全至关重要,Java 作为广泛应用的编程语言,提供了丰富的加密算法来保障数据的保密性、完整性和真实性。了解这些常用加密算法及其适用场景,有助于开发者在不同的业务需求中做出正确的选择。 一、对称加密算法…...

【开发技术】.Net使用FFmpeg视频特定帧上绘制内容
目录 一、目的 二、解决方案 2.1 什么是FFmpeg 2.2 FFmpeg主要功能 2.3 使用Xabe.FFmpeg调用FFmpeg功能 2.4 使用 FFmpeg 的 drawbox 滤镜来绘制 ROI 三、总结 一、目的 当前市场上有很多目标检测智能识别的相关算法,当前调用一个医疗行业的AI识别算法后返回…...