学习情况:
🌱 耗时10天,学习了策略梯度。从基础概念开始,对Gradient、PG (REINFORCE、Q Actor-Critic、Advantage Actor-Critic)、Natural PG、TRPO、PPO 递进学习
🌱 近1个月的学习,发现RL跟我以前做DL (偏重对某个dataset调一个好的NN structure) 不太一样,很重视理论推导,且涉及多数学概念
🌱 查阅出现的数学概念,并根据论文推导每一步,这花了我很多时间。到后面发现这点很重要,尤其在从NPG到TRPO时
🌱 前序文章1:强化学习入门笔记 | UCL silver RL | UC Berkely cs285 DRL
🌱 此篇文章2:强化学习 | 策略梯度 | Natural PG | TRPO | PPO
🌱 后序文章3:强化学习 | Multi Agents | Trust Region | HATRPO | HAPPO
🌱 后序文章4:强化学习 | Mirror Learning
🌱 全文共1.3w字,含大量手写笔记。如有理解错误,欢迎指正
博客特色:
🌟 循序渐进,从 Gradient 至 Policy Gradient 至 Natural Policy Gradient 至 TRPO 至 PPO 递进式进习,夯实基础
🌟 从概览到细节,避免一叶障目。如写TRPO时,首先总结其在目标函数和梯度更新 (基于NPG) 两方面的改进,而后进行细节推导,最后将TRPO套入 "Trust Region Algorithm" 框架中深化理解
🌟 对涉及到的数学概念均撰写注释,包括导数、偏导、方向导数、梯度、概率分布、信息几何学、黎曼流形、KL divergence、熵、信息量、Fisher矩阵、Hessian矩阵、Jacobi矩阵、Lagrange Multiplier Method、Importance Sampling、MM算法、Conjugate Gradient、Trust Region等30余数学概念
🌟 大量手写笔记,逻辑清晰
目录:
🌻 Gradient
🌻 Poliy Gradient
🌴 定义Policy Objective Function
🌴 求解Policy Gradient
🌵 MC Policy Gradient (REINFORCE)
🌵 Q Actor-Critic Policy Gradient
🌵 Advantage Actor-Critic Policy Gradient
🌵 常见Policy Gradient表达形式
🌻 Natural Policy Gradient
🌻 TRPO
🌴 TRPO核心概述
🌵 梯度更新方面的改进
🌵 目标函数方面的改进
🌴 TRPO推导细节
🌵 目标函数
🌵 梯度更新
🌴 Trust Region
🌻 PPO
🌴 PPO核心概述
🌴 PPO1:Adaptive KL Penalty Coefficient
🌵 步骤
🌵 伪代码
🌴 PPO2:Clipped Surrogate Objective
🌵 步骤
🌵 伪代码
Gradient这一系列方法都是基于梯度的。简单复习下梯度概念,手写了下
首先,定义一下策略目标函数
那么对Policy Objective Function求一下Policy Gradient:
推导到上面红框里的公式后,发现对所有动作都使用同一个加权 (整条trajectory的reward),这显然不合适。
如何对每个动作都采用不同的加权呢?
很自然地想到,可以使用从此动作之后的reward (即这个动作造成的后果有多好),而非整条trajectory的reward(即所有动作累加起来的效果有多好),这就是REINFORCE的思想了,如下
MC Policy Gradient (REINFORCE)REINFORCE算法的伪代码如下:
REINFORCE算法也有点问题,方差比较大,这是由于无偏估计问题:
简单比较一下使用MC采样的REINFORCE算法和使用TD采样的Q Actor-Critic算法,如下图:
Q Actor-Critic可能存在这样一个问题:
当采样很少时,有的动作可能不会被取到。而这时其它被采样到的动作的Q都是正的。
这样的话,动作被Q加权后,被采样到的动作的概率在迭代中会升高,未被采样到的动作的概率在迭代中会降低(因为概率和为1)。
这并不有利于Exploration,况且未被采样到的动作的表现未必不好。
所以,我们需要 "负" 的奖励,即 "相对好",直接的思路就是引入baseline作为 "好" 与 "不好" 的基准。
这就产生了Advantage Function (优势函数) 的概念,,这里的V(s)就是基准。
直观来理解一下,Q是在状态s下动作a的好坏,V是状态s的好坏 (其实V(s)是所有Q(s,a)的期望)。
那么如果Q>V,就是说当前动作能使当前状态更好,即相对是好的。如果Q0,即这个动作是相对好的,则该动作的概率在迭代中会被提高;如果A\mathrm{KL}_{\max } \end{equation}" class="mathcode" src="https://latex.csdn.net/eq?%5Cbegin%7Bequation%7D%20%5Cmathrm%7BKL%7D%5Cleft%28%5Ctheta%2C%20%5Ctheta%5E%7Bk%7D%5Cright%29%3E%5Cmathrm%7BKL%7D_%7B%5Cmax%20%7D%20%5Cend%7Bequation%7D" />时,减小β;时,增大β
首先定义了新旧策略间的比值r(θ),将L写成
PPO2的main objective为:
min函数:在两个式子间取最小值
clip函数:
假设ε=2,则clip函数为,
即当1.2,则输出1.2;当
∈[0.8,1.2],则不裁剪,照旧输出
这样就保证了新旧策略的比值在区间 [0.8,1.2] 内,即两个策略不至于相差太大
PPO采用一阶优化加限制的形式,替代TRPO中的二阶优化,使用CLIP代替复杂的KL div计算,同样使得两个策略间差异不太大
PPO2设计得很巧妙的还有一点,就是在clip函数后乘了
是有正负的啊。当这个动作 "相对好" 的时候,
>0;当这个动作 "相对差" 的时候,
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?