Unity-Agent学习一 --3DBall

这两天大概解读了一下ml-agents中3DBall的代码,算是做个记录吧。

框架跟docs中提供的文件(ML-Agents-Overview.md)一致。

Key Components

ML-Agents toolkit 包含了三个high-level 的组件:

学习环境(Learning Environment )- 包含Unity场景和所有游戏角色

Python API - 包含用于训练(学习行为或策略)的所有机器学习算法。需要注意的是,Python API与学习环境不同,不是Unity的一部分,而是存在于外部并通过外部通信器与Unity通信。

外部通信器(External Communicator )- 将学习环境与Python API连接起来。它存在于学习环境中。

学习环境包含有助于组织Unity场景的三个附加组件:

Agents - 附加到Unity GameObject(场景中的任何角色)并处理生成它的观察值,执行其接收的Actions并在适当时分配reward(正/负)。每个Agent都与一个Brain相连接。

代码对应于Agent.cs中。OnEnable()处理每个Agent注册的事件;SetStatus()是否需要Action还是Decision(RequestAction表示仅执行当前的已有的Action,RequestDecision需要外部通信器去tensorflow中拿最新训练数据然后做Action);ResetIfDono()若训练中Agent“死亡”或者达到最大步数,重置数据,3DBall这里就平板旋转和小球位置重置。SendInfo()若requestDecision是true,则需向Brain请求决策,收集当前观察值,等待Brain的决策。接下来就是AgentStep(),Agent行动,3DBall中是平板的X和Z的旋转值,并分配reward(正/负)。

Brains - 它封装了为Agent做出决策的逻辑。从本质上讲,Brain是每个Agent的策略,并确定Agent应该在每个实例中采取的Action。更具体地说,它是从Agent接收观察和奖励并返回Action的组件。

代码对应于Brain.cs中。根据BrainType的不同序列化不同的CoreBrain接口,有CoreBrainExternal,CoreBrainHeuristic,CoreBrainInternal和CoreBrainPlayer。CoreBrain中核心函数DecideAction(),从Agent接收观察和奖励,通过Academy的Communicator交互通讯,SendBatchedMessageHelper()中m_communicator.Exchange拿到返回数据更新agent(Action操作)。

Academy - 协调观察和决策过程。在学院内,可以指定几个环境范围的参数,例如渲染质量和环境运行的速度。外部通信器存在于Academy内。InitializeEnvironment()和EnvironmentStep()两个核心方法。

并没有很细致的读代码,可能有漏或者错误的地方,欢迎指点交流!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值