深度强化学习算法与实践:基于PyTorch的实现
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

3.1.1 网格世界(Grid World)

在2.1节介绍了网格世界的概念,并且用它来阐释了贪心算法和ϵ-贪心算法。我们把2.1节中使用的网格世界推广一下,增加一些元素,让这个强化学习环境更具有普适性。

下面简单回顾一下网格世界这个强化学习环境。顾名思义,网格世界由很多网格组成,智能体在某一时刻处于这些网格的一个网格中,并且可以在相邻的网格中进行移动。在决策过程中,每一步智能体都能选择跳转的目标网格,并且在跳转之后能够获取网格世界环境的奖励,而且到达目标网格。智能体在这个强化学习环境中的目标是尽可能获取更多的奖励。

在2.1节中介绍的模型只是一个简单的模型,实际上网格世界的模型可以变得非常复杂。

首先,可以很容易地看到,网格世界的复杂度是随着网格数目增加而逐渐增加的,一旦网格数目快速增加,对应的状态价值函数的复杂程度也会随着状态数目的增加而快速增加。

其次,在网格世界中,可以对网格定义不同的相邻关系,在2.1节的例子中可以观察到不同网格位置的跳转,事实上对于网格世界的任意两个网格都可以定义跳转关系,这样随着跳转关系数目的增加,整体上智能体对于环境的搜索难度也会大大增加。除了增加跳转关系,还可以设定一些规则,规定某些网格不能进入,这样就相当于在网格世界环境中人为制造了一些空洞,从而增加了智能体搜索的复杂性。

最后,可以给到达不同的位置设置不同的奖励,不同位置奖励的数目越多,智能体找到最优路径需要搜索的可能路径也会越多,这样同样增加了环境的复杂性。

图3.1是一个相对复杂的网格世界的强化学习环境,这个环境简单展示了前面介绍的三点,其中,箭头代表智能体到达某个网格点后的跳转方向,阴影部分为禁止进入区域,数字部分代表到达某个网格点能够获取的奖励。读者可以试着构建更复杂的网格世界,并且按照2.1节的例子中类似的代码,把这个强化学习环境转化为Python代码。当然,也可以试着在这个网格世界的强化学习环境中运行各种基于策略迭代和值迭代的强化学习算法。

图3.1 一个4×5的网格世界强化学习环境示意图