首页IT科技chatgpt app(ChatGPT强化学习大杀器——近端策略优化(PPO))

chatgpt app(ChatGPT强化学习大杀器——近端策略优化(PPO))

时间2025-08-05 03:25:11分类IT科技浏览4919
导读:ChatGPT强化学习大杀器——近端策略优化(PPO)...

ChatGPT强化学习大杀器——近端策略优化(PPO)

近端策略优化Proximal Policy Optimization)来自 Proximal Policy Optimization Algorithms(Schulman et. al., 2017)这篇论文            ,是当前最先进的强化学习 (RL) 算法            。这种优雅的算法可以用于各种任务                      ,并且已经在很多项目中得到了应用       ,最近火爆的ChatGPT就采用了该算法                      。

网上讲解ChatGPT算法和训练流程的文章很多         ,但很少有人深入地将其中关键的近端策略优化算法讲清楚                     ,本文我会重点讲解近端策略优化算法           ,并用PyTorch从头实现一遍       。

强化学习

近端策略优化作为一个先进的强化学习算法      ,我们首先要对强化学习有个了解         。关于强化学习                    ,介绍的文章很多               ,这里我不做过多介绍   ,但这里我们可以看一下ChatGPT是怎么解释的:

ChatGPT给出的解释比较通俗易懂                   ,更加学术一点的说                   ,强化学习的流程如下:

强化学习框架

上图中,每个时刻环境都会为代理反馈奖励               ,并监控当前状态                     。有了这些信息                      ,代理就会在环境中采取行动   ,然后新的奖励和状态等会反馈给代理            ,以此形成循环           。这个框架非常通用                      ,可以应用于各种领域      。

我们的目标是创建一个可以最大化获得奖励的代理                    。 通常这个最大化奖励是各时间折扣奖励的总和               。

G

=

t

=

T

γ

t

r

t

G = \sum_{t=0}^T\gamma^tr_t

G=t=0Tγ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

=

r

t

]

g:=\nabla_\theta\mathbb{E}[\sum_{t=0}^{\infin}r_t]

g:=θE[t=0rt]来最大化预期总奖励                    。策略梯度有几种不同的相关表达式               ,其形式为:

g

=

E

[

t

=

Ψ

t

θ

l

o

g

π

θ

(

a

t

s

t

)

]

(1)

g=\mathbb{E}\Bigg\lbrack \sum_{t=0}^{\infin} \Psi_t \nabla_\theta log\pi_\theta(a_t \mid s_t) \Bigg\rbrack \tag{1}

g=E[t=0Ψtθlogπθ(atst)](1)

其中

Ψ

t

\Psi_t

Ψt 可以是如下几个:

t

=

r

t

\sum_{t=0}^\infin r_t

t=0rt
: 轨迹的总奖励

t

=

t

r

t

\sum_{t=t}^\infin r_{t}

t=trt
: 下一个动作

a

t

a_t

at
的奖励

t

=

r

t

b

(

s

t

)

\sum_{t=0}^\infin r_t - b(s_t)

t=0rtb(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

=

r

t

+

l

]

Q

π

(

s

t

,

a

t

)

:

=

E

s

t

+

1

:

,

a

t

+

1

:

[

l

=

r

t

+

l

]

(2)

V^\pi(s_t) := \mathbb{E}_{s_{t+1:\infin}, a_{t:\infin}}\Bigg\lbrack\sum_{l=0}^\infin r_{t+l} \Bigg\rbrack \\ Q^\pi(s_t, a_t) := \mathbb{E}_{s_{t+1:\infin}, a_{t+1:\infin}}\Bigg\lbrack\sum_{l=0}^\infin r_{t+l} \Bigg\rbrack \tag{2}

Vπ(st):=Est+1:,at:[l=0rt+l]Qπ(st,at):=Est+1:,at+1:[l=0rt+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) \tag{3}

Aπ(st,at):=Qπ(st,at)Vπ(st)(3)

请注意                      ,有多种方法可以估计梯度               。 在这里   ,我们列出了 6 个不同的值:总奖励                   、后继动作的奖励      、减去基线版本的奖励            、状态-动作价值函数                    、优势函数(在原始 PPO 论文中使用)和时间差 (TD) 残差   。我们可以选择这些值作为我们的最大化目标                   。 原则上            ,它们都提供了我们所关注的真实梯度的估计                   。

近端策略优化

近端策略优化简称PPO                      ,是一种(无模型)基于策略优化梯度的算法。 该算法旨在学习一种策略       ,可以根据训练期间的经验最大化获得的累积奖励               。

它由一个参与者(actor)

π

θ

(

.

s

t

)

\pi\theta(. \mid st)

πθ(.st) 和一个评估者(critic)

V

(

s

t

)

V(st)

V(st)
组成                      。前者在时间

t

t

t
处输出下一个动作的概率分布         ,后者估计该状态的预期累积奖励(标量)   。 由于 actor 和 critic 都将状态作为输入                     ,因此可以在提取高级特征的两个网络之间共享骨干架构            。

PPO 旨在使策略选择具有更高“优势            ”的行动           ,即具有比评估者预测的高得多的累积奖励                      。 同时      ,我们也不希望一次更新策略太多                    ,这样很可能会出现优化问题       。 最后               ,如果策略具有高熵   ,我们会倾向于给与额外奖励                   ,以激励更多探索         。

总损失函数由三项组成:CLIP项         、价值函数 (VF) 项和熵奖励项                     。最终目标如下:

L

t

C

L

I

P

+

V

F

+

S

(

θ

)

=

E

^

t

[

L

t

C

L

I

P

(

θ

)

c

1

L

t

V

F

(

θ

)

+

c

2

S

[

π

θ

]

(

s

t

)

]

L_t^{CLIP+VF+S}(\theta) = \hat{\mathbb{E}}_t \Big\lbrack L_t^{CLIP}(\theta) - c_1L_t^{VF}(\theta)+c_2S[\pi_\theta](s_t)\Big\rbrack

LtCLIP+VF+S(θ)=Et[LtCLIP(θ)c1LtVF(θ)+c2S[πθ](st)]
其中

c

1

c_1

c1

c

2

c_2

c2
是超参                   ,分别衡量策略评估(critic)和探索(exploration)准确性的重要性           。

CLIP项

正如我们所说,损失函数激发行为概率最大化(或最小化)               ,从而导致行为正面优势(或负面优势)

L

C

L

I

P

(

θ

)

=

E

^

t

[

m

i

n

(

r

t

(

θ

)

A

t

^

,

c

l

i

p

(

r

t

(

θ

)

,

1

ϵ

,

1

+

ϵ

)

A

^

t

)

]

L^{CLIP}(\theta) = \hat{\mathbb{E}}_t\Big\lbrack min \Big\lparen r_t(\theta)\hat{A_t},clip \big\lparen r_t(\theta),1-\epsilon, 1+\epsilon\big\rparen \hat{A}_t \Big\rparen \Big\rbrack

LCLIP(θ)=Et[min(rt(θ)At,clip(rt(θ),1ϵ,1+ϵ)At)]

其中:

r

t

(

θ

)

=

π

θ

(

a

t

s

t

)

π

θ

o

l

d

(

a

t

s

t

)

r_t(\theta) = \frac{\pi_\theta(a_t \mid s_t)}{\pi_{\theta_{old}}(a_t \mid s_t)}

rt(θ)=πθold(atst)πθ(atst)
是衡量我们现在(更新后的策略)相对于之前执行该先前操作的可能性的比率      。 原则上                      ,我们不希望这个系数太大   ,因为太大意味着策略突然改变                    。这就是为什么我们采用其最小值和

[

1

ϵ

,

1

+

ϵ

]

[1-\epsilon, 1+\epsilon]

[1

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
cms网页(让您网站管理轻而易举的超级工具-CMS10)