PPO(近端策略优化)算法基本原理

前言

近端策略优化(PPO)算法是OpenAI在2017提出的一种强化学习算法,本文将从PPO算法的基础入手,理解从传统策略梯度算法直到PPO算法的演进过程,以及算法迭代过程中的优化细节。

一、Policy Gradient(策略梯度算法)

在强化学习(Reinforcement Learning, RL)领域,智能体(Agent)通过与环境(Environment)的交互来学习如何做出决策。这个过程可以概括为以下几个关键步骤:

  1. 智能体(Agent):这是学习过程中的主体,它负责根据当前的状态(State)选择动作(Action)。

  2. 策略(Policy, π):智能体根据策略来选择动作。在深度强化学习中,策略通常由一个神经网络表示,这个网络的参数集通常表示为 θ(theta)。

  3. 环境状态(State, s):这是环境在某一时刻的具体情况,智能体根据当前状态来选择动作。

  4. 动作(Action, a):智能体在给定状态下选择的具体行为。

  5. 环境反馈:环境接收到智能体的动作后,会反馈新的状态和奖励(Reward, r)给智能体。

  6. 奖励(Reward, r):这是环境对智能体所执行动作的评估,它是一个标量智能体动作好坏的数值。

  7. 学习过程:智能体根据从环境中获得的反馈来更新其策略网络的参数,目的是最大化长期累积奖励。

  8. 游戏结束(Episode End):当达到某个终止条件时,如达到最大步数或完成特定目标,一个游戏周期结束。

  9. 循环迭代:智能体不断重复上述过程,通过多次迭代来逐渐学习如何在不同状态下选择最佳动作。

在深度强化学习中,策略 πθ 通常由一个深度神经网络来参数化,网络的权重就是 θ。通过训练,网络学习如何根据输入的状态 s 来预测输出最优的动作 a。这个过程涉及到策略的更新,价值函数的估计,以及可能的探索策略,如 ε-greedy 策略等。

策略梯度算法的过程如下图所示:

一个完整的eposide 序列,用表示,而一个特定的序列发生的概率为:

对于一个完整的序列,它在整个游戏期间获得的总的奖励用R()来表示。对于给定参数θ的策略,我们评估其应该获得的每局中的总奖励是:对每个采样得到的序列(即每一局)的加权和,即:

在决策过程中,通过调整策略参数θ,得到的Rθˉ 越大越好,因为这意味着选用的策略参数能平均获得更多奖励。这个形式就是调整θ,获取更大的Rθˉ​ ,所以可以利用梯度下降的方式来求解。于是用期望的每局奖励对θ来求导,如下图:

通过上述式子,把求导替换为期望,期望又可以由采集到的数据序列进行近似,即将每一个数据序列展开成每个数据点上的形式。每一条采样到的数据序列都会希望θ向着自己的方向进行更新,总体上,我们希望更加靠近奖励比较大的那条序列 ,因此用每条序列的奖励来加权平均他们的更新方向。所以完整的PG方法就可以表示为下图所示,即先采集数据,然后利用前面得到的梯度提升的式子更新参数,随后再根据更新后的策略再采集数据,再更新参数,反复循环。

二、PG算法的几个改进Tips

1.增加baseline

在策略梯度(Policy Gradient, PG)方法中,核心思想是通过调整策略以增加获得高奖励的动作的概率,同时减少获得低奖励的动作的概率。这种方法直接优化策略参数,使得智能体在环境中的行为能够带来更高的累积奖励。

然而,当奖励设计不够合理时,可能会出现问题。特别是当所有动作都能获得正奖励时,可能导致未被采样的潜在优秀动作被忽略。这是因为在策略梯度更新的公式中,未被采样的动作可能因为奖励为零而被错误地认为是次优的。这可能导致智能体错过学习到最优策略的机会。

为了避免这种情况,可以引入一个基线(baseline)来调整奖励,使得奖励有正有负,更加真实地反映动作的价值。基线的常见做法是将所有采样序列的平均奖励作为基线。这样,奖励不仅考虑了原始奖励的大小,还考虑了奖励相对于平均水平的偏差。

通过这种方式,即使是未被采样到的动作,只要它们相对于平均水平有正的偏差,也会被赋予正的调整后奖励,从而鼓励智能体探索这些动作。这有助于策略更新时平衡探索和利用,避免过早地收敛到次优策略。如下图所示:

2.使用折扣因子

  • 即时奖励与未来奖励:在许多环境中,智能体在做出决策时不仅要考虑当前获得的奖励,还要考虑其行为对未来可能获得的奖励的影响。这类似于投资决策中,当前的收益与未来潜在收益之间的权衡。

  • 折扣因子(Discount Factor) :折扣因子,通常用 γ(gamma)表示,是一个介于 0 和 1 之间的数值,用于调整未来奖励的当前价值。如果 γ=1,意味着未来奖励与即时奖励被赋予相同的价值。如果 γ<1,未来奖励的价值会随时间递减,这反映了未来奖励的不确定性或时间偏好。就像是我们拥有的货币一样,当前的一块钱比未来期望的一块钱更具有价值。因此在强化学习中,对未来的奖励需要进行一定的折扣:

三、PPO(近端策略优化算法)

在强化学习中,策略的更新方法可以分为两大类:on-policy(同策略)和off-policy(异策略)。

  1. On-Policy(同策略)方法:这类方法中,用于训练的智能体(Agent)与用于收集数据的智能体是同一个实例。在训练过程中,智能体根据当前策略进行决策并收集经验数据,然后使用这些数据来更新策略。这种方法的优点是可以直接从经验中学习,但缺点是更新策略时的样本效率较低,因为智能体的探索和利用是同步进行的。

    • 优点:直接从智能体的经验中学习,不需要额外的样本存储或重放机制。
    • 缺点:更新策略时需要重新与环境交互,这可能导致学习过程较慢,尤其是在探索新动作时。
  2. Off-Policy(异策略)方法:这类方法中,用于训练的智能体与用于收集数据的智能体是不同的实例。这意味着智能体可以在不直接影响当前策略的情况下,从其他来源(如重放的经验回放或从其他智能体的经验中)学习。这种方法允许智能体从过去的经验中学习,而不必重新经历相同的交互。

    • 优点:可以更有效地利用过去的经验,允许智能体从历史数据中学习,而不是仅依赖于当前的交互。
    • 缺点:可能需要额外的存储或重放机制来保存和重用经验。

为了提升训练速度,让采用到的数据可以重复使用,可以将on-policy的方式转换为off-policy的方式。即训练数据通过另一个相同结构的网络得到。这就涉及到重要性采样:

在强化学习和概率论中,重要性采样(Importance Sampling)是一种估计技术,用于估计一个函数关于未知概率分布 pp 的期望值。这种方法特别有用当我们无法直接从分布 pp 采样时。以下是重要性采样的基本概念和步骤:

  1. 目标:估计函数 f(x) 关于未知分布 p的期望 Ep[f(x)]。

  2. 直接采样的问题:我们无法直接从 p 采样,因为 p是未知的。

  3. 使用已知分布采样:我们从一个已知的分布 q 采样,这个分布 q 比 p 更容易采样。

  4. 重要性权重:为了校正从 q 采样的结果,我们为每个采样点 xi​ 分配一个重要性权重 wi​,这个权重是 p(xi)和 q(xi)的比值。重要性权重的计算公式为: wi=p(xi)/q(xi)

  5. 期望估计:使用重要性权重,我们可以估计 f(x) 的期望值:

  6. 其中 N是采样点的数量。

通过这种采样方式的分布p和q不能差距过大,否则,会由于采样的偏离带来问题。即如下图:

  1. 期望估计问题:如果我们的目标是估计 f(x)的期望,但是 f(x) 的值可能为负,这意味着我们希望从 q(x) 中采样的样本大多数都集中在分布的右半部分,这样f(x) 可能大于 0,从而使得期望为正。

  2. 采样偏差:如果我们从 q(x) 中采样,而不是p(x),我们可能会引入偏差,因为 q(x) 可能与 p(x) 有显著差异。

  3. 重要性采样:重要性采样通过为从q(x) 中采样的每个样本 xi​ 分配一个权重 wi=p(xi)/q(xi)来调整 q(x) 采样的结果,使其更好地反映 p(x) 的特性。这样,即使我们从q(x) 中采样,我们也可以得到关于 p(x)的无偏估计。

  4. PPO(Proximal Policy Optimization):在PPO中,我们希望在更新策略参数后能够重复利用之前收集的数据。如果我们在参数 θ′下收集数据,然后更新参数到 θ,直接使用这些数据可能会导致偏差,因为数据是基于旧策略收集的。

  5. PPO中的重用数据:为了解决这个问题,PPO使用重要性采样来调整旧数据,使其适用于新策略。这样,即使数据是基于旧策略 θ′ 收集的,我们也可以使用重要性采样和新策略 θ来更新参数。在PPO中,计算旧策略 θ′ 和新策略 θ 下的行动的重要性权重,然后使用这些权重来调整旧数据,使其反映新策略的期望。这样,就可以在不牺牲样本效率的情况下,利用旧数据来更新策略。

根据上面的方式,记忆库中的旧数据更新参数的方式变为:

1、PPO-Penalty------基于 KL散度惩罚项优化目标函数

同时,根据重要性采样,pθ和pθ′不能差太远,因为差太远会引入问题,这并不是说参数的值不能差太多,而是说,输入同样的state,网络得到的动作的概率分布不能差太远 。所以要用KL散度来惩罚二者之间的分布偏差。得到动作的概率分布的相似程度,将其加入PPO模型的似然函数中,变为:

同时需要动态改变对θ和θ′分布差异的惩罚,如果KL散度值太大,我们增加这一部分惩罚,如果小到一定值,我们就减小这一部分的惩罚,得到PPO算法的过程:

2、 PPO-Clip------PPO截断

PPO 的另一种形式 PPO-截断(PPO-Clip)更加直接,它在目标函数中进行限制,以保证新的参数和旧的参数的差距不会太大。下图中绿色的线代表min中的第一项,即不做任何处理,蓝色的线为第二项,如果两个分布差距太大,则进行一定程度的裁剪。最后对这两项再取min,防止了θ更新太快。

参考文献:李宏毅老师Q-learning (Advanced Tips)_哔哩哔哩_bilibili

相关推荐
jiayoushijie-泽宣17 分钟前
【基于语义地图的机器人路径覆盖】Radiant Field-Informed Coverage Planning (RFICP)高斯扩散场轨迹规划算法详解
人工智能·算法·3d·机器人
蚂蚁在飞-25 分钟前
Golang 的AI 框架库
人工智能
3DVisionary26 分钟前
Tube Qualify弯管测量系统在汽车管路三维检测中的应用
人工智能·自动化·汽车·数字图像相关dic技术·三维弯管在线检测系统·适配器检测·汽车管路三维检测报告
sp_fyf_202429 分钟前
DeepSeek-V2:强大、经济且高效的专家混合语言模型
人工智能·深度学习·神经网络·机器学习·自然语言处理·数据挖掘
厚德云30 分钟前
深度求索发布DeepSeek:高效、低成本的开源大语言模型
人工智能·ai·语言模型·自然语言处理·云计算
深蓝学院32 分钟前
大语言模型遇上寻路算法:LLM-A*如何让路径规划效率提升50%?
人工智能·语言模型·自然语言处理
车载诊断技术34 分钟前
电子电器架构 --- 智能座舱与AI结合
人工智能·安全·架构·汽车·整车区域控制器
云天徽上41 分钟前
【数据可视化-10】国防科技大学录取分数线可视化分析
人工智能·机器学习·信息可视化·数据挖掘·数据分析
爱研究的小牛1 小时前
Midjourney技术浅析(八):交互与反馈
人工智能·microsoft·aigc·交互·midjourney
Sheakan1 小时前
文献阅读分享:强化学习与大语言模型结合的推荐系统LEA
人工智能·语言模型·自然语言处理