cover_image

映宇宙AI游戏机器人系统

映客技术 2023年09月05日 06:48
一、背景和意义
      • 业务背景
      • 技术背景
      • 业务意义
      • 技术意义
二、映宇宙AI机器人系统
      • 总体结构
      • 架构图
      • 流程图
      • 详细说明
三、映宇宙AI机器人系统应用
      • gym游戏应用
      • 五子棋游戏应用
四、总结
      • 方案总结
      • 未来展望


    一、背景和意义

     1、业务背景

    映宇宙AI游戏机器人系统是提供用户游戏机器人陪玩的系统,人数较少时游戏无法正常开始的问题。AI游戏机器人的技术特点是基于强化学习技术框架,对机器人进行反馈学习,可以做到无需游戏真实上线情况下,产生机器人,不受用游戏上线或者线上用户数据影响。映宇宙AI游戏机器人系统通过对训练游戏机器人过程,对游戏、学习策略以及强化学习模型进行解耦通用化,这样接入不同模型更加便利、快速,达到模型和策略和复用的能力。与此同时,框架支持多进程、多线程加速,框架支持多worker游戏机器人与环境交互产生数据,分布式训练模型,以及快速评估各机器人效果等功能。

    映客有丰富的社交游戏场景以及趣味游戏产品,通过通用化的方式,业务只需要实现相应的接口,就能提供强化学习框架,利用框架强大的高并发能力,模拟产生强化学习策略数据,与此同时,支持模型多gpu、多cpu并行训练强化学习策略模型,快速提高模型产出速度;同时可以在训练时及训练完成后,评估各个策略的强度,从而可准确评估模型的效果。

    2、技术背景

    图片强化学习主要由智能体(Agent)、环境(Environment)、状态(State)、动作(Action)、奖励(Reward)组成。智能体执行了某个动作后,环境将会转换到一个新的状态,对于该新的状态环境会给出奖励信号(正奖励或者负奖励)。随后,智能体根据新的状态和环境反馈的奖励,按照一定的策略执行新的动作。上述过程为智能体和环境通过状态、动作、奖励进行交互的方式。
    智能体通过强化学习,可以知道自己在什么状态下,应该采取什么样的动作使得自身获得最大奖励。由于智能体与环境的交互方式与人类与环境的交互方式类似,可以认为强化学习是一套通用的学习框架,可用来解决通用人工智能的问题。因此强化学习也被称为通用人工智能的机器学习方法。

    组成元素由智能体、环境、状态、动作、奖励、策略、目标组成:

    • 智能体:强化学习的本体,作为学习者或者决策者。

    • 环境:强化学习智能体以外的一切,主要由状态集合组成。

    • 状态:一个表示环境的数据,状态集则是环境中所有可能的状态。

    • 动作:智能体可以做出的动作,动作集则是智能体可以做出的所有动作。

    • 奖励:智能体在执行一个动作后,获得的正/负反馈信号,奖励集则是智能体可以获得的所有反馈信息。

    • 策略:强化学习是从环境状态到动作的映射学习,称该映射关系为策略。通俗的理解,即智能体如何选择动作的思考过程称为策略。

    • 目标:智能体自动寻找在连续时间序列里的最优策略,而最优策略通常指最大化长期累积奖励。

    因此,强化学习实际上是智能体在与环境进行交互的过程中,学会最佳决策序列。

    3、业务意义

    • 框架解耦,不依赖业务,接口通用简单,有利于维护和迭代。

    • 降低不同游戏接入难度,加快业务接入速度。

    • 框架进行并发和分布式优化,加快样本产生、模型训练及收敛速度。

    • 各组件模块及算法策略复用,降低研发开发成本,同时支持个性化定制。

    • 各模型策略之间可对比评估,有效验证策略有效性及方便后续业务使用。

    • 提升业务侧收益及智能化程度。

    4、技术意义

    强人工智能是人工智能研究的最终目标。相对地,弱人工智能只处理特定的问题,不需要具有人类完整的认知能力,甚至是完全不具有人类所拥有的感官认知能力,只要设计得看起来像有智慧就可以了。由于过去的智能程式多是弱人工智能,发现这个领域具有的局限性,人们一度觉得强人工智能是不可能的。而强人工智能也指通用人工智能,或具备执行一般智能行为的能力。强人工智能通常把人工智慧和意识、感性、知识和自觉等人类的特征互相连接。

    弱人工智能只能实现特定的任务,像是一个辅佐人类的工具,一台机器。采用有监督学习与无监督学习的高级算法,或许可以得到一台高级的机器,但是它本质上还是一台机器。而强人工智能则追求真正建立一个和人类一样能够自己感受、思考、行动的智能体,真正用机器造出一个具有智能的人。目前,强化学习虽然远远没有实现强人工智能,但它的思维方式和有监督学习及无监督学习相比完全不同,无疑更加接近强人工智能。

    强化学习则是实现强人工智能的贴近的路径之一,相比于监督学习、无监督学习、半监督学习,其通用化、智能化更强,不过实现难度更大,有了映宇宙AI游戏机器人系统之后,可以快速并高效、方便的探索强化学习方法,并且在业务探索过程中,进一步促进业务的同时,从而为强人工智能做技术上的积累及贡献。

    二、映宇宙AI游戏机器人系统

    1、总体结构

    映宇宙AI游戏机器人系统由9大部分组成,包括游戏机器人系统运行,注册信息(游戏、机器人、学习器、模型),游戏运行环境,通用化游戏接口,游戏行为数据采集器,游戏决策机器人,游戏机器人评估器、游戏机器人学习器、深度模型接口。各模块结构介绍如下:


    图片

    • 游戏机器人系统运行模块:由配置和运行初始化、环境配置加载及初始化,获取环境配置,初始化运行环境,运行训练或者评估共5个基本部分组成,负责运行配置初始化,各模块加载运行环境、游戏机器人玩游戏、机器人训练和评估全流程启动。

    • 注册信息(游戏、机器人、学习器、模型)模块:由配置和注册信息初始化、加载模块注册配置、初始注册配置游戏、机器人、学习器、模型信息、初始化注册配置环境关系信息、获取注册游戏、机器人、学习器、模型、获取注册游戏、机器人、学习器、、模型关系6个子模块组成,负责不同游戏、机器人、学习器、模型的动态加载注册工作,方便后续模块调用。

    • 游戏运行环境:由配置和环境初始化,游戏运行环境设置(游戏和游戏决策机器人),游戏机器人玩游戏运行,游戏机器人学习器运行,游戏机器人学习器运行,游戏机器人评估器运行,开始训练和评估机器人,开始评估机器人7个子模块组成,负责游戏环境初始化及设置,游戏机器人玩游戏、游戏学习器、游戏机器人评估器相关运行逻辑。

    • 通用化游戏接口模块:由游戏初始化接口,重新开始接口,游戏下一步接口,游戏关闭接口4个通用化抽象接口组成,具体游戏接入系统服务时,需要实现这些接口远程服务或者本地sdk,同时将实现游戏写入注册表中用以注册信息模块动态加载游戏。

    • 游戏行为数据采集器模块:由配置和数据队列初始化,训练验证数据放入队列,取出训练数据,取出评估数据4个基本子模块组成,负责游戏运行环境:游戏机器人玩游戏、游戏学习器、游戏机器人评估器三个子模块的数据交互,用于产生的游戏行为数据存放及学习器和评估器获取训练和评估数据。

    • 游戏决策机器人模块:由配置和决策机器人参数初始化,学习器设置,决策机器人行为决策,决策机器人行为探索接口,决策机器人行为策略接口3个基本部分及2个通用化接口组成,负责机器人根据游戏环境按概率进行探索和运行最佳策略,具体游戏决策机器人需要实现2个通用化接口,以便探索、迭代、实现不同的机器人。

    • 游戏机器人评估器模块:由配置和评估数据初始化,评估对局游戏,评估数据更新,评估数据打印4个基本部分组成,用于不同游戏决策机器人的效果评估。

    • 游戏机器人学习器模块:由配置和学习器初始化,模型设置,模型构建及优化器设置,训练数据处理接口,预测数据处理接口,学习器训练,学习器预测,模型训练,模型预测,模型保存,模型保存参数,模型加载,模型加载参数,训练打印结果12个基本部分及2个通用接口组成,负责学习器设置具体模型设置、游戏数据处理(训练数据和预测数据)、模型训练、模型保存和加载训练和预测全过程,具体不同的学习器需要根据游戏行为数据和具体模型实现不同的训练数据和预测数据处理接口。

    • 深度模型接口模块:由配置和模型初始化,模型初始化接口,模型前向接口,模型损失函数接口1个基本部分及3个通用化接口组成,具体模型实现需要根据游戏数据输入实现不同种类的深度模型网络结构及相关的损失函数,用于模型的训练和预测。

    2、系统架构图


    图片

    在运行模块加载注册配置信息及运行配置信息后,首先通过注册模块将相应具体实现了通用化游戏接口、机器人接口、学习器接口、模型接口的不同游戏、机器人、学习器、模型动态加载注册进入本系统,然后根据运行配置信息,运行整个系统。

    运行过程中,通过运行游戏环境模块,并发让不同游戏决策机器人进行多局游戏对局,产生游戏数据及决策机器人行为数据,然后使用数据模块存储并分配给特定的学习器进行学习,及分配给评估器进行评估。学习器根据相关的数据,将与之绑定的深度模型进行更新,从而优化机器人策略;于此同时评估器对更新后的模型,进行实时的效果评估。

    注:运行模块:游戏机器人系统运行模块;注册模块:注册信息(游戏、机器人、学习器、模型);游戏环境模块:游戏运行环境模块;数据模块:游戏行为数据采集器模块;评估器:游戏机器人评估器;学习器:游戏机器人学习器。

3、系统流程图

框架流程图如下:

图片

3、系统详细设计

    • 游戏机器人运行模块


图片

  • 配置和运行初始化:对游戏运行环境相关配置进行初始化,加载运行配置,加载注册配置等信息。

  •  环境配置加载及初始化:将注册配置信息中,具体实现了通用接口的游戏、机器人、学习器、模型进行动态加载。 

  •  获取环境配置: 通过类别和名称获取指定的游戏、机器人、学习器或者模型的信息和实例。

  •  初始化环境运行:根据运行环境配置的游戏、机器人、学习器、模型获取其相关资源,并设置相关的游戏运行环境。

  • 运行训练或者评估:根据运行环境配置,进行游戏运行、机器人训练和评估或者游戏运行、机器人评估。

  • 注册信息(游戏、机器人、学习器、模型)模块:

图片

  • 配置和注册信息初始化:对配置及相关注册信息进行进行初始化,以便后续模块使用。

  • 加载模块注册配置:将指定的路径的注册配置文件进行加载。

  • 初始注册配置游戏、机器人、学习器、模型信息:根据加载的注册配置信息,对不同的游戏、机器人、学习器、模型进行动态加载进入系统。

  • 初始化注册配置环境关系信息:对动态加载的游戏、机器人、学习器、模型,进行关系配对,防止运行过程中,游戏、机器人、学习器、模型之间不匹配而报错。

  • 获取注册游戏、机器人、学习器、模型:根据类型和类名,获取指定的游戏机、机器人、学习器或者模型。

  • 获取注册游戏、机器人、学习器、模型关系:根据游戏、机器人、学习器、模型查询相关关系,如果不存在关系,则需要重新检查配置或者实现相应的游戏、机器人、学习器及模型,重新配置。

  • 游戏运行环境模块:

图片

        3.1  配置和环境初始化:对游戏环境的数据模块、评估模块、游戏轮数等信息进行初始化。

        3.2  游戏运行环境设置(游戏和游戏决策机器人):对游戏环境的游戏及具体的游戏决策机器人进行设置。

        3.3  游戏机器人玩游戏运行:首先进行游戏初始化,接着开始游戏获取游戏数据,根据游戏数据游戏决策机器人做出行为反馈,推动游戏下一步进行,并获取游戏数据,之后游戏决策机器人根据新的游戏                          数据做出新的反馈,直到游戏结束;游戏结束后,将相应的数据存入数据模块。

        3.4  游戏机器人学习器运行:从数据队列获取训练数据,对不同游戏决策机器人的学习器分别进行学习训练,进行更新迭代。

        3.5   游戏机器人评估器运行:从数据队列获取评估数据,对不同游戏决策机器人取的胜负及相关奖励进行评估,分辨不同机器人的优劣。

        3.6  开始训练和评估机器人:根据配置设置的游戏进程数、训练进程数、评估进程数,对游戏过程、训练过程及评估过程进行并发运行,以提高机器人数据产生、学习和评估速度。

        3.7  开始评估机器人:根据配置设置的游戏进程数、评估进程数,对游戏过程、评估过程进行并发运行,以提高机器人数据产生、机器人评估速度。


  • 通用化游戏接口模块

图片

  • 游戏初始化接口:通过接口获取游戏基本信息及所有游戏玩家的id。

  • 游戏重新开始接口:通过接口获取游戏各玩家初始奖励信息,游戏是否结束,当前游戏行动玩家id,游戏各玩家初始状态信息,当前游戏行动玩家可进行的合法动作。

  • 游戏下一步接口:通过接口传入当前玩家行动游戏动作,获得当前游戏行动玩家动作后各游戏玩家奖励信息,游戏是否结束,下一个游戏行动玩家id,当前游戏行动玩家动作后游戏各玩家初始状态信息,下一个游戏行动玩家可进行的合法动作。

  • 游戏结束接口:通过接口关闭当前游戏。


  • 游戏行为数据采集器模块

图片

  • 配置和数据队列初始化:根据配置对数据采集器进行初始化。

  • 训练验证数据放入队列:将游戏过程中产生的游戏数据和决策行为数据放入数据采集器的训练和评估队列。

  • 取出训练数据:将数据采集器队列中的训练数据取出。

  • 取出评估数据:将数据采集器队列中的评估数据取出。

  • 游戏决策机器人模块:

图片

  • 配置和决策机器人参数初始化:根据配置对决策机器人进行初始化,设置相关决策机器人的参数。

  • 学习器设置:设置机器人的学习器。

  • 决策机器人行为决策:根据设置的探索概率,对机器人的决策按探索概率进行一定策略探索,其他情况按最有策略决策。

  • 决策机器人行为探索接口:根据游戏返回的游戏状态、合法行为及机器人ID,进行相关游戏决策的探索,以便能有效探索机器人策略无法触及的行为,从而达到策略全局有效的收敛。

  • 决策机器人行为策略接口:根据游戏返回的游戏状态、合法行为及机器人ID,进行游戏最优决策,以便游戏机器人获取目前策略的最优收益。


  • 游戏机器人评估器模块:

图片

  • 配置和评估数据初始化:根据配置对游戏机器人评估器进行初始化,设置相关游戏机器人评估器的参数。

  • 评估对局游戏:根据每个游戏决策机器人的决策行为产生的收益数据,按局进行统计,生成胜负及收益等评估数据。

  •  评估数据更新:对并发更新的对局游戏评估数据进行更新,汇总当前游戏机器人全局的游戏评估信息。

  • 评估数据打印:对全局的游戏评估数据进行打印,方便查看每个机器人的策略优劣。

  • 游戏机器人学习器模块:

图片

  • 配置和学习器初始化:根据配置对游戏机器人学习器进行初始化,设置相关游戏机器人学习器的参数。 

  • 模型设置:设置相应配置的模型。

  • 模型构建及优化器设置:模型构建及相关优化器设置,模型网络图初始化、设备等相关工作。

  • 训练数据处理接口:对游戏采集获取的游戏及机器人决策的行为数据进行处理,生成模型训练所需的数据形式,具体的模型处理方式不一样,需要根据模型和数据进行指定实现。

  • 预测数据处理接口:对游戏采集获取的游戏及机器人决策的行为数据进行处理,生成模型预测所需的数据形式,具体的模型处理方式不一样,需要根据模型和数据进行指定实现。

  • 学习器训练:将训练数据处理后的数据,交给模型训练子模块,进行模型训练。

  • 学习器预测:将预测数据处理后的数据,交给模型训练子模块,进行模型预测。

  • 模型训练:模型进行训练。

  • 模型预测:模型进行预测。

  • 模型保存:模型保存网络图及相关参数。

  • 模型保存参数:模型保存网络参数。

  • 模型加载:加载模型保存的网络结构及网络参数。

  • 模型加载参数:加载模型保存的网络参数。

  • 训练打印结果:打印训练过程中的结果,方便查看模型是否收敛。

  • 深度模型接口模块:

    图片

    • 配置和模型初始化:根据配置加载模型,进行配置参数初始化。

    • 模型初始化接口:根据需要实现的网络结构图,对相关的网络结构图的组件进行初始化。

    • 模型前向接口:对模型前向网络结构进行定义,构建深度模型网络。

    • 模型损失函数接口:定义模型损失接口,遍于模型训练。

三、映宇宙AI机器人系统应用

1、gym游戏应用

lunarLander-v2是gym强化学习一个经典的仿真环境,其目标为使得飞行器可以稳定的着陆, 着陆平台目标位于坐标(0,0),坐标是状态向量的前两个数字。从屏幕顶部移动到着陆台和零速度的奖励大约是100到140分。

如果着陆器离开着陆台,它将失去回报。如果着陆器坠毁或停止,则回合结束,获得额外的-100或+100点。每脚接地为+10。点火主机每帧-0.3分。正解为200分。可以在着陆平台外着陆。燃料是无限的,所以智能体需要学会飞行,然后尝试时降落。四个独立的行动可用:什么都不做,发动左方向引擎,发动主机,发动右方向引擎。

LunarLander-v2 有8个状态,分别为:水平坐标x,垂直坐标y,水平速度,垂直速度,角度,角速度,腿1触地,腿2触地。

下面将采用映宇宙AI机器人系统对其进行训练,上边的图是训练之前的情节,下面的图是训练完成的情节,采用Deep-QLearning完成训练。

图片

图片

数据及网络训练示意图如下:

图片

算法流程如下:

图片

2、五子棋游戏的应用

五子棋是一种两人对弈的纯策略型棋类游戏,通常双方分别使用黑白两色的棋子,轮流下在棋盘直线与横线的交叉点上,先在横线、直线或斜对角线上形成5子连线者获胜。

算法在五子棋游戏上应用如下:

图片

算法流程如下:

图片


四、总结

1、方案总结

目前映宇宙AI游戏机器人系统,可以适配多种游戏,并行训练,加快游戏机器人迭代速度以及模型生产速度 。同时也在逐步集成相应的模型,在多cpu、多gpu利用上还有一定的优化空间。

与此同时,映宇宙AI游戏机器人系统9大组成部分,包括游戏机器人系统运行,注册信息(游戏、机器人、学习器、模型),游戏运行环境,通用化游戏接口,游戏行为数据采集器,游戏决策机器人,游戏机器人评估器、游戏机器人学习器、深度模型接口。各模块结构组件,还有一定的复杂性,部分功能未完全接偶,在针对多机器人,多策略,多模型场景,还有优化空间。

2、未来展望

深度强化学习和一般深度学习的不同之处在于深度强化学习的训练没有现成的数据,需要智能体和环境Env交互来产生数据。这使得CPU的需求比一般的深度学习训练大得多,因为环境Env(比如一个游戏)往往是放在CPU来产生数据。一般,一个GPU的训练需要有50个甚至100个CPU core来产生数据。比如OpenAI Five,就用了几百个GPU和几万核的CPU。相比于一般的分布式系统,深度强化学习系统比较专用,核心是Worker(CPU,用来采集数据),Learner (GPU,用来训练智能体)。需要解决的关键问题是采样和学习效率,cpu、gpu利用效率,框架性能,便利性等等问题。

目前映宇宙AI游戏机器人系统属于单机多cpu多卡,多进程多线程多actor的强化学习框架,支持pytorch,后续可以朝多机,分布式方向发展加快数据产生及训练速度,并保证算法收敛速度。

于此同时,未来框架致力于集成更丰富,方便可用的强化学习模型,并进行配置化。同时在多actor,多模型的复杂多人强化学习场景,继续优化组件,使得组件更加通用,高效。


继续滑动看下一个
映客技术
向上滑动看下一个