专栏首页ArrayZoneYour的专栏TensorFlow强化学习入门(5)—— 可视化Agent的“所思所想”

TensorFlow强化学习入门(5)—— 可视化Agent的“所思所想”

在我的强化学习系列的文章中,我想要深入探究我们基于神经网络的agent在训练过程中习得的表达形式。尽管我们的直接目的是希望我们的agent能够获得更高的分数,或者完成某一具体的任务,但是了解agent如何做到,或者更进一步,agent为什么可以做到对于我们来说是同等甚至更加重要的。为了更加清楚地看到agent的学习过程,我使用了d3.js制作了一个网页来展示agent学习的各种信息。我称之为 强化学习控制中心。在本文中,我会用它来进一步讲解agent的原理。

控制中心界面

控制中心被设计用于监控agent学习执行某一任务的实时性能。界面的左侧有episode的大小和收益的曲线图,会随着训练的进行而动态更新。右侧展示的是选取的episode的动态演示,包括agent每一步计算得到的当前状态的价值和各个决策的分值。

接口数据来源于上一篇文章中的Double-Dueling-DQN神经网络。游戏环境为一个简单的n x n网格。游戏规则为:agent控制蓝色方块进行上下左右移动,在尽可能短的时间内移动至绿色方块的位置且避开红色方块。碰到红色方块-1分,绿色方块+1分,每移动一次-0.1分。每个episode开始时,三个方块的位置会随机生成。

演示动画地址

基于 DD-DQN 神经网络的agent同时处理了两个独立的信息流:反映各个决策优劣的值所在的信息流和反映当前状态优劣的值所在的信息流,前者反映了agent对当前状态下各个决策优劣的判断,后者反映了agent对当前状态优劣的判断。从控制中心我们可以直观地看出agent习得正确预测这两个参数值的技能的过程。随着训练的进行,agent的行为从随机逐渐向最优决策靠拢。而控制中心的可视化为agent的“思维过程”开辟了一个展示的窗口。当它所处的位置很好时,它能否感受到这一点?当它作出向下的行为的时候是否意味着它对向下的动作收益评估很高?分析可视化的结果,我们可以进一步理解agent在不同的环境下性能的差距的来源。

深入探究agent的所思所想

除了展示agent在训练时的表现外,我们也可以用agent来测试训练/调试完毕的agent。拿之前的例子来说,在我们训练的agent解决了3x3网格下的问题后,我们可以拿某些训练中没有出现的特殊场景来检验agent是否真正习得了我们需要的表达。

下面的视频展示了我们将游戏中的方块全部改为绿色方块后agent的行为。可以看到agent距离绿色方块越近对状态的打分越高,同时其决策也使蓝色方块向绿色方块靠拢,这和我们的预期一致。

演示动画地址

下面给出另一个相反的测试样例,游戏中的方块全部为红色方块。可以看出,为了避开红色方块,agent操纵蓝色方块不断上下往复移动,从agent对各个可选行动的打分也可以看出这一点。

演示动画地址

最后,我给了agent一个新的挑战:我移除了所有的方块。这种场景下,除了蓝色方块自己外什么也没有。没有了目标位置,agent的移动完全可以随机,对各个行动的评估值似乎也没有任何意义了。

演示动画地址

综合这三个实验,可以证明训练得到的agent可以按照我们的期望对环境作出相应。在我们设计强化学习的agent时,这种检验时必不可少的。如果我们没有仔细考虑agent上建立的期望和环境的收益获得机制,就很容易发现训练得到的agent在某些场景下不能够正确地完成任务或者达不到我们的预期。在之前的例子中,我们设定每一步的收益为-0.1,这是为什么呢?如果你尝试过没有罚值的情况就会发现,agent大概需要50步才能移动到绿色方块!因为agent没有需要快速解决任务的“缘由”,所以它就没有快速抵达绿色方块。而通过给每一步设置一个很小的罚值,agent就可以迅速掌握快速移动至目标的模式。这和人类潜意识中处理收益的机制是一致的:假想绿色为奖励,红色为惩罚,我们下意识会希望自己可以在尽可能快地拿到奖励。当我们在设计强化学习的agent的时候,要确保它处理收益的机制与我们一样丰富。

使用控制中心

如果你想在不训练自己的模型的情况下体验控制中心的功能,可以访问这个链接体验。你将看到一个训练了40000 episode的agent。通过点击左侧的图表可以切换当前右侧展示的过程对应的episode数,通过切换不同的时间观察可以看到agent在最初的时候不能很好地理解并解决任务,但是在最后agent学会了直接抵达目标位置。

控制中心的代码逻辑当前被硬编码在上一篇文章的例子上,如果你对实现代码感兴趣,可以从Github上查阅

系列文章(翻译进度,下一篇等区块链的活动结束之后再翻):

  1. (0) Q-Learning的查找表实现和神经网络实现
  2. (1) 双臂赌博机
  3. (1.5) — 上下文赌博机
  4. (2) —— 基于策略的Agents
  5. (3) —— 构建仿真环境来进行强化学习
  6. (4)—— 深度Q网络及扩展
  7. (5)—— 可视化Agent的“所思所想”
  8. Part 6 — Partial Observability and Deep Recurrent Q-Networks
  9. Part 7 — Action-Selection Strategies for Exploration
  10. Part 8 — Asynchronous Actor-Critic Agents (A3C)

原文链接:https://medium.com/emergent-future/simple-reinforcement-learning-with-tensorflow-part-6-partial-observability-and-deep-recurrent-q-68463e9aeefc

原文作者:Arthur Juliani

我来说两句

0 条评论
登录 后参与评论

相关文章

  • TensorFlow强化学习入门(1)——双臂赌博机

    强化学习不仅仅赋予了我们教会人工agent如何行动的能力,还使得agent可以通过我们提供的交互式环境进行学习。通过结合深度神经网络习得的复杂表示和RL age...

    ArrayZoneYour
  • 如何用Python将时间序列转换为监督学习问题

    像深度学习这样的机器学习方法可以用于时间序列预测。

    ArrayZoneYour
  • 如何偷懒地用 PHP 搭建一个班级网站

    一名网站开发的萌新,在大一上半学期,就想做一个我们班级专属的网站,方便同学们(方便我这个学委偷懒)。下面放出我的网站信息架构、技术组合和从一个小白成长到现在一个...

    ArrayZoneYour
  • VAIN:Attentional Multi-agent Predictive Modeling

    Hoshen Y. VAIN: Attentional Multi-agent Predictive Modeling[J]. arXiv preprint a...

    企鹅号小编
  • Jenkins2 学习系列21 -- pipeline 中 agent 使用介绍

    当agnet数量变多时,如何区分这些agnet有哪些特点呢?比如哪些环境是node10,哪些是JDK8,为了区分,我们可以给不同的agent打标签(也叫tag)...

    mafeifan
  • 新任务引介 | Embodied Question Answering

    本次分享的论文提出了一个新的任务 Embodied Question Answering (EQA)。在这个任务里面,一个agent在三维虚拟空间中进行随机出现...

    马上科普尚尚
  • 玩转Flume+Kafka原来也就那点事儿

    好久没有写分享了,继前一个系列进行了Kafka源码分享之后,接下来进行Flume源码分析系列,望大家继续关注,今天先进行开篇文章Flume+kafka的环境配置...

    小程故事多
  • Skywalking系列博客4-Java Agent配置

    agent配置有多种姿势,上面修改 agent.config 文件中的值,只是其中一种。下面专门探讨agent支持的配置方式。

    用户1516716
  • cannot connect to [[127.0.0.1]:10050]: [111] Connection refused

    监控zabbix服务端这台服务器,然后显示Get value from agent failed: cannot connect to [[127.0.0.1]...

    拓荒者
  • 用自然语言指导强化学习agent打游戏,这是斯坦福的最新研究

    问耕 编译整理 量子位 报道 | 公众号 QbitAI ? 斯坦福大学计算机科学系的三位学者,在近日发表的论文中,介绍了一个打Atari游戏的深度强化学习age...

    量子位

扫码关注云+社区

领取腾讯云代金券