多维回报与多维价值矢量化预测的PPO算法

概述

长期以来,强化学习算法都是使用单一的标量回报(Return or Reward)与价值(Value)估计,即只使用加权求和后的reward作为评价函数(Critic function)或值估计函数(Value function)的目标真值。

当回归到现实问题时,我们往往设计很多的rewards作为系统的回报,比如:自动驾驶中可以有速度的reward,到达目标的reward,碰撞障碍物的reward,乘员舒适度的reward... 这样有一个问题,就是如果使用标量化的reward那么需要将所有的rewards都加起来,在value函数预测时,我们始终都在预测一个耦合的标量价值。

这样会存在几个问题:1. 价值预测的长尾效应,比如有些rewards值占整个求和的比重非常小时,这些价值将被价值预测函数忽略;2. 价值函数需要在充分大的数据统计中去解耦这些价值;3. 无法清晰的获得价值函数对每一个价值的预测误差;4. 反向传播的收敛速度问题,单值回归的效果一般要差一些,等一系列问题。

下文我们将以PPO(Proximal Policy Optimization)为例详细说明多维价值矢量化预测的算法过程,实际上所有的actor-critic算法及value-based算法都可以应用该过程。

PPO算法

PPO算法目前因为其性能优越性,很多时候我们都是使用PPO算法作为强化学习的主要算法,该算法于2017年由John Schulman提出,是一种基于策略优化的强化学习算法,也是在策略梯度(Policy Gradient)算法衍生出来的Actor-Critit算法。在无人机、人形机器人、大模型等领域应用广泛。本节主要简单介绍PPO算法流程。

数据收集

具体得过程如下:

  1. 初始化:策略模型参数 θ \theta θ , 评价模型参数 ϕ \phi ϕ
  2. 生成轨迹:每个环境实例中, 从初始状态开始, 每一个时间步 t t t , 策略模型 π θ ( a ∣ s ) \pi_{\theta}(a|s) πθ(a∣s)根据当前策略选择一个动作 a t a_t at, 执行该选择的动作, 状态转移到 s t + 1 s_{t+1} st+1 , 得到奖励 r t r_t rt。重复该过程, 直到每个环境实例达到终止状态或最大步数, 得到一批轨迹数据 τ \tau τ
  3. 存放经验数据:将交互的数据存于 Γ = { τ 0 , τ 1 , . . . } \Gamma =\{\tau_0,\tau_1,...\} Γ={τ0,τ1,...}
优势估计

一般在PPO中使用广义优势估计GAE, 具体计算步骤:

  1. 计算回报: 对于每条轨迹 τ i \tau_i τi, 从后往前计算每个时间步的折扣累积回报, G t = ∑ i = 0 ι γ i r t + i = r t + G t − 1 G_t=\sum_{i=0}^\iota \gamma^i r_{t+i} =r_t +G_{t-1} Gt=i=0∑ιγirt+i=rt+Gt−1
  2. 计算优势估计: 使用价值模型对数据 Γ \Gamma Γ 中的每一个状态 s t s_t st前向传播得到价值估计 V ϕ ( s t ) V_{\phi }(s_t) Vϕ(st) , 然后使用下式计算优势估计值 A t A_t At: δ t = r t + γ V ϕ ( S t + 1 ) − V ϕ ( S t ) \delta_t = r_t+\gamma V_{\phi }(S_{t+1})-V_{\phi }(S_{t}) δt=rt+γVϕ(St+1)−Vϕ(St) A t = ∑ i = 0 ι γ i λ i δ t + i A_t = \sum_{i=0}^\iota \gamma^i \lambda^i \delta_{t+i } At=i=0∑ιγiλiδt+i 这里 λ ∈ [ 0 , 1 ] \lambda \in [0,1] λ∈[0,1]为超参数。

策略模型优化目标

策略模型更新最大化如下目标函数 :
L θ c l i p = E ( m i n { π θ ( a t ∣ s t ) π θ o l d ( a t ∣ s t ) A t , c l i p ( π θ ( a t ∣ s t ) π θ o l d ( a t ∣ s t ) , 1 − ϵ , 1 + ϵ ) A t } ) \mathcal{L^{clip}\theta} = E(min\{\frac{\pi\theta(a_t|s_t)}{\pi_{\theta_{old}}(a_t|s_t)}A_t \ , clip(\frac{\pi_\theta(a_t|s_t)}{\pi_{\theta_{old}}(a_t|s_t)}\ ,1-\epsilon\ ,1+\epsilon)A_t \}) Lθclip=E(min{πθold(at∣st)πθ(at∣st)At ,clip(πθold(at∣st)πθ(at∣st) ,1−ϵ ,1+ϵ)At})

这里 π θ ( a t ∣ s t ) π θ o l d ( a t ∣ s t ) \frac{\pi_\theta(a_t|s_t)}{\pi_{\theta_{old}}(a_t|s_t)} πθold(at∣st)πθ(at∣st)指新旧策略在状态 s t s_t st选择 a t a_t at的概率变化。 c l i p clip clip函数将该变化限制在 [ 1 − ϵ , 1 + ϵ ] [1-\epsilon\ ,1+\epsilon] [1−ϵ ,1+ϵ]之间。

价值模型优化目标

策略模型更新最小化如下目标函数:
L ϕ = 1 2 ( V ϕ ( s t ) − G t ) 2 \mathcal{L_{\phi }} = \frac{1}{2} (V_{\phi }(s_t)-G_t)^2 Lϕ=21(Vϕ(st)−Gt)2

策略的熵

策略的熵定义为: L e n t r o p y = − ∑ t = 1 T π θ ( a t ∣ s t ) l o g ( π θ ( a t ∣ s t ) ) \mathcal{L_{entropy}} = -\sum_{t=1}^{T} \pi_\theta(a_t|s_t) log(\pi_\theta(a_t|s_t)) Lentropy=−t=1∑Tπθ(at∣st)log(πθ(at∣st))

总的代价函数为

L = − L θ c l i p + α L ϕ − β L e n t r o p y \mathcal{L}=-\mathcal{L^{clip}\theta}+\alpha \mathcal{L{\phi }}-\beta\mathcal{L_{entropy}} L=−Lθclip+αLϕ−βLentropy其中 α , β \alpha, \beta α,β为权重参数,这里使用梯度下降法更新两个网络的参数。

多维价值矢量化预测

这个改进中修改了以下部分。

  1. 多维价值顾名思义,就是多个维度价值的预测,不再局限于加和的标量价值,那么我们的Rewards也是多维的,即 r ∈ R n , G t ∈ R n r\in R^n, G_t \in R^n r∈Rn,Gt∈Rn,其中 n > 0 , n ∈ Z n>0,n\in Z n>0,n∈Z。
  2. Critic函数或价值网络输出也是多维矢量预测的,即: V ϕ ( s ) ∈ R n V_{\phi }(s)\in R^n Vϕ(s)∈Rn
  3. 加权Critic对应的目标函数为: L ϕ = 1 2 ( V ϕ ( s t ) − G t ) 2 \mathcal{L_{\phi }} = \frac{1}{2} (V_{\phi }(s_t)-G_t)^2 Lϕ=21(Vϕ(st)−Gt)2 L ϕ ∗ = ∑ k = 1 n w k ∗ L ϕ k \mathcal{L^*{\phi }} = \sum{k=1}^n w^k* \mathcal{L^k_{\phi }} Lϕ∗=k=1∑nwk∗Lϕk 其中 k k k 表示第 k k k 维估计误差的分量, w k w^k wk为该维的权重。
  4. 优势函数(advantage function),同理 A t = ∑ i = 0 ι γ i λ i ( r t + i + γ V ϕ ( S t + i + 1 ) − V ϕ ( S t + i ) ) A_t = \sum_{i=0}^\iota \gamma^i \lambda^i ( r_{t+i}+\gamma V_{\phi }(S_{t+i+1})-V_{\phi }(S_{t+i})) At=i=0∑ιγiλi(rt+i+γVϕ(St+i+1)−Vϕ(St+i)) 也是多维矢量,所以我们进行加权求和: A t ∗ = ∑ k = 1 n w k A t k A_t^* = \sum_{k=1}^n w^kA^k_t At∗=k=1∑nwkAtk

后记

这个改动应该说不大,但是主流的强化学习框架如stable-baselines3都不太支持,需要改rollout buffer等,当然还有比较影响精度的reward vec norm等,整个训练下来算是有提升,但是并没有做过消融实验,因为改进比较小就不写论文了,平时工程的事情也多,也没时间。

这个也是一个新的视角,看待reward。多维回报,也许未来在其他工程问题上有其他帮助也说不定,这里就简单把算法写下来。

参考文献

  1. Proximal Policy Optimization Algorithms
  2. Reinforcement Learning: An Introduction
相关推荐
Yzzz-F2 小时前
P3842 [TJOI2007] 线段
算法
YuTaoShao2 小时前
【LeetCode 每日一题】1984. 学生分数的最小差值
算法·leetcode·排序算法
W.KN2 小时前
深度学习【二】神经网络的学习过程
深度学习·神经网络
Aurora@Hui2 小时前
FactorAnalysisTool 因子分析工具
人工智能·算法·机器学习
deep_drink2 小时前
【论文精读(二十五)】PCM:Mamba 首次杀入 3D 点云,线性复杂度吊打 PTv3(ArXiv 2024)
深度学习·神经网络·计算机视觉·3d·pcm·point cloud
wen__xvn2 小时前
基础算法集训第06天:计数排序
数据结构·算法·leetcode
(; ̄ェ ̄)。2 小时前
机器学校入门(十三)C4.5 决策树,CART决策树
算法·决策树·机器学习
Ll13045252982 小时前
Leetcode哈希表篇
算法·leetcode·散列表
独自破碎E3 小时前
【字节面试手撕】大数加法
java·算法