之前我们讨论过DQN算法:
深度强化学习-DQN算法原理与代码
、Double DQN算法:
深度强化学习-Double DQN算法原理与代码
、Dueling DQN算法:
深度强化学习-Dueling DQN算法原理与代码
以及D3QN算法:
深度强化学习-D3QN算法原理与代码
,这些算法在求解最优策略的过程中试图估计最优价值函数,所以这些算法都被称为
最优价值算法(optimal value algorithm)
。
但是求解最优策略梯度不一定要估计最优价值函数,
策略梯度算法(policy gradient algorithm)
试图用含参函数近似最优策略,并通过迭代更新参数值。本文采用两种方法推导策略梯度算法,法一的推导过程比较简单,可以直观了解策略梯度算法的原理,但是不太严谨,具体可以参考李宏毅老师讲解PG算法的视频:
Policy Gradient
。法二的推导过程稍微复杂一点,但是推导过程严谨,Reinforce算法就是法二推导结果的直观体现。
1 策略梯度算法推导
强化学习的目标在于最大化累积期望回报,策略梯度算法给出了期望回报和策略梯度之间的关系。
采用函数近似法估计最优策略
的基本思想是用含参函数
来近似最优策略。
1.1 方法一
假设智能体与环境交互一次的经验轨迹为
,T为终止时刻,即
本次交互的累积回报为
本次经验轨迹出现的概率为
其中,
和
由环境决定,与
无关。
真实的累积回报为采样得到累积回报的期望
,即累积期望回报为
对
关于
求梯度,得到
注意:式中的
其实与参数
有关,但是推导时假定无关,没有算入梯度,因此不太严谨,不过并不影响对策略梯度算法的理解,严谨的推导见方法二。
由于
那么
上面求和符号可以通过采样消除,即N次采样后,得到
对
求对数,得到
对
关于
求梯度,由于
与
无关,因此全部被消掉,得到
将
代入
,得到
策略梯度:
至此,我们完成了策略梯度算法的推导,沿着
的方向改变策略参数
,就有机会增加累积期望回报。
不过,策略梯度公式中有一个需要注意的地方,
表示的是整条轨迹的累积回报,并非即时回报。
1.2 方法二
策略
满足Bellman期望方程
Bellman期望方程:
对以上两式关于
求梯度,得到
将
代入
,得到
在策略
下,当
时求上式的期望,得到
这样就得到了从
到
的递推式。注意到最终关注的梯度值就是
所以有
考虑到
所以
又由于
,所以
因此
策略梯度:
2 Reinforce算法
在每一个回合结束后,就回合中的每一步利用如下迭代式更新
这样的算法称为简单的策略梯度算法,R.Willims称它为“REward Increment=Nonnegative Factor x Offset Reinforcement x Characteristic Eligibility”(REINFORCE),表示增量
是由三个部分的积组成。这样迭代完这个回合轨迹就实现了
在具体的更新过程中,不一定要严格采用这样的形式。当采用自动微分的软件包来学习参数时,可以定义单步的损失为
,让软件包中的优化器减小整个回合中所有步的平均损失,就会沿着
的梯度方向更新参数
。
3 Reinforce算法伪代码