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…...
基于距离变化能量开销动态调整的WSN低功耗拓扑控制开销算法matlab仿真
目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.算法仿真参数 5.算法理论概述 6.参考文献 7.完整程序 1.程序功能描述 通过动态调整节点通信的能量开销,平衡网络负载,延长WSN生命周期。具体通过建立基于距离的能量消耗模型&am…...
Leetcode 3577. Count the Number of Computer Unlocking Permutations
Leetcode 3577. Count the Number of Computer Unlocking Permutations 1. 解题思路2. 代码实现 题目链接:3577. Count the Number of Computer Unlocking Permutations 1. 解题思路 这一题其实就是一个脑筋急转弯,要想要能够将所有的电脑解锁&#x…...
linux 下常用变更-8
1、删除普通用户 查询用户初始UID和GIDls -l /home/ ###家目录中查看UID cat /etc/group ###此文件查看GID删除用户1.编辑文件 /etc/passwd 找到对应的行,YW343:x:0:0::/home/YW343:/bin/bash 2.将标红的位置修改为用户对应初始UID和GID: YW3…...
并发编程 - go版
1.并发编程基础概念 进程和线程 A. 进程是程序在操作系统中的一次执行过程,系统进行资源分配和调度的一个独立单位。B. 线程是进程的一个执行实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。C.一个进程可以创建和撤销多个线程;同一个进程中…...
R 语言科研绘图第 55 期 --- 网络图-聚类
在发表科研论文的过程中,科研绘图是必不可少的,一张好看的图形会是文章很大的加分项。 为了便于使用,本系列文章介绍的所有绘图都已收录到了 sciRplot 项目中,获取方式: R 语言科研绘图模板 --- sciRplothttps://mp.…...
Linux信号保存与处理机制详解
Linux信号的保存与处理涉及多个关键机制,以下是详细的总结: 1. 信号的保存 进程描述符(task_struct):每个进程的PCB中包含信号相关信息。 pending信号集:记录已到达但未处理的信号(未决信号&a…...
AWSLambda之设置时区
目标 希望Lambda运行的时区是东八区。 解决 只需要设置lambda的环境变量TZ为东八区时区即可,即Asia/Shanghai。 参考 使用 Lambda 环境变量...
设计模式-3 行为型模式
一、观察者模式 1、定义 定义对象之间的一对多的依赖关系,这样当一个对象改变状态时,它的所有依赖项都会自动得到通知和更新。 描述复杂的流程控制 描述多个类或者对象之间怎样互相协作共同完成单个对象都无法单独度完成的任务 它涉及算法与对象间职责…...
【Elasticsearch基础】Elasticsearch批量操作(Bulk API)深度解析与实践指南
目录 1 Bulk API概述 1.1 什么是批量操作 1.2 Bulk API的优势 2 Bulk API的工作原理 2.1 请求处理流程 2.2 底层机制 3 Bulk API的使用方法 3.1 基本请求格式 3.2 操作类型示例 3.3 响应格式 4 Bulk API的最佳实践 4.1 批量大小优化 4.2 错误处理策略 4.3 性能调…...
【VLAs篇】02:Impromptu VLA—用于驱动视觉-语言-动作模型的开放权重和开放数据
项目描述论文标题Impromptu VLA:用于驱动视觉-语言-动作模型的开放权重和开放数据 (Impromptu VLA: Open Weights and Open Data for Driving Vision-Language-Action Models)研究问题自动驾驶的视觉-语言-动作 (VLA) 模型在非结构化角落案例场景中表现不佳…...
