深度强化学习-策略梯度算法深入理解

Posted indigo love

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了深度强化学习-策略梯度算法深入理解相关的知识,希望对你有一定的参考价值。

1 引言

深度强化学习-策略梯度算法推导博文中,采用了两种方法推导策略梯度算法,并给出了Reinforce算法的伪代码。可能会有小伙伴对策略梯度算法的形式比较疑惑,本文就带领大家剖析其中的原理,深入理解策略梯度算法的公式。本文主要参考了百度飞桨的视频Policy Gradient算法有兴趣的小伙伴可以看看,我觉得讲的非常透彻。

2 手写数字识别

我们先来看一下手写数字识别案列,采用LeNet网络,其输入为一张手写数字照片,输出为0-9每个数字对应的概率。LeNet网络结构不是本文介绍的重点,我们主要看损失函数部分。

假设网络的输入为数字5,标签为one-hot编码形式,即数字5对应概率值为1,其余为0,网络的输出如上图所示。对于分类问题,通常采用交叉熵(Cross Entropy) 损失函数

交叉熵:

分别表示两个不同的分布,交叉熵可以衡量两个分布的差距,通过最小化交叉熵损失,就可以缩小两个分布之间的距离。将标签看作分布,预测概率看作分布,根据交叉熵公式,计算上图中的交叉熵

将其作为损失进行梯度反传,更新网络参数,从而让预测概率分布更加接近标签。

3 策略梯度算法

看完手写数字识别案列后,回到策略梯度算法,单步损失和策略梯度的形式为

单步损失:

策略梯度:

假设智能体的动作空间为离散形式,包括“左、停、右”三个动作,策略网络的输入为状态,输出为每个动作对应的概率。如下图所示

 其中预测概率为网络输出的概率分布,真实动作为智能体真正执行的动作,但是它并一定是一个正确的动作,无法作为标签。计算预测概率与真实动作之间的交叉熵,得到

 发现它与单步损失中的形式一致。由于真实动作不一定是正确的标签,所以加上累积奖励作为权重。越大,对应的损失越需要重视,反之越小,对应的损失就不那么重要。可以认为是一个缩放因子,始终为正数,并不影响梯度的方向,因此可以忽略。综上,单步损失具体可以表示为

其中表示真实动作。对单步损失求梯度即为策略梯度的蒙特卡洛近似,通过梯度反传不断优化策略网络参数,让网络输出的概率分布接近累积回报较大的动作。

4 总结

本文利用离散动作模型剖析了策略梯度公式,发现它与分类模型类似。对于连续动作模型也是同样的道理,利用交叉熵衡量网络预测的概率分布与真实动作的概率分布,并采用累积奖励加权作为单步损失。对损失求梯度,然后沿着梯度的反方向不断更新策略网络参数,从而不断提升策略。

以上是关于深度强化学习-策略梯度算法深入理解的主要内容,如果未能解决你的问题,请参考以下文章

Proximal Policy Optimization (PPO) 算法理解:从策略梯度开始

不等式视角下的策略梯度算法

浅谈策略梯度(PG)算法

强化学习(David Silver)7:策略梯度算法

深度强化学习 Policy Gradients 模型解析,附Pytorch完整代码

(十三)从零开始学人工智能-强化学习:值函数近似和策略梯度