深度强化学习实践(原书第2版)
上QQ阅读APP看书,第一时间看更新

4.2 交叉熵方法的实践

交叉熵方法的描述可以分成两个不同的方面:实践和理论。实践方面是这个方法的直观表示,而理论方面解释了为什么交叉熵方法有用,以及它如何生效,这会更复杂。

RL中最关键、最复杂的就是智能体,它通过和环境交互,试图累积尽可能多的总奖励。在实践中,我们遵循通用的机器学习(ML)方法,将智能体中所有复杂的部分替换成非线性、可训练的函数,然后将智能体的输入(来自环境的观察)映射成输出。这个函数的具体输出取决于特定的方法或方法的类型,如上一节所述的基于价值或基于策略的方法。由于交叉熵方法是基于策略的,非线性函数(神经网络)生成策略,它针对每一个观察都告诉智能体应该执行什么动作,如图4.1所示。

081-01

图4.1 RL的高阶表示

实践中,策略通常表示为动作的概率分布,这和分类问题很像,类型的数量和要执行的动作数量相同。

这种抽象让智能体变得非常简单:将从环境中得到的观察传给NN,得到动作的概率分布,使用概率分布来进行随机采样以获得要执行的动作。随机采样为智能体添加了随机性,这是一件好事,因为在开始训练的时候,权重是随机的,智能体的行为也是随机的。当智能体得到一个动作后,将其应用到环境中,再获得由动作产生的下一个观察和奖励。然后继续这样的循环。

在智能体的一生中,它的经历被表示成片段。每个片段都由一系列的观察(智能体从环境中获得的)、动作(智能体发出的)和奖励(由动作产生的)组成。假设智能体已经玩了好几轮片段了。针对每一个片段,我们都可以计算出智能体获得的总奖励。它可以是有折扣或没有折扣的,我们假设折扣因子γ=1(这意味着将每个片段的所有立即奖励都直接加起来)。总奖励显示智能体在这个片段中表现得有多好。

我们用图表来表示它,假设一共有4个片段(注意不同的片段有不同的oiairi值),如图4.2所示。

081-02

图4.2 带有观察、动作和奖励的片段示例

每个单元格表示智能体在片段中的一步。由于环境的随机性以及智能体选择动作的不同方式,某些片段会比其他片段好。交叉熵方法的核心是将差的片段丢掉,并用好的片段来训练。所以,该方法的步骤如下:

1)使用当前的模型和环境产生N次片段。

2)计算每个片段的总奖励,并确定奖励边界。通常使用总奖励的百分位来确定,例如50或70。

3)将奖励在边界之下的片段丢掉。

4)用观察值作为输入、智能体产生的动作作为目标输出,训练剩余的“精英”片段。

5)从第1步开始重复,直到得到满意的结果。

这就是交叉熵方法的描述。通过前面的过程,NN学会了如何选择能获得更大奖励的动作,并不断将边界提高。尽管这个方法很简单,但它能在基本环境中表现得很好,同时它很好实现,当超参改变时也很稳定,这让它成为被最先尝试的理想的基准方法。现在我们来将它应用到CartPole环境。