强化学习(EfficientZero)(应用于图像和声音)

news/2024/5/10 10:53:06

目录

摘要

1.背景介绍

2.MCTS(蒙特卡洛树搜索)(推理类模型,棋类效果应用好,控制好像也不错)

3.MUZERO

4.EfficientZero(基于MUZERO)

 展望

 参考文献


摘要

在文中,基于传统强化学习在数据训练方面的局限性,引入了EfficientZero,并和常用的强化学习算法在Atari游戏中,进行性能的对比,证明EfficientZero的效果,之后简单介绍了EfficientZero算法所集合的基础算法,MCTS(蒙特卡洛树搜索),MUZERO,最后介绍了MUZERO的不足,并说明EfficientZero想对应的解决方案,以及一些展望。

1.背景介绍

应用领域局限性:强化学习主要被应用于游戏中,像推荐系统,自动驾驶,交易系统和现实交互较多的领域没有被应用。

 局限性原因:本质还是因为数据的问题,比方说阿尔法GO,训练数据等于在真实世界一个人用将近2w年,完成66Million局的游戏,才足以训练,而在模拟世界仅需要两组服务器,几天的时间,这种数据在推荐系统,自动驾驶,交易系统中是无法实现的。替代的方法是模拟这几种应用场景的环境,在模拟环境中训练模型,最后将模型应用在真实环境中,再根据真实世界数据,微调。

 进一步理解局限原因:上面已经论述,模拟器可以解决数据问题,但为什么上述领域依然没用强化学习,问题在于,有些环境的模拟器很难被构建,像蛋白质结构,有些模拟器运行速度并不比现实世界快太多,主要是高仿真的环境。像下面想复现一个炒菜过程,就十分复杂。

 

为了解决这个问题,EfficientZero应运而生:目的就是解决强化学习需要太多实例的问题,提高数据效率,在高维输入图像,音频,有很好的效果。

EfficientZero怎么解决数据量的问题:首先我们看一下EfficientZero需要的数据量,在传统强化学习中Atari一般需要1000小时的数据量,大概是200 million frames,但这种小游戏,一般来说,人类花费2个小时,就能很熟练了,作为一个交互算法,我们希望也只用两个小时的训练量,来达到一个好的效果,所以只取原数据量1000小时200 million frames的1/500的,也就是2小时的400kframes。

进一步看一下,下图右的结果:首先EfficientZero两个小时的训练量结果明显高于人类,更厉害的是她高于DQN用1000小时训练的结果。大大增加了强化学习在其他应用场景下落地的可能

再进一步和其他算法性能对比:1代表的是正常人类的水平,可以看出EfficientZero明显高于人类水平,而其他算法远低于人类水平,再思考一下为什么深度学习能在视觉,文本等领域活动广泛应用,因为他们的准确率,或者说场景应用效果已经远高于正常人类的水平,所以可以期待EfficientZero能给强化学习领域带来的变革。

 

在机器人控制方面:目前EfficientZero主要用于离散空间,还没专门解决连续空间的问题(正在做)。对于机器人的连续动作,进行离散化进行了测试,即使着这样也超过同类算法很多。

2.MCTS(蒙特卡洛树搜索)(推理类模型,棋类效果应用好,控制好像也不错)

首先介绍一下MCTS,因为EfficientZero用了MCTS。

基本:阿尔法狗下棋的时候,做决策的不是策略网络和价值网络,而是蒙特卡洛树搜索(Monte Carlo Tree Search, MCTS)。训练好的策略网络和价值网络均能单独地直接做决策。MCTS不需要训练,也可以单独地直接做决策。在阿尔法狗中,训练策略网络和价值网络的目的是辅助MCTS,降低MCTS的深度和宽度。在机巧围棋中,除阿尔法狗之外,还分别集成了策略网络、价值网络和蒙特卡洛落子策略,可以任意更改黑白双方的落子策略,查看不同落子策略之间的效果。

思想:人类玩家下围棋时,通常会往前看几步,越是高手,看的越远。与此同时,人类玩家不会分析棋盘上所有不违反规则的走法,而只会针对性地分析几个貌似可能的走法。假如现在该我放置棋子了,我会这样思考:现在貌似有几个可行的走法,如果我的动作是 t = 234,对手会怎么走呢?假如对手接下来将棋子放在a  = 30 的位置上,那我下一步动作a 1  应该是什么呢?

          人类玩家在做决策之前,会在大脑里面进行推演,确保几步以后很可能会占优势。同样的道理,AI下棋时候,也应该枚举未来可能发生的情况,从而判断当前执行什么动作的胜算更大。这样做远好于使用策略网络直接算出一个动作。

           MCTS的基本原理就是向前看,模拟未来可能发生的情况,从而找出当前最优的动作。这种向前看不是遍历所有可能的情况,而是与人类玩家类似,只遍历几种貌似可能的走法,而哪些动作是貌似可行的动作以及几步之后的局面优劣情况是由神经网络所决定的。阿尔法狗每走一步棋,都要用MCTS做成千上万次模拟,从而判断出哪个动作的胜算更大,并执行胜算最大的动作。
 

3.MUZERO

基本:Muzero建立在alphaZero算法的搜索能力以及基于搜索的策略迭代算法之上,同时联合了一个学习model在训练的过程中,极大的扩展了该学习算法的应用场景。
           它主要是将mentor Calor Tree Search算法、hidden state value equivalence思想,以及Deep Neural Network 相结合,创造一个更加general的算法来进行强化学习的训练,一句话总结就             是 Muzero算法是一个不需要environment dynamic先验,更加general的model-based的强化学习算法。

hidden state value equivalence思想:强化学习一直以来存在的一个大问题就是如何处理training space与 application space的状态的offset问题,之前就有很多人提出利用transfer learning 或者 Domain Adaptation来解决两个space之间的offset,但是hidden state value equivalence的思想是从state本身出发,在训练整个网络的时候并不是直接用训练场景的原始state作为输入,而是把原始的state通过一个神经网络进行转换,变换成hidden state(把环境状态用神经网络表示)。举个例子,人在实验室里面或者一个工厂里面走路(planning)的时候能够保证自己不碰撞到任何障碍物,而实验室的场景和工厂大不相同,也就是说真正决定人不会碰撞到障碍物不是一个具体场景,更像场景中一个抽象的结构信息,这里的hidden state就可以类比成这个抽象的结构信息。这样做的好处显而易见,就是能够提高网络的泛化能力以及网络的收敛性。只要hidden state对应的value和真实场景中对应的value是一致的,那么我们就能说hidden state可以在该任务中替代真实 state。
问题:MUZERO需要很大的数据量200M frames,41天数据量。而且不能处理复杂环境的问题,像自动驾驶,机器人控制。

4.EfficientZero(基于MUZERO)

MUZERO不足1:转移函数(transformation function)学习不充分,或者说转移函数学习时所受到的监督不够,因为转移函数学习是在价值函数(value function)和策略函数(policy function)监督下学习的,但这个两个函数只是一个22维的向量,属于弱监督,达不到最好的监督效果。

MUZERO不足2:model aliasing problem,以下图为例解释,如下图所示,一个白板和一个绿板在打一个白球,模型需要去学习,白球所有可能出界的具体位置,而在现实世界人类并不会关心,这个球具体是从那个位置出去的,人类只会关心,它有没有出去,从这个角度看,MUZERO在这一块构造的过于复杂。

MUZERO不足3:off-policy error when limite data,可以这样理解,在有限的数据中,价值函数计算有很大的off-policy error,理想情况下当前的目标值是由policy function求得,但在数据很少时会重复利用数据,这时得到的目标值,可能来源于老的数据。

解决1:不足1采用自监督解决。 使用一个consistency来学习环境如何变化的信息,或者说学习transformation function。从下图左(可放大界面查看)流程图去理解,在训练时输入一个Ot,通过representation(表征网络)得到st(状态),at(动作)再输入next-state网络得到预测的st+1,也就是下一个环境状态(因为想学习的是环境转移函数,或者说最好的环境转移率),同时在真实环境中输入Ot+1得到真实的st+1最后通过,对比网络,不断拉近预测和真实的差值,这样的好出在于,因为从时序出发,我们一次可以进行上千次时序的输入,而MUZERO仅22维,达到了一个强监督的效果。

        从下图右直观理解一下consistency带来的效果

                 第一行第一列表示输入,第二列到第六列表示第一步到第五步的预测效果。第一行每一步是最理想的效果。

                 第二行没有用consistency,可以看出第一步就糊了。

                 第三行用来consistency,可以看出,第五步依然有不错的效果,最起码保留了基本结构。

 解决2:对于上面打球游戏,可以理解为MUZERO想得到每一步最好的结果,但对于人类而言,我们只想知道最终谁赢谁输,所以MUZERO把问题复杂化了,而EfficientZero考虑从最终得分叠加去得到结果即可,所以基于LTSM(长短期记忆网络)去解决这个问题。

​              长短期记忆网络 LSTM(long short-term memory):是 RNN 的一种变体,其核心概念在于细胞状态以及“门”结构。细胞状态相当于信息传输的路径,让信息能在序列连中传递下去。你可以将其看作网络的“记忆”。理论上讲,细胞状态能够将序列处理过程中的相关信息一直传递下去。因此,即使是较早时间步长的信息也能携带到较后时间步长的细胞中来,这克服了短时记忆的影响。信息的添加和移除我们通过“门”结构来实现,“门”结构在训练过程中会去学习该保存或遗忘哪些信息。

进一步对比MUZERO(单步预测)和EfficientZero(多步预测)的效果:从下图可以看出在训练集上单步预测好于多步预测,但在验证集的泛化效果,多步预测好于单步预测。我的理解是,世事变化无常,不可能每一步预测的都一定能实现,反而多步预测得到总的结果,会有更好的效果,这里用resnet可以对比理解,resnet解决的就是,多层网络某一层效果不好,直接舍弃,但我保证最后的结果不差

解决3:MUZERO用的是第一个V,但数据量骤减之后第一个V已不在适用,EfficientZero使用第二个V构造价值。将原V中的k-1中的k用第二个V中l-1的自适应量l表示。

 展望

1.环境不确定性目前未处理,是一个方向。

2.作者提出一个观点,训练应该在真实环境下,但真实环境下需要训练上万次成本就很高,所以作者认为一个厉害的强化学习算法可以训练几十次就达到好的效果,比方说EfficientZero。

 参考文献

1.青源 LIVE 第 29 期 |使用有限的数据掌握Atari游戏_哔哩哔哩_bilibili

2.蒙特卡洛树搜索(MCTS)_RuizhiHe的博客-CSDN博客 

3.如何理解deepMind 团队的Muzero算法_OsgoodWu的博客-CSDN博客 

4.LSTM 简介_Lemon_Yam的博客-CSDN博客

5(详细).清华高阳:EfficientZero,一种采样高效的强化学习算法|报告详解 - 知乎 


http://www.mrgr.cn/p/50714620

相关文章

版本适配好帮手 Android SDK Upgrade Assistant / Android Studio Giraffe新功能

首先是新版本一顿下载↓: Download Android Studio & App Tools - Android Developers 在Tools中找到Android SDK Upgrade Assistant 可以在此直接查看SDK升级相关信息,不用跑到WEB端去查看了。 例如看一下之前经常要对老项目维护的android 12蓝牙…

【C进阶】回调函数(指针进阶2,详解,小白必看)

目录 6. 函数指针数组 6.1简单计算器 6.2函数指针数组实现计算器 7. 指向函数指针数组的指针(仅作了解即可) 8.回调函数 8.1关于回调函数的理解​编辑 8.1.1用回调函数改良简单计算器 8.2qsort库函数的使用 8.2.1冒泡排序 8.2.2qsort的概念 8.3冒泡排序思想实现qsor…

PKG内容查看工具:Suspicious Package for Mac安装教程

Suspicious Package Mac版是一款Mac平台上的查看 PKG 程序包内信息的应用,Suspicious Package Mac版支持查看全部包内全部文件,比如需要运行的脚本,开发者,来源等等。 suspicious package mac使用简单,只需在选择pkg安…

开发和测试模型

瀑布模型 需求分析-计划-设计-编码-执行测试-运行维护 特点: 线性结构每个阶段只执行一次 其他模型的基础框架 缺点: 测试后置 前面的风险被推迟到测试阶段才被发现,项目大面积需要修改,工作量大 测试时间不够 没有充足的测试时间进行功能评估和需求功能比对,会将缺陷暴露给用…

代码版本管理工具 git

1. 去B站看视频学习,只看前39集: 01-Git概述(Git历史)_哔哩哔哩_bilibili 2.学习Linux系统文本编辑器的使用 vi编辑器操作指令分享 (baidu.com) (13条消息) nano编辑器的使用_SudekiMing的博客-CSDN博客 windows下载安装Git官…

使用贝叶斯滤波器通过运动模型和嘈杂的墙壁传感器定位机器人研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

【C++】开源:Boost网络库Asio配置使用

😏★,:.☆( ̄▽ ̄)/$:.★ 😏 这篇文章主要介绍Asio网络库配置使用。 无专精则不能成,无涉猎则不能通。——梁启超 欢迎来到我的博客,一起学习,共同进步。 喜欢的朋友可以关注一下,下次…

小程序----配置原生内置编译插件支持sass

修改project.config.json配置文件 在 project.config.json 文件中,修改setting 下的 useCompilerPlugins 字段为 ["sass"], 即可开启工具内置的 sass 编译插件。 目前支持三个编译插件:typescript、less、sass 修改之后可以将原.w…

GNSS技术知识你知道多少?这些你或许还未掌握

GNSS信号频段 GNSS频谱图展示了不同的GNSS信号及其星座、载波频率、调制方案,以及所有这些信号在同一L波段频段内如何相互关联,是GNSS专业人员的必备工具,包括设计和开发GNSS系统的工程师,以及测试GNSS系统的工程师。 GNSS术语 …

基于深度学习的高精度课堂人脸检测系统(PyTorch+Pyside6+YOLOv5模型)

摘要:基于深度学习的高精度课堂人脸检测系统可用于日常生活中或野外来检测与定位课堂人脸目标,利用深度学习算法可实现图片、视频、摄像头等方式的课堂人脸目标检测识别,另外支持结果可视化与图片或视频检测结果的导出。本系统采用YOLOv5目标…

shopee,lazada,etsy店群如何高效安全的管理

对于电商卖家来说,要经营多个店铺,管理多个账号是非常常见的操作。为了避免账号关联被平台识别出来,需要使用防关联的浏览器来进行操作 ​1、支持多平台 支持同时管理多个电商平台店铺,Shopee、Lazada、etsy、poshmark、vinted等&…

网络安全(黑客)自学——从0开始

为什么学习黑客知识?有的人是为了耍酷,有的人是为了攻击,更多的人是为了防御。我觉得所有人都应该了解一些安全知识,了解基本的进攻原理。这样才可以更好的保护自己。这也是这系列文章的初衷。让大家了解基本的进攻与防御。 一、怎…

Redis学习路线(6)—— Redis的分布式锁

一、分布式锁的模型 (一)悲观锁: 认为线程安全问题一定会发生,因此在操作数据之前先获取锁,确保线程串行执行。例如Synchronized、Lock都属于悲观锁。 优点: 简单粗暴缺点: 性能略低 &#x…

2024届IC秋招兆易创新数字IC后端笔试面试题

数字IC后端实现PR阶段设计导入需要哪些文件? 设计导入需要的文件如下图所示。这个必须熟练掌握。只要做过后端训练营项目的,对这个肯定是比较熟悉的。大家还要知道每个input文件的作用是什么。 在吾爱IC后端训练营Cortexa7core项目中,你认为…

uniapp 语音文本播报功能

最近uniapp项目上遇到一个需求 就是在接口调用成功的时候加上语音播报 , ‘创建成功’ ‘开始成功’ ‘结束成功’ 之类的。 因为是固定的文本 ,所以我先利用工具生成了 文本语音mp3文件,放入项目中,直接用就好了。 这里用到的工…

java快速生成数据库表文档(HTML、DOC、MD)

在企业级开发中、我们经常会有编写数据库表结构文档的时间付出,关于数据库表结构文档状态:要么没有、要么有、但都是手写、后期运维开发,需要手动进行维护到文档中,很是繁琐,这里推荐一个开源项目:screw gi…

大促之前全链路压测监控

1. skywalking服务监控 1.1 skywalking简介 Skywalking 是一个APM系统,即应用性能监控系统,为微服务架构和云原生架构系统设计 它通过探针自动收集所需的指标,并进行分布式追踪,通过这些调用链路以及指标,Skywalking …

VMware搭建Hadoop集群 for Windows(完整详细,实测可用)

目录 一、VMware 虚拟机安装 (1)虚拟机创建及配置 (2)创建工作文件夹 二、克隆虚拟机 三、配置虚拟机的网络 (1)虚拟网络配置 (2)配置虚拟机 主机名 (3&#xf…

1.Flink概述

1.1 技术架构 应用框架层: 在API层之上构建的满足特定应用场景的计算框架,总体上分为流计算和批处理两类应用框架。API 层: Flink对外提供能力的接口 ,实现了面向流计算的DataStream API和面向批处理的DataSet API。运行时层:Flin…

golang waitgroup

案例 WaitGroup 可以解决一个 goroutine 等待多个 goroutine 同时结束的场景,这个比较常见的场景就是例如 后端 worker 启动了多个消费者干活,还有爬虫并发爬取数据,多线程下载等等。 我们这里模拟一个 worker 的例子 package mainimport (…