自动驾驶一直是人工智能的热门领域。
6月10日,特斯拉股价创历史新高,成为全球市值最高的汽车公司,这和特斯拉的经营理念和技术蓝图息息相关。从创立之初,特斯拉就关注清洁能源和自动驾驶,这就注定它与传统汽车公司不尽相同。
马斯克更是多次表示「傻瓜采用激光雷达」,特斯拉更钟爱基于摄像头的自动驾驶方案。技术巨头们在开发自动驾驶领域相关技术方面,也是不遗余力。
白色块为AttentionAgent的关注点
今年早些时候的GECCO 2020上,Google发表的一篇论文《Neuroevolution of Self-Interpretable Agents》,介绍了名为「AttentionAgent」的AI Agent技术。
这项技术主要目的是让AttentionAgent进行多种训练,以达到能在二维场景中行驶时不受无关背景的影响,能够找到最优路线。
在射击游戏里进行训练测试,AttentionAgent的表现不错!
在训练过程中,为了寻找合适的训练场景,Google AI和VizDoom进行合作。VizDoom是一个基于第一人称射击游戏《毁灭战士》(Doom)构建的数字研究环境,方便AI进行训练。
实验中,AttentionAgent甚至可以在以前从未遇到过的墙壁,地板纹理和标牌的环境中合理的移动。并且在训练中,AttentionAgent的表现越来越好。
除了在VizDoom中训练,在CarRacing游戏中,AttentionAgent学会了在晴天驾驶,并将其技能转换为夜间,雨天。在另一辆汽车上驾驶时,无论是亮的环境还是暗的环境,或者是背景存在视觉人工制品的情况,AttentionAgent也表现的很出色。
Google AI向社区开源了代码,并在Github发布了一个CarRacingExtension的非官方的项目。这是一套涉及各种参数修改的赛车任务环境,便于对该项目感兴趣的研究人员进行深入的研究。
只知道「视觉暂留」?「疏忽性失明」也很常见!
大众普遍熟悉的「视觉暂留」,是电视电影让人感觉连续播放的根本原因。对「疏忽性失明」,大家是很陌生的。
论坛上曾经有个很著名的测试:
「实验要求学生观看视频并计算一组篮球运动员传球的次数。
由于专注于这项任务,大多数研究参与者完全错过了一个事实:一个穿着大猩猩套装的人走上法庭,跳舞,然后在活动中途离开。」
这是一个典型的疏忽性失明的案例。
疏忽性失明和人类左大脑半球的顶叶息息相关。
顶叶有缺陷的人群往往注意力容易不集中,并且对刺激不敏感。刺激是可感知的时候,人类一般会做出反应,而上述场景下的刺激实际上没有被感知,因此人们没有关注到那只大猩猩。
疏忽性失明是AttentionAgent的理论基础。
未经训练的AI在场景下,对每个网格像素的关注力是相同的,也就是我们所认为的完全公正。而被训练后的AI会像人类一样出现疏忽性失明:它往往专注于自己的任务和目标,不关心其他事物。
具有疏忽性失明特质非常关键。
以自动驾驶为例,当车辆行驶的时候虚拟的驾驶人应该把注意力集中在实现正前方以及道路周围两次,而对车内、天空这些的关注应该是少的。疏忽性失明确实让AI更专注于完成自己的任务。
上图:赛车:未修改(左);颜色扰动(左中);左右两边的垂直条(右中);添加了红色斑点(右)
如图所示,AttentionAgent在不同的场景下进行行驶。尽管背景有所不同,但是它始终专注于自身的任务:在道路上行驶。因此没有出现驶出道路的情况。
强化学习智能体也学会了疏忽性失明
尽管有一些工作探讨了稀疏性之类的约束,如何塑造强化学习智能体的能力,但是收效甚微。
AttentionAgent从疏忽性失明有关的概念中汲取了灵感,当大脑参与需要付出努力的任务时, 它的大部分注意力仅集中在与任务相关的元素上,而暂时对其他信号视而不见。
为了实现这一点,我们将输入图像分割成几个小块,然后依靠修改后的自注意力架构来模拟小块之间的投票,以选择重要的部分。
智能体在每个时间步骤中选择感兴趣的部分,一旦确定,AttentionAgent便仅对这些部分进行决策,而忽略其余的部分。
除了从视觉输入中提取关键因素外,随着时间的变化将这些因素关联起来的能力也至关重要。例如,棒球比赛中的击球手必须使用视觉信号来连续跟踪棒球的位置,以便预测其位置并能够击中它。
在AttentionAgent中,长短期记忆(LSTM)模型从重要的块中接收信息,并在每个时间步生成一个动作。
LSTM跟踪输入序列中的变化,因此可以利用该信息来跟踪关键因素如何随时间演变。
我们通常使用反向传播来优化神经网络,但是AttentionAgent包含用于生成重要部分的不可区分的操作(例如排序和切片),因此把反向传播应用于训练并非易事。因此,我们转向无导数优化算法来克服这一困难。
AttentionAgent中的数据处理流程。上:输入转换—滑动窗口将输入图像分割成较小的块,然后对其进行“展平”。中:小块选举—修改后的自注意力模块对各部分重要性进行投票,以生成重要性向量。下:动作生成-AttentionAgent挑选最重要的补丁,提取相应的功能并根据这些功能做出决策。
我们证明了AttentionAgent学会了注意输入图像中的各种区域。
重要块的可视化可以看到智能体是如何做决策的,并且说明大多数选择是有意义的,且与人类的直觉是一致。
此外,由于智能体学会了忽略对核心任务不重要的信息,所以只需要小范围修改就能推广到其他环境中。
随机噪声影响不大,但AttentionAgent还有很长路要走
尽管 AttentionAgent 能够应对环境的各种变化,但是这种方法仍然存在局限性,要进一步提高 agent 的泛化能力还有很多工作要做,AttentionAgent 目前还get不到戏剧性变化的背景。当背景被 YouTube 视频取代时注意力就会分散,在原始赛车环境中训练的智能体就失效了。
更进一步,当我们用纯粹的均匀噪声代替背景时,我们观察到智能体的注意力模块出现了故障,只关注随机的噪声部分,而不是与道路相关的部分。
如果我们在嘈杂的背景环境中从零开始训练一个智能体,它会设法绕过轨道。
有趣的是,尽管表现一般但智能体似乎已经学会了驾驶,根据屏幕左右两侧的斑块数量来估计车道的位置。
用猫替换背景(左);用游戏视频替换背景(中);用随机噪声替换背景(右)
我们的AttentionAgent提取信息的简单方法对于复杂的任务来说可能是不够的,如何学习更多有意义的特征,或许甚至从视觉输入中提取符号信息将是一个令人兴奋的方向。
也许将来的自动驾驶不再需要那么多复杂的传感器,仅仅依靠一个摄像头就能完成路径规划,当然,自动驾驶还有很长的路要走,但未来可期!
参考链接:
https://ai.googleblog.com/2020/06/using-selective-attention-in.html