随着人工智能的最新突破和每天更多的研究发展,人们非常相信,智能和自给自足的机器就在到来的地平线上。如今的机器可以理解口头命令,区分图片,驾驶汽车和玩游戏,有时甚至比普通人做得更好。人们只能想,再过多久,也许它就会走到我们中间?
但是,在开发人工智能机器的过程中,强化学习 和其训练的学习环境起到了重要作用。用于训练机器学习的开发环境与用于解决预测性建模问题的机器学习方法同样重要。环境构成了强化学习问题中的基本和根本要素。因此,了解RL代理要与之互动的基本环境是很重要的。这有助于为所提供的代理提出正确的设计和学习技术。
环境是代理所处的世界,代理通过执行一些行动与环境互动,但它没有权利通过执行这些行动影响环境的规则或动态。所以,举例来说,就像人类是地球环境中的一个代理人,被限制在法律的范围内。我们可以用我们的行动与环境互动,但不能改变法律。环境也会给代理人一个奖励;一个返回的标量值,作为代理人的反馈,告知他其行动是好是坏。在强化学习中,多种范式都能达到获胜的策略,即让代理人以多种方式执行所需的行动。在复杂的情况下,计算准确的获胜策略或奖励价值函数变得很困难,特别是当代理人开始从互动中学习,而不是从先前获得的经验中学习。
目前有几种类型的学习环境。强化学习环境的不同类型如下。
-
确定性的环境。一个环境,环境的下一个状态总是可以根据当前状态和代理人的行动来确定。
-
随机强化学习环境:一种环境,我们不能总是通过执行某种行动来确定环境的下一个状态是什么。
-
单代理环境:只有一个代理存在并与环境互动。
-
多代理环境。其中有一个以上的代理存在,并与环境进行互动。
-
离散环境。环境的行动空间是离散性的。
-
连续环境。环境的行动空间在本质上是连续的。
-
偶发环境:在这里,代理人的行动只局限于特定的情节,而不是以前的任何行动。
-
顺序性环境。在这里,代理人的行动与它以前的行动有关。
什么是开放人工智能体育馆?
该健身房是一个用于开发和比较强化学习算法的开源工具包。它更容易工作的地方在于,它只用几行代码就能更容易地构造你的环境,并与任何数值计算库兼容,如TensorFlow或Theano。gym库是一个测试问题和环境的集合,人们可以用它来训练和开发更强大的强化学习模型。目前的环境有一个共享的接口,也允许编写一般的算法。此外,它还提供了各种各样的模拟环境,如雅达利游戏、棋盘游戏、二维和三维物理模拟等等,因此你可以训练多个代理,对它们进行比较,或者为强化学习问题开发新的机器学习算法 。OpenAI是一家人工智能研究公司,由埃隆-马斯克部分出资。它的目标是促进和发展友好的人工智能系统,使人类受益,并致力于改善人类的生活,而不是消灭人类!
关于熊猫健身房
Panda-Gym,是一个开源库,为Franka Emika熊猫机器人提供了一套与OpenAI Gym集成的强化学习(RL)环境。机器人模拟环境包括五个任务:伸手、推、滑动、取放和堆叠。它遵循一个多目标RL框架,允许使用面向目标的RL算法。为了促进开放研究,它还利用了开源物理引擎PyBullet。这个软件包所选择的实现方式使我们能够轻松地定义新的任务,甚至创造新的机器人。
关于模拟和挑战
所展示的环境包括一个被称为Franka Emika1的熊猫机器人手臂,它已经被广泛用于模拟和现实生活中的学术工作。它被设计成具有7个自由度和一个平行的手指抓手来执行任务。该机器人是用PyBullet物理引擎模拟的,它是开源的,有助于显示模拟性能。此外,这些环境与OpenAI Gym集成,允许所有基于API的学习算法。
仿真任务包括将抓手或物体移动到目标位置的挑战。当要移动的实体与目标位置之间的距离小于5厘米时,就认为完成了任务。所提出的五个任务可以随着难度的增加而进一步调整。在PandaReach-v1任务中,必须用抓手到达一个目标位置。这个目标位置是在一个30厘米×30厘米×30厘米的体积中随机产生的。在PandaPush-v1任务中,一个放在桌子上的立方体必须被推到桌子表面的目标位置,而抓手被阻挡。在这里,目标位置和立方体的初始位置是在机器人中立位置周围的30厘米×30厘米的正方形中随机产生的。熊猫滑行-v1模拟任务包括一个扁平的圆柱体,它必须被移动到桌子表面的目标位置,而抓手被阻挡。目标位置是随机生成的,位于机器人中立位置前40厘米的50厘米×50厘米的正方形。
由于目标位置是机器人无法触及的,因此有必要给物体一个冲力,而不是仅仅推它。对于PandaPickAndPlace-v1模拟,一个立方体必须被带到目标位置,产生于桌子上方30厘米×30厘米×20厘米的体积。为了抬起立方体,必须用抓手的手指把它拿起来。PandaStack-v1 两个立方体必须在桌子表面的目标位置堆叠。目标位置是在一个30厘米×30厘米的正方形中产生的。叠加必须正确:红色立方体必须在绿色立方体下面。所有这些模拟挑战仍在研究中,还没有完全解决的完美方案。
开始学习代码
在这篇文章中,我们将尝试执行熊猫体育馆挑战赛中的两个模拟,并了解开发和设置环境所需的条件。下面的实现是受熊猫体育馆的创造者的启发,其官方网站链接可以在这里找到。
安装库
为了开始,我们将首先安装panda-gym库;你可以运行以下代码来完成。
!pip install panda-gym
导入依赖项
现在我们将导入设置环境所需的依赖项。
获取、挑选和放置
#importing dependencies
import gym
import panda_gym
环境设置和模拟
#assigning the simulation task to environment
env = gym.make('PandaPickAndPlace-v1')
state = env.reset()
#setting the environment
done = False
#rendering agent learnings
images = [env.render('rgb_array')]
while not done:
action = env.action_space.sample()
state, reward, done, info = env.step(action)
images.append(env.render('rgb_array'))
env.close()
为了设置环境,你可以运行下面几行代码。
超参数可以根据所需的性能进一步调整;在这里,我们将只是执行一个基本的演示模拟。
接下来,我们将安装numpngw库,这个python包定义了函数write_png,该函数将NumPy数组写入PNG文件,而write_apng则写入动画PNG(APNG)文件的序列f数组。
#installing numpngw
!pip3 install numpngw
from numpngw import write_apng
write_apng('anim.png', images, delay = 100) # real-time rendering = 40 ms between frames
显示结果。
#rendering the simulation
from IPython.display import Image
Image(filename="anim.png")
正如我们可以观察到的,抓手移动了块状物!这是很好的。此外,你可以看到木块的两个位置。虽然这个模拟可能不是很清晰,但可以进一步调整超参数,或者在更好的计算系统上运行,以获得更好的渲染性能。
我们可以对另一个抓手滑动的模拟任务做同样的处理。
抓取和滑动
import gym
import panda_gym
env = gym.make('PandaSlide-v1')
state = env.reset()
done = False
images = [env.render('rgb_array')]
while not done:
action = env.action_space.sample()
state, reward, done, info = env.step(action)
images.append(env.render('rgb_array'))
env.close()
!pip3 install numpngw
from numpngw import write_apng
write_apng('anim.png', images, delay = 70) # real-time rendering = 40 ms between frames
from IPython.display import Image
Image(filename="anim.png")
渲染时间和其他学习参数和环境可以进一步进行相应的设置。这个工具对于测试深度强化学习算法来说是非常令人满意的。然而,有些地方会受到限制,例如在抓手控制方面的限制,因为它只能由高级动作控制,如抓取和移动。需要进行额外的工作,以便能够部署在模拟中学习的策略。另外,模拟不是完全现实的;主要关注的是抓手在环境中抓取对象的形状。
结束语
通过这篇文章,我们了解了强化学习领域中学习环境的本质。我们还试图理解熊猫健身房的问题,并对两个任务进行了基本的演示模拟,渲染了熊猫机械臂,Franka Emika1。下面的实现可以作为colab笔记本找到,可以使用这里的链接访问。学习愉快!
参考文献
The postExploring Panda Gym:一个多目标强化学习环境出现在印度分析杂志上。