您现在的位置是:首页 >人工智能 > 2021-04-23 16:49:22 来源:

模拟是智能机器人的关键

导读 我读了Danny Vena 撰写的题为 游戏掌握人工智能系统教学的关键的文章,其中作者指出,像Minecraft,Civilization和Grand Theft Auto这

我读了Danny Vena 撰写的题为“ 游戏掌握人工智能系统教学的关键”的文章,其中作者指出,像Minecraft,Civilization和Grand Theft Auto这样的计算机游戏已用于培训智能系统,以便在视觉学习中表现更好,理解语言,与人类合作。作者得出结论,在不久的将来,游戏将成为人工智能领域的关键因素。他几乎是对的。

在我看来,这篇文章只是通过谈论游戏来触及人工智能的表面。游戏一直是产生优于人类的智能系统的良好起点,但是深入了解在人类环境中有用的机器人领域将需要比游戏更复杂的东西。而我在谈论模拟。

使用游戏来引导智能

自人类智能诞生以来,人们在游戏中击败人类的想法一直存在。最初,研究人员在Tic Tac Toe和Chess创建了击败人类的程序(例如,IBM的 DeepBlue)。然而,这些游戏的智能是由人类头脑从头开始编程的。有人在编写代码,决定哪一步应该是下一步。然而,生成智能的手动方法达到了极限:智能非常复杂,我们意识到手动编写模拟它的程序可能太困难了。

然后,一个新的想法诞生了:如果我们创建一个自学的系统怎么办?在这种情况下,工程师只需要对学习结构进行编程并设置适当的环境以允许智能自行引导。

这个想法的结果是学习比世界上任何人都更好地玩游戏的程序,即使没有人首先解释程序如何玩。例如,Google的DeepMind公司创建的 AlphaGo Zero计划 使用了这种方法。该计划能够击败世界上最优秀的Go球员。该公司使用相同的方法来创建学习玩Atari游戏的程序,从零知识开始。最近,OpenAI将这种方法用于他们的机器人程序,该程序击败了Dota 2游戏的专业玩家。顺便说一句,如果你想重现Atari游戏的结果,OpenAI发布了OpenAI Gym,包含开始使用Atari游戏训练系统的所有代码,并将性能与其他人进行比较。

我从这些结果中得出的结论是,制作智能系统本身产生智能的想法是一种很好的方法,用于教学的算法可以用来让机器人了解他们的空间(我不是很乐观的编码知识和设置学习环境和阶段的方法,但这是另一个讨论)。

从游戏到模拟

OpenAI想要走得更远。他们不是使用游戏来生成可以玩游戏的程序,而是应用相同的想法让机器人做一些有用的事情:学会操纵手上的立方体。在这种情况下,他们使用机器人的模拟而不是使用游戏。模拟用于模拟机器人及其环境,就好像它是真实的一样。然后,他们允许算法控制模拟机器人,并使机器人通过域随机化了解要解决的任务。经过多次试验,模拟机器人能够以预期的方式操纵该块。但那还不是全部!在文章的最后,作者成功地将模拟机器人的学习控制程序转移到真实机器人,该机器人以类似于模拟机器人的方式执行。除了它是真实的。

训练机器人

然而,在他们的实验中,OpenAI的工程师发现机器人训练比训练游戏算法要复杂得多。同时,在游戏中,智能系统的动作和感知列表非常有限; 机器人在领域,行动和感知方面都面临着巨大而持续的影响。我们可以说选项是无限的。

选项数量的增加减少了用于RL的算法的有用性。通常,处理问题的方法是使用一些人工技巧,例如完全丢弃一些信息或人为地离散数据值,将选项减少到只有少数。

OpenAI工程师发现,即使机器人接受过模拟训练,他们的方法也无法扩展到更复杂的任务。

大量数据与复杂学习算法

正如Andrew Ng指出的那样,正如OpenAI的工程师根据他的结果亲自向我指示的那样,使用简单学习算法的大量数据胜过复杂的算法和少量数据。这意味着尝试专注于获得更复杂的学习算法并不是一个好主意。相反,达到智能机器人的最佳方法是使用经过大量数据训练的简单学习算法(如果我们观察自己的大脑,这是有意义的:多年来训练的大量神经网络)。

谷歌一直都知道这一点。因此,为了获得大量数据来训练他们的机器人,谷歌创造了一个真实的机器人系统,在一个大空间里整天训练。即使这是一个聪明的想法,我们都可以看到,这对于任何类型的机器人和应用程序来说都是不切实际的(破坏机器人,仅限于实时执行,有限数量的机器人,有限的环境,等等…)。

这导致我们再次采用相同的解决方案:使用模拟。通过使用模拟,我们可以在任何情况下放置任何机器人并在那里训练它们。此外,我们几乎可以无数次并行训练,并在创纪录的时间内生成大量数据。

即使这种方法现在看起来非常清楚,但是在三年前我们创建了我们的公司 The Construct,围绕云中的机器人模拟。我记得在2015年Innorobo展览会上展出,经过所有其他参展商的广泛采访后发现,其中只有两个人正在使用模拟工作。此外,机器人专家认为模拟是不惜一切代价可以避免的事情,因为没有什么能比得上真正的机器人(请查看我当时写的关于它的帖子)。

值得庆幸的是,从那时起情况发生了变化。现在,使用模拟训练真正的机器人开始成为一种方式。

转移到真正的机器人

我们都知道,通过模拟获得解决方案是一回事,而另一个解决方案是在真实机器人上工作。在模拟中由机器人完成某些事情并不意味着它将在真实机器人上以相同的方式工作。这是为什么?

嗯,有一种叫做现实的差距。我们可以将现实差距定义为情境模拟与现实生活情况之间的差异。由于我们不可能完美地模拟某些东西,因此模拟与现实之间总会存在差异。如果差异足够大,则可能发生在模拟器中获得的结果完全不相关。也就是说,你有一个很大的现实差距,模拟中适用的东西并不适用于现实世界。

现实差距的问题是用于丢弃机器人模拟器的主要论据之一。在我看来,要遵循的道路不是放弃模拟器并找到其他东西,而是寻找跨越现实差距的解决方案。至于解决方案,我相信我们有两个选择:

1. 创建更准确的模拟器。那是在路上。我们可以看到这方面的努力。一些模拟器专注于更好的物理学(Mujoco); 其他人仔细看看现实(虚幻或基于Unity的模拟器,如Carla或AirSim)。我们可以预期,随着计算机功率不断增加,云系统变得更容易接近,模拟的准确性将在感官,物理和外观方面不断增加。

2. 建立更好的方法来跨越现实差距。在最初的工作中,噪声和现实差距,雅可比(确定现实差距问题的人)指出,首先解决方案之一是使模拟独立于现实差距。他的想法是在那些与任务无关的变量中引入噪声。该噪声引入的现代版本是域随机化的概念,如“ 从模拟向现实世界转移深度神经网络的域随机化 ”一文中所述 。

域随机化基本上包括在模拟环境中执行机器人的训练,其中不相关的任务特征随机改变,如元素的颜色,光照条件,与其他元素的相对位置等。 。

目标是使训练的算法不受场景中那些不向手头的任务提供信息的元素的影响,但可能使其混淆(因为算法不知道哪些部分是任务的相关部分)。我可以看到域随机化是一种告诉算法在哪里集中注意力的方式,就其接收的大量数据流而言。

结论

让所有这些深度神经网络在训练模拟中学习是可行的方法,正如我们将来可能看到的那样,这只是冰山一角。我个人的观点是,智能比现有的AI方法更能体现:没有身体,你就无法拥有智慧。因此,我相信模拟实施例的使用将来会更高。走着瞧。