Q-learning也有不行的时候,策略梯度算法闪亮登场

Q-learning虽然经过一系列发展,进化成deep Q-network,并且取得了很大的成功,但是它也有盲点,就是当游戏的动作是连续的时候,比如你操控机器人走路,跑步等。因为Q-learning算法只能处理离散的动作问题,当遇到连续动作的时候,它最多用离散化处理:

比如这个曲面是所有可能动作的取值范围,Q-learnig只能将曲面网格化从而获得有限的点。这么做通常会带来一些缺点:

(1)Q-learning要求从众多动作中,挑取收益最大的一个动作,但是如果动作空间太大,那么选取就显得极为困难。

(2)很多游戏需要精细控制,一个小小的变动可能会引起极大的改变,所以离散化可能会因为丢失精度而导致失败。

于是我们需要另辟蹊径,找一个可以在连续动作空间抽取动作的方法。标准做法叫做策略梯度(policy gradient)。这个方法的核心在于它有一个可以从连续空间抽取的动作的策略。现在主流的方法是用神经网络来表示策略。

在下图中策略用字母pi表示,theta是神经网络的参数,是有待决定的量。神经网络接收到一个s,也就是当前机器人所处的状态,经过计算后会输出一个动作u,这个动作就是机器人应对当前s所采取的动作。接着环境接收到这个动作会反馈机器人新的状态后一个奖励r。注意到,我们说的奖励并不都是好的,有时候也会请机器人吃。得到了新的状态,机器人又会采取新的动作,以此反复下去,在和环境的交互过程中根据奖励不同来更新神经网络的参数,从而不断优化策略,最终让策略可以达到最大的期望收益。

我们重点讨论一下什么是期望收益。假如你学习到的策略偶尔会取得很高的分数,但是大部分时候表现却很差,这时候我们不能因为一两次表现好就认为我们已经学习到了很好的策略。所以我们的目标要设定成奖励的期望。

当我们需要优化这个奖励期望的时候,一般而言对于同一个参数下面的策略,我们要多跑几次游戏来收集比较多的数据来做一次策略的参数更新。这么做的目的是让我们对奖励的估计更加接近于一个平均情况,因为我们优化的目标是一个期望。

策略梯度算法的最大贡献在于它提供了一个可以处理连续动作空间的方法,这个方法在一些控制问题上取得了很好的成绩,比如下面这个游戏

这个游戏是控制一个小人的身体躯干的动作让它完成直立行走。很显然小人的躯干还是很多的,而且动作都是连续的,所以用Q-learning算法很难取得比较好的效果。而策略梯度算法却可以让小人成功行走起来。

原文发布于微信公众号 - 浊酒清味(gh_39aead19f756)

原文发表时间:2019-07-30

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券