ChatGPT强化学习大杀器——近端策略优化(PPO)
Posted JarodYv
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ChatGPT强化学习大杀器——近端策略优化(PPO)相关的知识,希望对你有一定的参考价值。
ChatGPT强化学习大杀器——近端策略优化(PPO)
近端策略优化(Proximal Policy Optimization)来自 Proximal Policy Optimization Algorithms(Schulman et. al., 2017)这篇论文,是当前最先进的强化学习 (RL) 算法。这种优雅的算法可以用于各种任务,并且已经在很多项目中得到了应用,最近火爆的ChatGPT就采用了该算法。
网上讲解ChatGPT算法和训练流程的文章很多,但很少有人深入地将其中关键的近端策略优化算法讲清楚,本文我会重点讲解近端策略优化算法,并用PyTorch从头实现一遍。
文章目录
强化学习
近端策略优化作为一个先进的强化学习算法,我们首先要对强化学习有个了解。关于强化学习,介绍的文章很多,这里我不做过多介绍,但这里我们可以看一下ChatGPT是怎么解释的:
ChatGPT给出的解释比较通俗易懂,更加学术一点的说,强化学习的流程如下:
上图中,每个时刻环境都会为代理反馈奖励,并监控当前状态。有了这些信息,代理就会在环境中采取行动,然后新的奖励和状态等会反馈给代理,以此形成循环。这个框架非常通用,可以应用于各种领域。
我们的目标是创建一个可以最大化获得奖励的代理。 通常这个最大化奖励是各时间折扣奖励的总和。
G
=
∑
t
=
0
T
γ
t
r
t
G = \\sum_t=0^T\\gamma^tr_t
G=t=0∑Tγtrt
这里
γ
\\gamma
γ是折扣因子,通常在 [0.95, 0.99] 范围内,
r
t
r_t
rt 是时间 t 的奖励。
算法
那么我们如何解决强化学习问题呢? 有多种算法,可以(对于马尔可夫决策过程或 MDP)分为两类:基于模型(创建环境模型)和无模型(仅给定状态学习)。
基于模型的算法创建环境模型并使用该模型来预测未来状态和奖励。 该模型要么是给定的(例如棋盘),要么是学习的。
无模型算法直接学习如何针对训练期间遇到的状态(策略优化或 PO)采取行动,哪些状态-行动会产生良好的回报(Q-Learning)。
我们今天讨论的近端策略优化算法属于 PO 算法家族。 因此,我们不需要环境模型来驱动学习。PO 和 Q-Learning 算法之间的主要区别在于 PO 算法可以用于具有连续动作空间的环境(即我们的动作具有真实值)并且即使该策略是随机策略(即按概率行事)也可以找到最优策略;而 Q-Learning 算法不能做这两件事。 这是PO 算法更受欢迎的另一个原因。 另一方面,Q-Learning 算法往往更简单、更直观且更易于训练。
策略优化(基于梯度)
策略优化算法可以直接学习策略。 为此,策略优化可以使用无梯度算法(例如遗传算法),也可以使用更常见的基于梯度的算法。
通过基于梯度的方法,我们指的是所有尝试估计学习策略相对于累积奖励的梯度的方法。 如果我们知道这个梯度(或它的近似值),我们可以简单地将策略的参数移向梯度的方向以最大化奖励。
策略梯度方法通过重复估计梯度 g : = ∇ θ E [ ∑ t = 0 ∞ r t ] g:=\\nabla_\\theta\\mathbbE[\\sum_t=0^\\infinr_t] g:=∇θE[∑t=0∞rt]来最大化预期总奖励。策略梯度有几种不同的相关表达式,其形式为:
g = E [ ∑ t = 0 ∞ Ψ t ∇ θ l o g π θ ( a t ∣ s t ) ] (1) g=\\mathbbE\\Bigg\\lbrack \\sum_t=0^\\infin \\Psi_t \\nabla_\\theta log\\pi_\\theta(a_t \\mid s_t) \\Bigg\\rbrack \\tag1 g=E[t=0∑∞Ψt∇θlogπθ(at∣st)](1)
其中 Ψ t \\Psi_t Ψt 可以是如下几个:
- ∑ t = 0 ∞ r t \\sum_t=0^\\infin r_t ∑t=0∞rt: 轨迹的总奖励
- ∑ t ′ = t ∞ r t ′ \\sum_t'=t^\\infin r_t' ∑t′=t∞rt′: 下一个动作 a t a_t at 的奖励
- ∑ t = 0 ∞ r t − b ( s t ) \\sum_t=0^\\infin r_t - b(s_t) ∑t=0∞rt−b(st): 上面公式的基线版本
- Q π ( s t , a t ) Q^\\pi(s_t, a_t) Qπ(st,at): 状态-动作价值函数
- A π ( s t , a t ) A^\\pi(s_t, a_t) Aπ(st,at): 优势函数
- r t + V π ( s t + 1 ) + V π ( s t ) r_t+V^\\pi(s_t+1)+V^\\pi(s_t) rt+Vπ(st+1)+Vπ(st): TD残差
后面3个公式的具体定义如下:
V
π
(
s
t
)
:
=
E
s
t
+
1
:
∞
,
a
t
:
∞
[
∑
l
=
0
∞
r
t
+
l
]
Q
π
(
s
t
,
a
t
)
:
=
E
s
t
+
1
:
∞
,
a
t
+
1
:
∞
[
∑
l
=
0
∞
r
t
+
l
]
(2)
V^\\pi(s_t) := \\mathbbE_s_t+1:\\infin, a_t:\\infin\\Bigg\\lbrack\\sum_l=0^\\infin r_t+l \\Bigg\\rbrack \\\\ Q^\\pi(s_t, a_t) := \\mathbbE_s_t+1:\\infin, a_t+1:\\infin\\Bigg\\lbrack\\sum_l=0^\\infin r_t+l \\Bigg\\rbrack \\tag2
Vπ(st):=Est+1:∞,at:∞[l=0∑∞rt+l]Qπ(st,at):=Est+1:∞,at+1:∞[l=0∑∞rt+l](2)
A π ( s t , a t ) : = Q π ( s t , a t ) − V π ( s t ) (3) A^\\pi(s_t, a_t) := Q^\\pi(s_t, a_t) - V^\\pi(s_t) \\tag3 Aπ(st,at):=Qπ(st,at)−Vπ(st)(3)
请注意,有多种方法可以估计梯度。 在这里,我们列出了 6 个不同的值:总奖励、后继动作的奖励、减去基线版本的奖励、状态-动作价值函数、优势函数(在原始 PPO 论文中使用)和时间差 (TD) 残差。我们可以选择这些值作为我们的最大化目标。 原则上,它们都提供了我们所关注的真实梯度的估计。
近端策略优化
近端策略优化简称PPO,是一种(无模型)基于策略优化梯度的算法。 该算法旨在学习一种策略,可以根据训练期间的经验最大化获得的累积奖励。
它由一个参与者(actor)
π
θ
(
.
∣
以上是关于ChatGPT强化学习大杀器——近端策略优化(PPO)的主要内容,如果未能解决你的问题,请参考以下文章