美国OpenAI公司开发的机器学习系统-Hide and Seek(捉迷藏)游戏系统课程报告

1. 实验目的

通过复现美国OpenAI公司开发的机器学习系统-Hide and Seek(捉迷藏)游戏,熟悉机器学习系统的基本结构,包括定义、工作原理、设计方法以及影响系统设计重要因素,了解机器学习系统的开发与应用,更好地理解机器学习的概念以及机器学习基本方法,包括传统学习方法、深度学习和强化学习等。通过案例创新教学方法实践,培养创新型人工智能+人才。

2. OpenAI基本工作原理

2.1 强化学习的基本原理

如下图所示,强化学习把学习看作试探、评价的过程。Agent(智能体)选择一个动作(action)用于环境,环境接受该动作后,状态(state)发生变化,同时产生一个强化信号,即奖励(reward)反馈给agent,agent根据信号和环境的当前状态再选择下一个动作,选择原则是使受到奖励的概率增大。选择动作不仅影响立即强化值,而且影响环境下一时刻状态及最终强化值。

在这里插入图片描述

2.2 OpenAI 捉迷藏系统的工作原理

2.2.1 OpenAI捉迷藏系统简介

OpenAI于2019年开发了Hide and Seek(捉迷藏)系统。一群智能体在一个虚拟环境中玩捉迷藏,它们能够通过不断学习与尝试,自创越来越复杂的作战策略,证明简单游戏规则、多智能体竞争和大规模强化学习算法可以促使智能体在无监督情况下从环境中学习复杂策略与技能。

2.2.2 OpenAI研究捉迷藏系统的动机

从生物进化角度来看,人类是一个可以不断适应新环境的物种,而人工智能却没有该特性。近年来,机器学习在围棋以及Dota 2等复杂游戏中取得显著进步,但这些特定领域的技能并不一定能适应现实场景实际应用。鉴于此,越来越多研究人员希望构建能够在行为、学习和进化等方面远超人类智能的机器智能。

2.2.3 OpenAI捉迷藏系统的实现目标

多个智能体通过竞争性自我博弈的不断训练,学习如何使用工具并使用类人技能取得游戏胜利。

2.2.4 OpenAI捉迷藏系统的基本要素

如下图所示,OpenAI捉迷藏系统的基本要素包括3D环境和角色。

3D环境:一个包含斜坡、墙和盒子的3D环境。

角色:在3D环境中,智能体以团队为单位进行捉迷藏游戏,由搜索方(红色小人)和隐藏方(蓝色小人)组成。其中,搜索方的任务是紧紧追逐隐藏方,而隐藏方的任务是躲避搜索方的视线。

在这里插入图片描述

2.2.5 OpenAI捉迷藏系统的奖励策略

赢得游戏的搜索方和隐藏方都会获得奖励,因此他们要不断地更新自己的策略。系统奖励遵循规则1规则3。
规则1:准备阶段所有智能体的奖励为零。
规则2:隐藏方的奖励定义为:如果所有隐藏方成功隐藏,则奖励+1;相反,如果任何隐藏方被搜索方发现,则奖励-1。
规则3:搜索方的奖励方式与隐藏方相反,定义为:如果所有隐藏方成功隐藏,则奖励-1;如果任何隐藏方被发现,则奖励+1。
规则4:智能体行为需要控制在合理的空间。如果超出游戏区域,则会受到惩罚。

2.2.6 OpenAI捉迷藏系统的学习策略

如下图所示,经过多轮训练后,智能体学会6种策略,即:①奔跑与追逐;②隐藏方学会移动砖块构建堡垒;③搜索方学会移动斜坡以跳进隐藏方的堡垒;④隐藏方学会将所有的斜坡搬进自己的堡垒;⑤搜索方学会跳到盒子上滑行,进而跳到隐藏方的堡垒;⑥隐藏方学会将所有的盒子锁定在适当位置,以防被搜索方利用。

a)搜索方学会移动斜坡以跳进隐藏方堡垒

在这里插入图片描述

b)搜索方学会移动斜坡以跳进隐藏方堡垒

在这里插入图片描述

c) 隐藏方学会将所有斜坡搬进自己堡垒

在这里插入图片描述

d) 隐藏方学会将所有盒子锁定在适当位置以防被搜索方利用

在这里插入图片描述

2.2.7 OpenAI训练捉迷藏智能体

如下图所示,每个智能体都使用自己观察和隐藏的记忆状态独立行动。智能体使用以实体为中心、基于状态的世界表征,也就是对其它目标和智能体是排列不变的。嵌入的每个目标被传递,通过一个mask残差自注意块,类似于Transformer,其中的注意力集中在目标上。不在视线内以及在智能体前面的目标被mask掉,以使智能体没有它们的信息。

在这里插入图片描述

2.2.8 智能体策略架构

通过自我博弈和临近策略优化(Proximal Policy Optimization (https://openai.com/blog/openai-baselines-ppo/))训练智能体策略。在优化期间,智能体可以在价值函数中使用有关被遮挡目标和其他智能体的特权信息。

3. OpenAI系统的实现

3.1 运行环境

本次实验本机环境为win10,因此需通过虚拟机安装Linux系统。以下环境的搭建以及系统的实现详见 复现美国OpenAI公司开发的机器学习系统-Hide and Seek(捉迷藏)游戏系统

3.1.1 Linux

ubuntu-22.10-desktop-amd64(VMware Workstation 17 Player)

3.1.2 Python

Python3.6

3.1.3 使用工具

Anaconda、pycharm

3.2 主要功能

3.2.1 控制

主要是两方阵营,分别是搜索方和隐藏方。这些智能体通过在虚拟环境中学习移动、寻找以及藏匿来获得控制自身的能力,掌握运动、跳跃、攀爬等技能,来提升自己的个人能力。

3.2.2 决策

对于搜索方而言,智能体需要考虑如何搜索才能找到隐藏方;而对于隐藏方而言,智能体要考虑如何选择藏匿地点才能不被搜索方找到。这些决策能力就需要机器学习的算法来实现,比如通过强化学习的奖励机制,不断通过试错方法优化自身的行为决策,根据自己行为的奖励或惩罚逐渐学会隐藏或者寻找。

3.2.3 合作

每次开始游戏的时候,地图都是随机生成的,这就提升了游戏难度,需要智能体能够逐渐适应不同的环境,同时学会合作!比如隐藏方要通过合作移动箱子构建堡垒,而搜索方通过合作每人负责一块区域进行搜索,提升效率。

3.3 技术特点

3.3.1 自适应

这是Hide and Seek(捉迷藏)系统的核心技术,通过每个智能体身处的不同环境动态调整其策略和行为。其自适应固定计算图技术允许网络在运行过程中根据需要添加或删除计算节点,从而提高网络的灵活性和适应性。

3.3.2 强化学习

通过强化学习的奖励机制,让智能体通过试错方法不断优化自身的行为决策,通过对自己行为的奖励或者惩罚来学习合作、隐藏或者寻找。

3.3.3 虚拟环境

这是一种基于计算机图形学和物理引擎的技术,可以模拟出各种复杂的环境和场景,为智能体提供学习和训练的场所。同时地图都会随机生成,使得智能体不断适应新的情况。

3.3.4 多智能体

游戏里面有多个智能体,这些智能体需要协作和对抗来完成任务。多智能体技术是一种用于处理多个智能体之间交互和协作的技术,可以帮助智能体更好地适应复杂的环境和任务,通过合作和竞争来提升自己的胜率。

3.3.5 分层控制

即将复杂的任务分解成多个子任务,并逐层学习,让智能体更好地组织自己的行为和决策,从而提高网络的效率和准确性。

3.3.6 分布式学习

即将训练任务分配给多个计算机节点来并行计算。分布式学习技术可以大大提高训练效率和速度,加快智能体的学习和进化过程。

4. 实验结果与分析

4.1 系统功能运行结果(宣传片)

安装OpenAI捉迷藏系统,运行系统基本功能,展示如下图所示的系统奔跑和追逐、构建堡垒、使用坡道、斜坡防御、箱式冲浪、冲浪防御的基本功能。

a) 奔跑和追逐

在这里插入图片描述

b) 构建堡垒

在这里插入图片描述

c) 使用坡道

在这里插入图片描述

d) 斜坡防御

在这里插入图片描述

e) 箱式冲浪

在这里插入图片描述

f) 冲浪防御

在这里插入图片描述

4.2 系统功能运行结果(实操)

安装OpenAI捉迷藏系统,运行系统基本功能,展示如下图所示的系统奔跑和追逐、构建堡垒、使用坡道、斜坡防御、箱式冲浪、冲浪防御的基本功能。

a) 奔跑和追逐

在这里插入图片描述

b) 构建堡垒

在这里插入图片描述

c) 使用坡道

在这里插入图片描述

d) 斜坡防御

在这里插入图片描述

e) 箱式冲浪

在这里插入图片描述

f) 冲浪防御

在这里插入图片描述

4.3 学习策略所需episode和时间分析

分析智能体在各种batch大小情况下,例如学会图3c的策略(将斜坡搬进自己的堡垒)所需episode和时间。观察程序运行时如下图所示的以下实验结果。
① 当增加batch大小时,是可以提升收敛速度的!
② 当batch大小为32k或更高时,采样效率会受到一定影响。
③ 指定episode数量下,batch大小分别为8k和16k时,智能体可能可以学会“隐藏方学会将所有斜坡搬进自己堡垒”的策略。

在这里插入图片描述

4.4 多智能体训练策略性能评价

比较状态表示的不同变体之间的智能体移动和对象交互的统计数据,评价、衡量多智能体训练策略的性能,观察程序运行时如下图所示的以下实验结果。
① 单智能体、二维框位置(蓝色);
② 单智能体、盒子位置、旋转和速度(绿色);
③ 1~3个智能体,完整的观察空间(红色);
④ 1~3个具有完整观察空间(紫色)的智能体的RND

在这里插入图片描述

可以看出1~3个智能体,完整的观察空间(红色)和1-3个具有完整观察空间(紫色)的智能体的RND能够提高性能!

4.5 迁移和微调评估

评价三个种子中的捉迷藏、基于计数和从头开始训练策略的任务套件的性能。观察程序运行时如下图所示的以下实验结果。
① Lock and Return、Sequential Lock 和 Construction from Blueprint 中,捉迷藏预训练策略的性能是略好于基于计数和随机初始化的基线的!
② Object Counting的表现比基于计数的基线差,且比Shelter Construction的随机初始化基线学习略慢!

在这里插入图片描述

5. 结论

  1. 这款捉迷藏游戏除了有趣之外,通过这个系统,你还可以学到什么?
    ① 了解强化学习中的常用算法、技术、原理和应用,如价值函数、策略网络等。此外,在游戏中,每个智能体都需要根据环境的变化和其他智能体的行动做出相应的决策。
    ② 了解多智能体协作和对抗的基本原理和方法,比如:贪心策略与随机策略。
    ③ 了解如何对状态进行建模和提取有用特征。智能体需要从游戏场景中的状态表示中提取有用的信息,来做出正确的决策。
    ④ 了解到其分布式学习的优点,使用分布式强化学习来加速学习过程和提高性能。
    ⑤ 多智能体通信。即智能体需要相互通信以便找到或躲避对手。

  2. 在该系统捉迷藏游戏功能的基础上,你还可以用Python开发哪些功能?
    ① 自定义智能体:可以使用Python编写自己的智能体脚本,从而实现不同的控制策略和行为。例如,可以使用一些强化学习算法或深度学习模型来训练智能体。
    ② 自定义游戏环境:使用Python的图形库和游戏引擎,可以创建自己的游戏场景,包括地图、道具、障碍物等。这可以让玩家体验不同的游戏环境,并探索不同的游戏策略,例如在多层建筑或者迷宫中进行捉迷藏。
    ③ 数据分析系统:使用Python中的各种数据分析和可视化库,对游戏中产生的数据进行分析和展示,例如智能体的行为轨迹、奖励历史等。使用Matplotlib、Pandas等库来制作图表,从而更好地理解游戏的性能和效果,改进智能体的决策策略。

  3. 这个研究基础上后续还有哪些研究方向?
    ① 研究如何使用深度学习技术来改进捉迷藏游戏中的智能体性能。深度学习技术在各个领域都取得了很多进展,可以探索如何使用深度学习技术来改进捉迷藏游戏中的智能体性能,例如使用卷积神经网络来识别障碍物和道具等。
    ② 更加复杂的多智能体系统:目前的多智能体系统往往只包含数个智能体,未来可能会设计更加复杂和庞大的多智能体系统,以更好地模拟现实世界中的场景和问题,例如城市交通、医疗服务、金融交易等领域。
    ③ 多智能体系统的安全性和可靠性:多智能体系统的安全性和可靠性是一个重要的研究领域,未来可能会有更多的研究关注如何保证多智能体系统的安全性和可靠性,并开发相应的技术和方法。
    ④ 多模态感知和行为决策:即利用多种感知方式,如视觉、语音、触觉等来进行多智能体系统的行为决策,并探索新的方法和技术来优化其表现和效果。
    ⑤ 跨学科融合的多智能体系统:将多智能体系统与其他领域,如心理学、社会学等进行融合,以开发更加全面和综合的研究方法和技术。
    ⑥ 多智能体系统的知识共享:即实现多智能体系统的知识共享,以提高多智能体系统的灵活性和智能性。

参考文献

[1] 论文
Bowen Baker, Ingmar Kanitscheider, Todor Markov, Emergent tool use from multi-agent autocurricula, 2019, https://arxiv.org/abs/1909.07528

[2] 开源代码
https://github.com/openai/mujoco-py/tree/1.50.1.0
https://github.com/openai/mujoco-worldgen
https://github.com/openai/multi-agent-emergence-environments

[3] 博客
https://openai.com/blog/emergent-tool-use/

  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值