强化学习-信任区域策略优化和近端策略优化(第7章)

来源书籍:

TENSORFLOW REINFORCEMENT LEARNING QUICK START GUIDE

《TensorFlow强化学习快速入门指南-使用Python动手搭建自学习的智能体》

著者:[美]考希克·巴拉克里希南(Kaushik Balakrishnan)

译者:赵卫东

出版社:Packt    机械工业出版社

代码:

https://github.com/x45w/TensorFlow-Reinforcement-Learning-Quick-Start-Guide-master-PPOicon-default.png?t=N6B9https://github.com/x45w/TensorFlow-Reinforcement-Learning-Quick-Start-Guide-master-PPO

目录

1.信任区域策略优化和近端策略优化

1.1 学习TRPO

1.2 学习PPO

2.思考题


1.信任区域策略优化和近端策略优化

第6章介绍了A3C和A2C的使用,前者是异步的,后者是同步的。本章将介绍另外的关于同步策略强化学习算法。准确地讲,这两个算法在数学上有很多相似之处,但在解决方法上却有所不同。一种称为信任区域策略优化(Trust Region Policy Optimization, TRPO),由OpenAI和加州大学伯克利分校的研究人员于2015年提出的。该算法在数学上很难求解,因为其涉及共轭梯度算法。请注意,一阶优化方法,如建立良好的Adam和随机梯度下降(SGD),不能用于求解TRPO方程。本章还介绍如何将求解策略优化方程合并为一个,从而产生近端策略优化(Proximal Policy Optimization, PPO)算法,并且可以使用一阶优化算法,如Adam或SGD。

1.1 学习TRPO

TRPO方程
TRPO涉及当前策略分配比例\pi _{\theta }与旧策略分配比例\pi _{\theta }^{old}(ji即较早的时间步长)的期望值的最大化,乘以优势函数A_{t},约束条件是新老策略分布的Kullback-Leibler(KL)散度的期望值不大于用户指定值\delta

 第一个方程是策略目标,第二个方程是一个附加约束。为了确保策略更新是渐进的,并且不会进行大的策略更新,从而将策略带到参数空间非常远的区域。

由于有两个需要联合优化的方程,Adam和SGD等一阶优化算法将不起作用。相反,用共轭梯度算法求解方程,对第一个方程进行线性逼近,对第二个方程进行二次逼近。然而,这涉及很多数学知识,所以不在本书中介绍。本书将使用PPO算法,它相对容易编程实现。

1.2 学习PPO

 PPO是TRPO的扩展,由OpenAI的研究人员于2017年引入。PPO也是一种同步策略算法,可以应用于离散动作问题和连续动作问题。它使用与TRPO中相同的策略分布比率,但不使用KL散度约束。具体来说,PPO使用三个损失函数,将它们合二为一。下面介绍三个损失函数。

PPO损失函数

第一个损失函数称为裁剪替代目标。用r_{t}(\theta )表示新旧策略概率分布的比率:

裁剪替代目标由以下方程给出,其中A_{t}是优势函数,\epsilon是超参数,通常使用ε=0.1或0.2: 

clip()函数将比率限制在1-ε和1+ε之间,从而使比率保持在范围内。min()函数是确保目标是未裁剪目标下限的最小化函数。 

第二个损失函数是状态值函数的L2范数:

第三个损失函数是策略分布的香农熵, 来源于信息论:

 把这三个损失函数组合起来。注意, 要最大化 L^{clip}  和L^{entropy}, 但是要最小化 L^{V}。其中 c1 和 c2 是用于缩放的常数将PPO 。总的损失函数定义为如下方程,

 注意,如果在策略和价值网络之间共享神经网络参数,那么前面L^{ppo}损失函数就可以最大化。另一方面,如果对策略和价值有单独的神经网络,那么就可以有单独的损失函数,那么就可以有单独的损失函数,如下面的方程所示,其中L^{policy}最大化,L^{value}最小化:

L^{policy}=L^{clip}+c_{2}L^{entropy}

L^{value}=L^{V}

注意,常量c_{1}在后一种设置中是不需要的,这里为策略和值提供了单独的神经网络。神经网络参数通过一批数据点上的多个迭代步骤进行更新,其中更新步骤的数量由用户指定为超参数。

2.思考题

(1)可以在TRPO中应用Adam或SGD优化吗?

答:信任区域策略优化(TRPO)具有目标函数和约束。因此,它需要二阶优化,例如共轭梯度。SGD和Adam不适用于TRPO。

(2)熵项在策略优化中的作用是什么?

答:熵项有助于正则化。它允许agent探索更多机会。

(3)为什么要削减策略比率?如果裁减参数\epsilon很大会发生什么?

答:缩减策略比率以限制一个更新步骤更改策略的量。如果裁剪参数\epsilon很大,则每次更新时策略都会发生巨大变化,这可能导致次优策略,因为agent的策略噪声较大且波动太多。

(4)为什么对mu使用激活函数tanh,而对sigma使用激活函数softplus?能用激活函数tanh来计算sigma吗?

答:这个动作被限制在负值和正值之间,因此激活函数tanh被用于mu。softplus用作sigma,并且总是正的。激活函数tanh不能用于sigma,因为tanh会导致sigma的负值,这是没有意义的。

(5)奖励在训练中总是有帮助吗?

答:奖励重新设计通常有助于训练。但是,如果做得不好,也无益于训练。必须确保完成奖励,以保持奖励功能的密集以及在适当的范围内。

(6)当测试一个已经训练好的agent时需要奖励吗?

答:不,奖励重新设计仅用于训练。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

天寒心亦热

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值