深度强化学习-策略梯度算法推导
深度强化学习-策略梯度算法推导
引言
1 策略梯度算法推导
1.1 方法一
1.2 方法二
2 Reinforce算法
3 Reinforce算法伪代码
引言
之前我们讨论过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算法伪代码
深度强化学习-策略梯度算法推导相关推荐
- 深度强化学习-Double DQN算法原理与代码
深度强化学习-Double DQN算法原理与代码 引言 1 DDQN算法简介 2 DDQN算法原理 3 DDQN算法伪代码 4 仿真验证 引言 Double Deep Q Network(DDQN)是 ...
- 【深度强化学习】DRL算法实现pytorch
DRL Algorithms DQN (deep Q network) Policiy_Gradient 策略梯度是强化学习的一类方法,大致的原理是使用神经网络构造一个策略网络,输入是状态,输出为动作 ...
- 强化学习 11 —— REINFORCE 算法推导与 tensorflow2.0 代码实现
在上篇文章强化学习--Policy Gradient 公式推导介绍了 Policy Gradient 的推导: ∇ θ J ( θ ) ≈ 1 m ∑ i = 1 m R ( τ i ) ∑ t = ...
- 【深度强化学习】DDPG算法
1 DDPG简介 确定性策略梯度(Deterministic Policy Gradient,DPG):确定性策略是和随机策略相对而言的.作为随机策略,在同一个状态处,采用的动作是基于一个概率分布,即 ...
- 强化学习 | 策略梯度 | Natural PG | TRPO | PPO
学习情况:
- 深度强化学习Soft-Actor Critic算法高性能Pytorch代码(改写自spinningup,低环境依赖,低阅读障碍)
写在前面 DRL各种算法在github上各处都是,例如莫凡的DRL代码.ElegantDRL(易读性NO.1) 很多代码不是原算法的最佳实现,在具体实现细节上也存在差异,不建议直接用在科研上. 这篇博 ...
- 重温强化学习之深度强化学习
1.简介 输入特征和真实特征相距比较远,加一个深度学习提取源的特征 2.基于值函数的深度强化学习 意义:不用函数近似无法解决大规模的问题,用函数近似训练不稳定,首次证明了 ...
- 赠票 | 深度强化学习的理论、算法与应用专题探索班
文末有数据派赠票福利呦! 深度强化学习是人工智能领域的一个新的研究热点.它以一种通用的形式将深度学习的感知能力与强化学习的决策能力相结合,并能够通过端对端的学习方式实现从原始输入到输出的直接控制.自提 ...
- 线下报名 | YOCSEF TDS:深度强化学习的理论、算法与应用
时间:7月29日9:00-17:20 地点:北京中科院计算所,一层/四层报告厅(暂定) 报名方式:1.报名链接:http://conf2.ccf.org.cn/TDS 2.点击文末阅读原文报名 3 ...
- 深度学习学习笔记-论文研读4-基于深度强化学习的多用户边缘计算任务卸载调度与资源分配算法
本人学识浅薄,如有理解不到位的地方还请大佬们指出,相互学习,共同进步 概念引入 强化学习 DQN算法 边缘计算 边缘计算,是指在靠近物或数据源头的一侧,采用网络.计算.存储.应用核心能力为一体的开放平 ...
最新文章
- 前端机器学习:识别人脸,并在脸颊上画草莓
- WCF技术剖析之十四:泛型数据契约和集合数据契约(下篇)
- 手机权限的一些问题记录
- DOM 之通俗易懂讲解
- java有没有回调函数_Java中的回调函数 - wangjianme的个人空间 - OSCHINA - 中文开源技术交流社区...
- Spring Cloud--Honghu Cloud分布式微服务云系统—组件化
- 在Google Cloud Platform的K8上运行Fn函数
- 计算机等级考试机试试题,计算机等级考试二级VFP机试试题18
- .NET C#研发的授权工具
- Visio主题与样式
- 无语!JDK 8 中的 HashMap 依然会死循环…
- 【R图秀-5】将薪比薪
- Git基本用法(一)
- LINUX SHELL命令ls只列出目录名
- java前端传汉字到后端出现乱码解决办法
- Java二叉树的最大宽度详解版
- go语言能开发什么?go语言开发案例
- 计算机专业笔记本低压,笔记本win7系统下CPU低压u和标压m的区别对比
- Android中Alarm的机制
- asp mysql 留言本_适用于ASP.NET的留言本(翻译)