强化学习之七:Visualizing an Agent’s Thoughts and Actions
本文是对Arthur Juliani在Medium平台发布的强化学习系列教程的个人中文翻译,该翻译是基于个人分享知识的目的进行的,欢迎交流!(This article is my personal translation for the tutorial written and posted by Arthur Juliani on Medium.com. And my work is completely based on aim of sharing knowledges and welcome communicating!)
原文地址(URL for original article)

在本篇博客里,我想更深入地探讨我们的神经agent在训练过程中所学到的表征。当得到一个高分,或者完成一个特定的任务就是我们对于我们的神经agent的要求的时候,同样我们也应该理解如何,以及更重要的,为什么agent会以某种方式表现。为了使得学习过程更透明,我建立了一个d3.js驱动的网络接口,它可以在学习过程中展示各种各样的有关agent的信息。我称之为强化学习控制中心。在这篇博客里,我会用它来提供一些有关强化学习agent如何以及为什么等相关的信息。
控制中心接口(The Control Center Interface)

强化学习控制中心接口
控制中心是为了让用户可以实时追踪agent在学习如果解决一个任务的过程中的性能变化。在接口的左边,每一轮的长度还有各时间的回报都会被追踪以及动态更新。右边展示了一个简单训练轮的动画gif,还有一轮中每一步的优势以及值函数的计算结果。
这个接口目前只适配我的博客中所描述的神经网络和任务。它是一个双子竞争DQN(Double-Dueling-DQN),环境则是一个简单的网格世界。网格世界的规则如下:agent的目标是尽快地到达绿色方块,过程中要避免红色方块。绿色方块提供+1的回报,红色方块提供-1的回报。每一步都有-0.1的回报。在每一轮开始的时候,三个方格被随机放到网格上。
对agent在一个epoch的训练过程中行动与思想的展示
双子竞争DQN的agent在它探索网格世界时,会同时接受两个分离的信息流:一个优势流(advantage stream)和一个价值流(value stream)。优势流代表了网络所认为的,在给定当前它所在的状态下,采取每个行动分别的有多么好。价值流则代表了在不考虑可能的行动的情况下,任一给定所在状态分别有多么好。有了控制中心,我们可以观察网络如何逐渐学习正确地预测状态和行动的价值。随着训练过程的进行,它会从乍看起来的随机值,逐渐演变为能准确地指出哪个行动是最有优势的。我们可以认为这种可视化提供了一个我们观察agent的“思考过程”的入口。它是否知道它正处在一个好的位置?是否知道在它往下走一格是好的选择?这可以让我们更深刻地理解为什么我们的agent可以表现不错,不管是在什么情况或环境中对它进行训练。
进入agent的大脑
我们不只可以用接口来探索agent如何进行训练,我们也能用它测试和调试我们已经经过完全训练的agent。例如,在训练了我们的agent如何解决上述的3*3的网格世界问题后,我们可以提供它一些特别的测试情景,这些情景是它从来没在训练过程中遇见过的,借此我们可以评估它是否真的具备了我们希望它所具备的经验。
下面是一个agent如何在修改版(只有绿色方块)的任务中表现的实例。如你所见,随着agent逐渐靠近绿色方块,价值估计值如我们所期望地逐渐上升。它也给出了对于采取行动的优势的高估计值,这引导着agent不断靠近绿色目标。
在下一个测试中,我们颠倒了情况,我们会给agent一个只有两个红色方块的世界。它肯定很不喜欢这个世界。如你接下来所见,agent试图远离每个红色额方块,这导致它长时间内不断地前进又后退。注意价值估计值如何随着agent靠近红色方块时减少。
最终,我给agent了一个有关存在意义的挑战。我不在在学习目标上做文章,而是把它们都去掉了。在这种情形下,蓝色方块自身在环境中,没有其它的目标。没有一个前行的目标,agent看起来在随意四处移动,并且价值估计值也似乎无意义。Camus会怎么说呢?
总的来看,这三个实验给我们提供了很多证据,这些证据表明我们的agent是如我们所期望地那样在对环境进行反应。这些检查步骤在设计任何强化学习agent之前都是必要的。如果我们不仔细关注我们将要内置到agent里的期望以及环境回报的结构,我们很有可能最终也不能得到一个可以表现良好的agent,或者至少不如我们所预期的那样进行学习的agent。比如在网格世界中,采取一步行动能导致-0.1的回报。虽然这不是通常的情形。本来是没有所谓的惩罚(penalty)一说的,并且agent也能在平均50步左右到达绿色方块。它没有“理由”去尽快移动到目标位置,所以它也不会这么做。通过对每一步施加一个小的惩罚,agent有可能很快地学习到径直向绿色目标移动的直觉。这提示我们我们人类自身的潜意识中的回报结构也很可能是这样的。尽管我们可能能清楚地认为绿色就是奖励,红色就是惩罚,我们潜意识里会由于想尽快完成任务的欲望而限制自己的行动。当设计强化学习agent时,我们需要确保它们的回报结构和我们的一样丰富(rich)。
使用控制中心
如果你想试用一下工作版的控制中心,而无需自己训练你的agent,点击这个链接即可(要求浏览器是Google Chrome)。你将看到的是一个已经在网格世界中经过40,000轮预训练的agent。你可以点击左边的时间线去查看任一训练过程点中的示例轮。更早的轮清楚地展现了agent如何失败地理解了任务,但训练到最后agent几乎总会能直接到达目标。
控制中心是一个我计划继续开发的软件,因为我也将继续研究各类强化学习算法。现在它是按照Part 4中所描述的具体的网格世界以及DD-DQN硬编码而成的,按时如果你想把它适配到自己的项目中,你可以在github上fork它,并按照你自己的需求调整它。希望它能提供更多对于你的学习算法的了解渠道。
如果这篇博文对你有帮助,你可以考虑捐赠以支持未来更多的相关的教程、文章和实现。对任意的帮助与贡献都表示非常感激!
如果你想跟进我在深度学习、人工智能、感知科学方面的工作,可以在Medium上follow我 @Arthur Juliani,或者推特@awjliani。
用Tensorflow实现简单强化学习的系列教程:
- Part 0 — Q-Learning Agents
- Part 1 — Two-Armed Bandit
- Part 1.5 — Contextual Bandits
- Part 2 — Policy-Based Agents
- Part 3 — Model-Based RL
- Part 4 — Deep Q-Networks and Beyond
- Part 5 — Visualizing an Agent’s Thoughts and Actions
- Part 6 — Partial Observability and Deep Recurrent Q-Networks
- Part 7 — Action-Selection Strategies for Exploration
- Part 8 — Asynchronous Actor-Critic Agents (A3C)
强化学习之七:Visualizing an Agent’s Thoughts and Actions的更多相关文章
- 强化学习论文(Scalable agent alignment via reward modeling: a research direction)
原文地址: https://arxiv.org/pdf/1811.07871.pdf ======================================================== ...
- 强化学习之六:Deep Q-Network and Beyond
本文是对Arthur Juliani在Medium平台发布的强化学习系列教程的个人中文翻译,该翻译是基于个人分享知识的目的进行的,欢迎交流!(This article is my personal t ...
- 强化学习之五:基于模型的强化学习(Model-based RL)
本文是对Arthur Juliani在Medium平台发布的强化学习系列教程的个人中文翻译,该翻译是基于个人分享知识的目的进行的,欢迎交流!(This article is my personal t ...
- 强化学习之四:基于策略的Agents (Policy-based Agents)
本文是对Arthur Juliani在Medium平台发布的强化学习系列教程的个人中文翻译,该翻译是基于个人分享知识的目的进行的,欢迎交流!(This article is my personal t ...
- 强化学习之三点五:上下文赌博机(Contextual Bandits)
本文是对Arthur Juliani在Medium平台发布的强化学习系列教程的个人中文翻译,该翻译是基于个人分享知识的目的进行的,欢迎交流!(This article is my personal t ...
- 强化学习之三:双臂赌博机(Two-armed Bandit)
本文是对Arthur Juliani在Medium平台发布的强化学习系列教程的个人中文翻译,该翻译是基于个人分享知识的目的进行的,欢迎交流!(This article is my personal t ...
- 强化学习之二:Q-Learning原理及表与神经网络的实现(Q-Learning with Tables and Neural Networks)
本文是对Arthur Juliani在Medium平台发布的强化学习系列教程的个人中文翻译.(This article is my personal translation for the tutor ...
- 强化学习三:Dynamic Programming
1,Introduction 1.1 What is Dynamic Programming? Dynamic:某个问题是由序列化状态组成,状态step-by-step的改变,从而可以step-by- ...
- <强化学习>基于采样迭代优化agent
前面介绍了三种采样求均值的算法 ——MC ——TD ——TD(lamda) 下面我们基于这几种方法来 迭代优化agent 传统的强化学习算法 || ν ν 已经知道完整MDP——使用价值函数V(s) ...
随机推荐
- 安卓权威编程指南 挑战练习 25章 深度优化 PhotoGallery 应用
你可能已经注意到了,提交搜索时, RecyclerView 要等好一会才能刷新显示搜索结果.请接受挑战,让搜索过程更流畅一些.用户一提交搜索,就隐藏软键盘,收起 SearchView 视图(回到只显示 ...
- Python第一周基本语句学习整理
目录 Python第一周基本语句学习整理 一.字符串切割 二.体重单位转换 三.计算器的实现 四.猜年龄游戏 Python第一周基本语句学习整理 一.字符串切割 代码实现: s = 'luowenxi ...
- 浏览器内核之 HTML 解释器和 DOM 模型
微信公众号:爱写bugger的阿拉斯加如有问题或建议,请后台留言,我会尽力解决你的问题. 前言 此文章是我最近在看的[WebKit 技术内幕]一书的一些理解和做的笔记.而[WebKit 技术内幕]是基 ...
- 学以致用:手把手教你撸一个工具库并打包发布,顺便解决JS浮点数计算精度问题
本文讲解的是怎么实现一个工具库并打包发布到npm给大家使用.本文实现的工具是一个分数计算器,大家考虑如下情况: \[ \sqrt{(((\frac{1}{3}+3.5)*\frac{2}{9}-\fr ...
- 解决Sprite Atlas打包Asset bundles时重复打包的问题
0x00 前言 在Unity 2018.4.6之前的版本,有一个和SpriteAtlas打AB包有关的常见问题.即当给Sprite Atlas打AB包时,Sprite Atlas Texture可能会 ...
- 06 Linux 的常用命令
Linux 刚面世时并没有图形界面,所有的操作全靠命令完成,如 磁盘操作.文件存取.目录操作.进程管理.文件权限 设定等 在职场中,大量的 服务器维护工作 都是在 远程 通过 SSH 客户端 来完成的 ...
- 由世界坐标系转换到摄像机坐标系的lookAt()函数
在学习图形学和opengl的时候,都涉及到坐标转化,从物体坐标转换为世界的坐标,从世界的坐标转换为摄像机的坐标. 在世界坐标到摄像机转换的过程中常用lookAt函数得到转化矩阵.GLM官方文档对它的解 ...
- Java中的IO与NIO
前文开了高并发学习的头,文末说了将会选择NIO.RPC相关资料做进一步学习,所以本文开始学习NIO知识. IO知识回顾 在学习NIO前,有必要先回顾一下IO的一些知识. IO中的流 Java程序通过流 ...
- Yaml文件,超详细讲解
YAML文件简单介绍 YAML 是一种可读性非常高,与程序语言数据结构非常接近.同时具备丰富的表达能力和可扩展性,并且易于使用的数据标记语言. YAML全称其实是"YAML Ain't a ...
- 3.后台配置、环境变量、日志、异常处理、二次封装Response、路由组件
目录 环境变量 封装logger 封装项目异常处理 二次封装Response模块 路由组件配置 环境变量 dev.py # 环境变量操作:小luffyapiBASE_DIR与apps文件夹都要添加到环 ...