77百科网
当前位置: 首页 生活百科

blowfish算法是否安全(BAIR最新RL算法超越谷歌Dreamer)

时间:2023-05-30 作者: 小编 阅读量: 1 栏目名: 生活百科

在DeepMindControlSuite上,CURL是第一个几乎与基于状态特征方法的sample-efficiency和性能所匹配的基于图像的算法。理论上,可以在CURLpipeline中使用任一RL算法,无论是同策略还是异策略。对比学习CURL的关键部分是使用对比无监督学习来学习高维数据的丰富表示的能力。CURL具体实现CURL通过将训练对比目标作为批更新时的辅助损失函数,在最小程度上改变基础RL算法。相似度量区分目标中的另一个决定因素是用于测量查询键对之间的内部乘积。

选自arXiv

作者:Aravind Srinivas等

机器之心编译

参与:Racoon、Jamin

pixel-based RL 算法逆袭,BAIR 提出将对比学习与 RL 相结合的算法,其 sample-efficiency 匹敌 state-based RL。

此次研究的本质在于回答一个问题—使用图像作为观测值(pixel-based)的 RL 是否能够和以坐标状态作为观测值的 RL 一样有效?传统意义上,大家普遍认为以图像为观测值的 RL 数据效率较低,通常需要一亿个交互的 step 来解决 Atari 游戏那样的基准测试任务。

研究人员介绍了 CURL:一种用于强化学习的无监督对比表征。CURL 使用对比学习的方式从原始像素中提取高阶特征,并在提取的特征之上执行异策略控制。在 DeepMind Control Suite 和 Atari Games 中的复杂任务上,CURL 优于以前的 pixel-based 的方法(包括 model-based 和 model-free),在 100K 交互步骤基准测试中,其性能分别提高了 2.8 倍以及 1.6 倍。在 DeepMind Control Suite 上,CURL 是第一个几乎与基于状态特征方法的 sample-efficiency 和性能所匹配的基于图像的算法。

论文链接:https://arxiv.org/abs/2004.04136

网站:https://mishalaskin.github.io/curl/

GitHub 链接:https://github.com/MishaLaskin/curl

背景介绍

CURL 是将对比学习与 RL 相结合的通用框架。理论上,可以在 CURL pipeline 中使用任一 RL 算法,无论是同策略还是异策略。对于连续控制基准而言(DM Control),研究团队使用了较为熟知的 Soft Actor-Critic(SAC)(Haarnoja et al., 2018) ;而对于离散控制基准(Atari),研究团队使用了 Rainbow DQN(Hessel et al., 2017))。下面,我们简要回顾一下 SAC,Rainbow DQN 以及对比学习。

Soft Actor Critic

SAC 是一种异策略 RL 算法,它优化了随机策略,以最大化预期的轨迹回报。像其他 SOTA 端到端的 RL 算法一样,SAC 在从状态观察中解决任务时非常有效,但却无法从像素中学习有效的策略。

Rainbow

最好将 Rainbow DQN(Hessel et al., 2017)总结为在原来应用 Nature DQN 之上的多项改进(Mnih et al., 2015)。具体来说,深度 Q 网络(DQN)(Mnih et al., 2015)将异策略算法 Q-Learning 与卷积神经网络作为函数逼近器相结合,将原始像素映射到动作价值函数里。

除此之外,价值分布强化学习(Bellemare et al., 2017)提出了一种通过 C51 算法预测可能值函数 bin 上的分布技术。Rainbow DQN 将上述所有技术组合在单一的异策略算法中,用以实现 Atari 基准的最新 sample efficiency。此外,Rainbow 还使用了多步回报(Sutton et al.,1998)。

对比学习

CURL 的关键部分是使用对比无监督学习来学习高维数据的丰富表示的能力。对比学习可以理解为可区分的字典查找任务。给定一个查询 q、键 K= {k_0, k_1, . . . } 以及一个明确的 K(关于 q)P(K) = ({k }, K \ {k }) 分区,对比学习的目标是确保 q 与 k的匹配程度比 K \ {k} 中的任何的键都更大。在对比学习中,q,K,k和 K \ {k} 也分别称为锚点(anchor),目标(targets),正样本(positive), 负样本(negatives)。

CURL 具体实现

CURL 通过将训练对比目标作为批更新时的辅助损失函数,在最小程度上改变基础 RL 算法。在实验中,研究者将 CURL 与两个无模型 RL 算法一同训练——SAC 用于 DMControl 实验,Rainbow DQN 用于 Atari 实验。

总体框架概述

CURL 使用的实例判别方法(instance discrimination)类似于 SimCLR、MoC 和 CPC。大多数深度强化学习框架采用一系列堆叠在一起的图像作为输入。因此,算法在多个堆叠的帧中进行实例判别,而不是单一的图像实例。

研究者发现,使用类似于 MoCo 的动量编码流程(momentum encoding)来处理目标,在 RL 中性能较好。最后,研究者使用一个类似于 CPC 中的双线性内积来处理 InfoNCE score 方程,研究者发现效果比 MoCo 和 SimCLR 中的单位范数向量积(unit norm vector products)要好。对比表征和 RL 算法一同进行训练,同时从对比目标和 Q 函数中获得梯度。总体框架如下图所示。

图 2:CURL 总体框架示意图

判别目标

选择关于一个锚点的正、负样本是对比表征学习的其中一个关键组成部分。

不同于在同一张图像上的 image-patches,判别变换后的图像实例优化带有 InfoNCE 损失项的简化实例判别目标函数,并需要最小化对结构的调整。在 RL 设定下,选择更简化判别目标的理由主要有如下两点:

鉴于 RL 算法十分脆弱,复杂的判别目标可能导致 RL 目标不稳定。

RL 算法在动态生成的数据集上进行训练,复杂的判别目标可能会显著增加训练所需时间。

因此,CURL 使用实例判别而不是 patch 判别。我们可将类似于 SimCLR 和 MoCo 这样的对比实例判别设置,看做最大化一张图像与其对应增广版本之间的共同信息。

查询-键值对的生成

类似于在图像设定下的实例判别,锚点和正观测值是来自同一幅图像的两个不同增广值,而负观测值则来源于其他图像。CURL 主要依靠随机裁切数据增广方法,从原始渲染图像中随机裁切一个正方形的 patch。

研究者在批数据上使用随机数据增广,但在同一堆帧之间保持一致,以保留观测值时间结构的信息。数据增广流程如图 3 所示。

图 3: 使用随机裁剪产生锚点与其正样本过程的直观展示。

相似度量

区分目标中的另一个决定因素是用于测量查询键对之间的内部乘积。CURL 采用双线性内积 sim(q,k)= q^TW_k,其中 W 是学习的参数矩阵。研究团队发现这种相似性度量的性能优于最近在计算机视觉(如 MoCo 和 SimCLR)中最新的对比学习方法中使用的标准化点积。

动量目标编码

在 CURL 中使用对比学习的目标是训练从高维像素中能映射到更多语义隐状态的编码器。InfoNCE 是一种无监督的损失,它通过学习编码器 f_q 和 f_k 将原始锚点(查询)x_q 和目标(关键字)x_k 映射到潜在值 q = f_q(x_q) 和 k = f_k(x_k) 上,在此团队应用相似点积。通常在锚点和目标映射之间共享相同的编码器,即 f_q = f_k。

CURL 将帧-堆栈实例的识别与目标的动量编码结合在一起,同时 RL 是在编码器特征之上执行的。

CURL 对比学习伪代码(PyTorch 风格)

实验

研究者评估(i)sample-efficiency,方法具体为测量表现最佳的基线需要多少个交互步骤才能与 100k 交互步骤的 CURL 性能相匹配,以及(ii)通过测量 CURL 取得的周期回报值与最佳表现基线的比例来对性能层面的 100k 步骤进行衡量。换句话说,当谈到数据或 sample-efficiency 时,其实指的是(i),而当谈起性能时则指的是(ii)。

DMControl

在 DMControl 实验中的主要发现:

CURL 是我们在每个 DMControl 环境上进行基准测试的 SOTA ImageBased RL 算法,用于根据现有的 Image-based 的基准进行采样效率测试。在 DMControl100k 上,CURL 的性能比 Dreamer(Hafner 等人,2019)高 2.8 倍,这是一种领先的 model-based 的方法,并且数据效率高 9.9 倍。

从图 7 所示的大多数 16 种 DMControl 环境中的状态开始,仅靠像素操作的 CURL 几乎可以进行匹配(有时甚至超过)SAC 的采样效率。它是基于 model-based,model-free,有辅助任务或者是没有辅助任务。

在 50 万步之内,CURL 解决了 16 个 DMControl 实验中的大多数(收敛到接近 1000 的最佳分数)。它在短短 10 万步的时间内就具有与 SOTA 相似性能的竞争力,并且大大优于该方案中的其他方法。

表 1. 在 500k(DMControl500k)和 100k(DMControl100k)环境步长基准下,CURL 和 DMControl 基准上获得的基线得分。

图 4. 相对于 SLAC、PlaNet、Pixel SAC 和 State SAC 基线,平均 10 个 seeds 的 CURL 耦合 SAC 性能。

图 6. 要获得与 CURL 在 100k 训练步骤中所得分相同的分数,需要先行采用领先的 pixel-based 方法 Dreamer 的步骤数。

图 7. 将 CURL 与 state-based 的 SAC 进行比较,在 16 个所选 DMControl 环境中的每个环境上运行 2 个 seeds。

Atari

在 Atari 实验中的主要发现:

就大多数 26 项 Atari100k 实验的数据效率而言,CURL 是 SOTA PixelBased RL 算法。平均而言,在 Atari100k 上,CURL 的性能比 SimPLe 高 1.6 倍,而 Efficient Rainbow DQN 则高 2.5 倍。

CURL 达到 24%的人类标准化分数(HNS),而 SimPLe 和 Efficient Rainbow DQN 分别达到 13.5%和 14.7%。CURL,SimPLe 和 Efficient Rainbow DQN 的平均 HNS 分别为 37.3%,39%和 23.8%。

CURL 在三款游戏 JamesBond(98.4%HNS),Freeway(94.2%HNS)和 Road Runner(86.5%HNS)上几乎可以与人类的效率相提并论,这在所有 pixel-based 的 RL 算法中均属首例。

表 2. 通过 CURL 和以 10 万个时间步长(Atari100k)为标准所获得的分数。CURL 在 26 个环境中的 14 个环境中实现了 SOTA。

项目介绍

安装

所有相关项都在 conda_env.yml 文件中。它们可以手动安装,也可以使用以下命令安装:

conda env create -f conda_env.yml

使用说明

要从基于图像的观察中训练 CURL agent 完成 cartpole swingup 任务,请从该目录的根目录运行 bash script/run.sh。run.sh 文件包含以下命令,也可以对其进行修改以尝试不同的环境/超参数。

CUDA_VISIBLE_DEVICES=0 python train.py \

--domain_name cartpole \

--task_name swingup \

--encoder_type pixel \

--action_repeat 8 \

--save_tb --pre_transform_image_size 100 --image_size 84 \

--work_dir ./tmp \

--agent curl_sac --frame_stack 3 \

--seed -1 --critic_lr 1e-3 --actor_lr 1e-3 --eval_freq 10000 --batch_size 128 --num_train_steps 1000000

在控制台中,应该看到如下所示的输出:

| train | E: 221 | S: 28000 | D: 18.1 s | R: 785.2634 | BR: 3.8815 | A_LOSS: -305.7328 | CR_LOSS: 190.9854 | CU_LOSS: 0.0000

| train | E: 225 | S: 28500 | D: 18.6 s | R: 832.4937 | BR: 3.9644 | A_LOSS: -308.7789 | CR_LOSS: 126.0638 | CU_LOSS: 0.0000

| train | E: 229 | S: 29000 | D: 18.8 s | R: 683.6702 | BR: 3.7384 | A_LOSS: -311.3941 | CR_LOSS: 140.2573 | CU_LOSS: 0.0000

| train | E: 233 | S: 29500 | D: 19.6 s | R: 838.0947 | BR: 3.7254 | A_LOSS: -316.9415 | CR_LOSS: 136.5304 | CU_LOSS: 0.0000

cartpole swing up 的最高分数约为 845 分。而且,CURL 如何以小于 50k 的步长解决 visual cartpole。根据使用者的 GPU 不同而定,大约需要一个小时的训练。同时作为参考,最新的端到端方法 D4PG 需要 50M 的 timesteps 来解决相同的问题。

Log abbreviation mapping:

train - training episode

E - total number of episodes

S - total number of environment steps

D - duration in seconds to train 1 episode

R - mean episode reward

BR - average reward of sampled batch

A_LOSS - average loss of actor

CR_LOSS - average loss of critic

CU_LOSS - average loss of the CURL encoder

与运行相关的所有数据都存储在指定的 working_dir 中。若要启用模型或视频保存,请使用--save_model 或--save_video。而对于所有可用的标志,需要检查 train.py。使用 tensorboard 运行来进行可视化:

tensorboard --logdir log --port 6006

同时在浏览器中转到 localhost:6006。如果运行异常,可以尝试使用 ssh 进行端口转发。

对于使用 GPU 加速渲染,确保在计算机上安装了 EGL 并设置了 export MUJOCO_GL = egl。

    推荐阅读
  • 早餐华夫饼怎么搭配(最全的华夫饼攻略)

    华夫饼可以变换多重口味,这里介绍了三款,咸甜都有!By嘉薇用料华夫饼预拌粉1包鸡蛋2个牛奶250毫升沙拉酱少许肉松少许黄油20克蜂蜜一勺炼乳20克做法步骤1、现在超市有卖这样的预拌粉,很方便,牛奶正好是用一盒的量,没有称也可以做2、把所有材料混合成无颗粒的面糊3、早餐机加热,倒入一勺面糊4、加热4-5分钟5、趁热放上蜂蜜黄油,炼乳6、或者还可以挤上沙拉酱,再放上一些海苔肉松,就是咸味的华夫饼了!

  • 广东西汉南越王考古(秦朝遗臣越南先祖)

    从秦始皇到宣统帝,除去那些未在位、死后追尊的,据统计是283位。战事直到吕后去世才停止,后来汉文帝刘恒再次派遣使节出使南越。南越国历时93年,共传5代王。赵眜薨逝后,继任者几乎是2年一换,南越国内部冲突严重,最终演变成叛乱,重点是他们还打起了汉王朝的主意。顶层是墓室的入口,全馆共有10个展厅,4800多平方米。

  • 红玫瑰与粉玫瑰送人有区别吗?

    玫瑰作为爱情的代表,是情侣之间传递感情的重要载体。花店里常见的玫瑰花有很多,比如说红玫瑰、粉玫瑰、香槟玫瑰等。当我们真正去选择的时候却不知道如何选择,那么红玫瑰与粉玫瑰送人有区别吗?首先,红玫瑰的花语为热恋,我爱你。不论是红玫瑰还是粉玫瑰都是代表的与爱有关,但是他们还是有很大的区别的。严格来说是代表的感情程度不一样,红玫瑰适合在热烈中使用,粉玫瑰则适合刚恋爱阶段送人或者是求婚的时候使用。

  • 森雅r7自动挡豪华版(诚意十足细节提升)

    不过由于仅有手动版,并不能满足广大消费者的要求。R7自动挡车身尺寸与今年4月上市的森雅R7手动挡车型没有任何区别,长宽高4305×1780×1655mm,2600mm同级车型最大轴距。车尾的造型设计相对简洁,但是SUV车型所拥有的厚重感依旧存在,整体饱满干净,银色护底板的搭配使整车的运动风格凸显。同时尾灯由55颗LED发光体组成,在中高配车型中均配备后车雷达和倒车影像。由于是冰雪路面,森雅R7在转弯过程及颠簸路段都展现出了良好的能力。

  • 梦幻西游点修计算器(梦幻西游点修消耗表)

    2个法系法抗较高,就先点抗物太清阁的80点太清符=58689储备金。今天测试一下杀30个蜃气妖要多久,方便我后面控制杀多久的大蜃气妖。今天我9点的开箱子还是不去,就杀够40个蜃气妖,看看时间这个要求也太狠了吧,举报自己免费改名字34分开始,杀到了02分,一共28分钟,那证明我们之前。那看样子我们下次9.30左右开始杀小蜃气妖是正确的换了一只新须弥,加点和装备我现在开始调整老须弥就挂个接受还价了,430-450都可以卖。

  • 西红柿鸡蛋酱的做法(怎么做西红柿鸡蛋酱)

    下面内容希望能帮助到你,我们来一起看看吧!西红柿鸡蛋酱的做法西红柿400克、鸡蛋2个、蘑菇酱50克、葱、姜适量、盐1克、味极鲜酱油3毫升、蚝油3毫升。炒锅里再倒入适量胡油,等油五成熟时,放入葱、姜爆香,加入盐,味极鲜酱油和蚝油调味。再放入西红柿和蘑菇酱,翻炒出红油。

  • 香水柠檬亩产量多少(香水柠檬一亩产量多少)

    香水柠檬是芸香科柑桔属的常绿小乔木,原产东南亚,现主要产地为美国、意大利、西班牙和希腊。常规种植的条件下,香水柠檬的亩产量约为8000-9000斤左右,若种植时间较久,则亩产量通常可达到10000斤以上,具体产量因种植方法、种植环境、管理方式等因素而异。种植香水柠檬时可将种子浸泡2天,再剥去表面的外皮,放于纸巾上并喷洒适量的清水,然后装入玻璃瓶中密封,待经过7天后即可播种。

  • 风帆电瓶怎么样 风帆电瓶怎么样看生产日期

    二者全是中国蓄电池知名品牌,都各有各的好。那麼下面,中国就给大家一下,825轮胎比750高是多少吧。自然,这一也是要考虑到许多要素的,无论是车辆的驱动力、长短或是设计方案品质,对承载力都是会有些危害。可不能小瞧超载的严重后果,不但车子的控制力有一定的降低,以至于存有一定的安全风险,在急刹或是急弯的情况下,非常容易就会发生无法控制的状况。

  • 鸽眼图的分析(16幅超级鸽眼图详解)

    鸽眼依其底砂的颜色分为三大类,第一类:底砂颜色为白色的称为砂眼;第二类:底砂颜色为黄色的称为黄眼;第三类:底砂颜色为紫红色的称为牛眼或葡萄眼。不同的距离对种鸽和赛鸽的要求是不同的。眼球通过视网膜上的视神经末梢与中枢神经系统联系,外界物体在视网膜上构成物像刺激视神经发生兴奋,传递到大脑皮层即产生视觉。

  • 这菜冬天要多吃味道鲜美有营养(这菜过年要常吃)

    随着生活水平的提高,人们的饮食习惯,口味也发生了改变。苦菊是一种价格实惠,一年四季均可买到的蔬菜,颜色碧绿,微微带点苦味。苦菊的营养价值比其他果蔬高,因为100克苦菊的蛋白质含量高达1.2克,钙,铁,锌的含量也比较高。苦菊清洗干净后,控干水分,折成两段。紫甘蓝价格低廉,并且容易储存,过年买两个可以吃好几顿。