论文笔记之NPG

NPG,即Natural Policy Gradient(自然策略梯度),是一篇2002年的老文章了,后来的TRPO、PPO都是基于NPG的思想。个人认为NPG和TRPO提供了比较扎实的理论基础,而PPO是最佳的实践版本。

论文地址,点这里
参考列表:
费舍尔信息矩阵及自然梯度法或者英文原作者
自然梯度法
Natural Policy Gradient
Natural PG
强化学习之自然梯度法

NPG是NG和PG的结合(即NPG=NG+PG),NPG是以 J ( θ ) = ∑ s , a ρ π ( s ) π ( a ; s , θ ) Q π ( s , a ) J(\theta)=\sum_{s,a}\rho^\pi(s)\pi(a;s,\theta)Q^\pi(s,a) J(θ)=s,aρπ(s)π(a;s,θ)Qπ(s,a)为目标函数的NG算法(这里的NG用于梯度上升)。

Abstract

自然梯度算法(NG)在搜索范围受限的约束下提供了使得目标函数 f ( θ + s ) f(\theta+s) f(θ+s)最小的最佳搜索方向 s ∗ s^* s。该论文将NG用于强化学习中,从而找到最贪婪( m a x i m i z e maximize maximize)的动作而不是标准策略提升中更好的动作。贪婪动作也是通过策略迭代、可兼容的值函数近似获取的。

1 Introduction

2 A Natural Gradient

这一节主要是介绍自然梯度法以及几个重要式子在RL上的表示方法,关于NG算法,可以参考我的另一篇——强化学习之自然梯度法
回顾下策略梯度算法的核心公式:
∇ η ( θ ) = ∑ s , a ρ π ( s ) ∇ π ( a ; s , θ ) Q π ( s , a ) (1) \nabla\eta(\theta)=\sum_{s,a}\rho^\pi(s)\nabla\pi(a;s,\theta)Q^\pi(s,a)\tag{1} η(θ)=s,aρπ(s)π(a;s,θ)Qπ(s,a)(1)
接下来就是费雪信息矩阵FIM在这里插入图片描述

在RL中的表示:
F i , j s ( θ ) = E a ∼ π ( a ; s , θ ) [ ∂ log ⁡ π ( a ; s , θ ) ∂ θ i ⋅ ∂ log ⁡ π ( a ; s , θ ) ∂ θ j ] (2) F_{i,j}^s(\theta)=\mathbb{E}_{a\sim\pi(a;s,\theta)}[\frac{\partial{\log\pi(a;s,\theta)}}{\partial{\theta_i}}\cdot\frac{\partial{\log\pi(a;s,\theta)}}{\partial{\theta_j}}]\tag{2} Fi,js(θ)=Eaπ(a;s,θ)[θilogπ(a;s,θ)θjlogπ(a;s,θ)](2)
完整地表达:
F ( θ ) = E s ∼ ρ π ( s ) [ F i , j s ( θ ) ] (3) F(\theta)=\mathbb{E}_{s\sim\rho^\pi(s)}[F_{i,j}^s(\theta)]\tag{3} F(θ)=Esρπ(s)[Fi,js(θ)](3)
说到NG,最重要的就是其搜索方向了:
d ∗ = ∇ ~ η ( θ ) ≡ F − 1 ( θ ) ∇ η ( θ ) (4) d^*=\tilde{\nabla}\eta(\theta)\equiv F^{-1}(\theta)\nabla\eta(\theta)\tag{4} d=~η(θ)F1(θ)η(θ)(4)

3 The Natural Gradient and Policy Iteration

3.1 Compatible Function Approximation

可兼容值函数近似的意思用这个估计的价值函数替换策略梯度中的真实价值函数去计算式(1),即使有参数化带来的误差,得到的策略梯度也是准确的,这里作者做了一个线性值函数近似。
θ , ω ∈ R m \theta,\omega\in\mathbb{R}^m θ,ωRm,则得分函数以及近似值函数分别为:
ψ π ( s , a ) = ∇ θ log ⁡ π ( a ; s , θ ) , f π ( s , a ; ω ) = ω T ψ π ( s , a ) (5) \psi^\pi(s,a)=\nabla_\theta\log\pi(a;s,\theta),\\ f^\pi(s,a;\omega)=\omega^T\psi^\pi(s,a)\tag{5} ψπ(s,a)=θlogπ(a;s,θ),fπ(s,a;ω)=ωTψπ(s,a)(5)Theorem 1:
ω ~ = arg min ⁡ ω ∑ s , a ρ π ( s ) π ( a ; s , θ ) ( f π ( s , a ; ω ) − Q π ( s , a ) ) 2 \tilde{\omega}=\argmin_\omega\sum_{s,a}\rho^\pi(s)\pi(a;s,\theta)(f^\pi(s,a;\omega)-Q^\pi(s,a))^2 ω~=ωargmins,aρπ(s)π(a;s,θ)(fπ(s,a;ω)Qπ(s,a))2,则 ω ~ = ∇ ~ η ( θ ) \tilde{\omega}=\tilde{\nabla}\eta(\theta) ω~=~η(θ)
证明如下:
在这里插入图片描述Note:

  1. ω ~ = F − 1 ( θ ) ∇ θ η ( θ ) \tilde{\omega}=F^{-1}(\theta)\nabla_\theta\eta(\theta) ω~=F1(θ)θη(θ)可以看出,NG算法可以用来求取线性值函数网络的参数。

3.2 Greedy Policy Improvement

经典的策略梯度算法对于值函数提升的方式是一种选择状态 s s s处比之前更好的动作 a ′ ∼ π θ ′ ( s ) a'\sim\pi_{\theta'}(s) aπθ(s)。而NPG想要的是经典策略提升那样的: a ′ ∈ arg max ⁡ a f π ( s , a ; ω ~ ) a'\in\argmax_af^\pi(s,a;\tilde{\omega}) aaargmaxfπ(s,a;ω~)也就是贪婪策略(greedy-policy)。
现在假设我们的策略属于 e x p exp exp数簇,即 π ( a ; s , θ ) ∝ exp ⁡ ( θ T ϕ s a ) \pi(a;s,\theta)\propto\exp(\theta^T\phi_{sa}) π(a;s,θ)exp(θTϕsa) ϕ s a ∈ R m \phi_{sa}\in\mathbb{R^m} ϕsaRm是特征向量。

Theorem 2:
π ( a ; s , θ ) ∝ exp ⁡ ( θ T ϕ s a ) \pi(a;s,\theta)\propto\exp(\theta^T\phi_{sa}) π(a;s,θ)exp(θTϕsa) ∇ ~ η ( θ ) ≠ 0 \tilde{\nabla}\eta(\theta)\ne0 ~η(θ)=0,令 π ∞ ( a ; s ) = lim ⁡ α → ∞ π ( a ; s . θ + α ∇ ~ η ( θ ) ) \pi_\infty(a;s)=\lim_{\alpha\to\infty}\pi(a;s.\theta+\alpha\tilde{\nabla}\eta(\theta)) π(a;s)=limαπ(a;s.θ+α~η(θ)),则:
π ∞ ( a ; s ) ≠ 0 , 当 且 仅 当 a ∈ arg max ⁡ a ′ f π ( s , a ′ ; ω ~ ) \pi_\infty(a;s)\ne0,当且仅当a\in\argmax_{a'}f^\pi(s,a';\tilde{\omega}) π(a;s)=0aaargmaxfπ(s,a;ω~)证明如下:
在这里插入图片描述

Note:

  1. 定理2表明,在NG的更新规则下,一个足够大的step所更新出来的策略等效于贪婪策略。也就是说自然策略旨在寻找最佳动作(greedy-action)。这里的 α → ∞ \alpha\to\infty α可以这么理解,就像监督学习里那样,一个batch会重复更新好几次,这里也是一样,定理2告诉我们只要一直沿着NG告诉我们的方向更新下去,则算法就会找到贪婪策略下的最佳动作
  2. 这里选用 e x p exp exp策略仅仅是用来便于使用学习率的极端情况。

Theorem 3:
设策略网络参数更新为: θ ′ = θ + α ∇ ~ θ η ( θ ) , 则 \theta'=\theta+\alpha\tilde{\nabla}_\theta\eta(\theta),则 θ=θ+α~θη(θ) π ( a ; s , θ ′ ) = π ( a ; s , θ ) ( 1 + f π ( s , a ; ω ~ ) + O ( α 2 ) ) \pi(a;s,\theta')=\pi(a;s,\theta)(1+f^\pi(s,a;\tilde{\omega})+O(\alpha^2)) π(a;s,θ)=π(a;s,θ)(1+fπ(s,a;ω~)+O(α2))证明如下:在这里插入图片描述Note:

  1. 这里泰勒展开只做一阶近似。
  2. 更新规则显然就是自然梯度法。
  3. 定理3将面向通用的策略,而不仅限于 e x p exp exp策略,它揭示了自然梯度法是如何选择最佳动作(greedy-action)的
  4. 从最后一个等式可以看出,如果状态动作对 < s , a > <s,a> <s,a>的值函数值是一个相对较大的值的话,那么自然梯度法的更新会使得在这个状态 s s s选择到动作 a a a的概率得到提升;同理如果 f ( s , a ) f(s,a) f(s,a)比较小,那么接下去就很难被选到了,总的来说,强的会更强,弱的会更弱,倒是有“强化”学习的意思在里面。那么当动作 a a a是贪婪动作的时候,则 π \pi π一定会得到提升!
  5. 作者指出,之前许多研究都表明贪婪动作 a ∗ a^* a的选择并不能提升 π ( a ∗ ∣ s ) \pi(a^*|s) π(as)。但是定理三告诉我们,自然梯度法可以做到选择贪婪动作 a ∗ a^* a,同样可以提升 π \pi π(这里作者提到了线性搜索,但个人认为自然梯度法里面并没有包含线性搜索的成分,但是最速下降法里是有一维搜索的)。

4 Metrics and Curvatures

5 Experiments

6 Discussion

7 总结

  1. 完整NPG伪代码如下:在这里插入图片描述

  2. NPG是自然梯度法和策略梯度的结合,我们之前介绍的策自然梯度算啊只是一种优化方式,相当于一个框架,NPG即相当于把强化学习的策略梯度给塞进框架里进行优化。

  3. TRPO就是要约束两个分布之间的距离。那么现在NPG通过一步一步的转换,将约束两个分布之间的距离转换成约束 s = 1 λ F − 1 g s=\frac{1}{\lambda}F^{-1}g s=λ1F1g这个事情,那么只要约束了 s s s就相当于约束了两个分布的距离。总之,Natural Policy Gradient把约束通过FIM隐式的写在了搜索方向里,和TRPO一样,给人一种更新步伐不大不小、正合适的感觉。

  4. NPG和TRPO一样,给后来的PPO算法提供了一个很好的理论基础。他的优点在于①产生了策略梯度版本的greedy-policy,两者很相似。②收敛速度快,因为Agent朝着相对所估计到价值函数greedy-policy的方向更新,不走弯路。③如果当前里收敛点较远的话,收敛速度也不会慢,因为NPG算法里的NG天生就是以最大化目标函数的结果为搜索方向,而一般来说离收敛点较远的时候,performance的提高反倒会很迅猛。

  5. NPG算法区别于PG算法最大的地方在于,NPG就好像最速下降法一样,知道自己该阶段应该到达的最佳位置(准确的说应该是估计的最佳位置,因为NPG仍是基于采样的算法),而PG算法的学习率通常是人为设置的,因此PG该阶段所到达的位置肯定是不尽如人意的,有时候确实在提升,但可能提升幅度很小,可能NPG一步到位,PG要分好几步来做,造成收敛速度慢,有时候学习率太大,反倒过头了,就会造成收敛过程回环曲折,更加减缓了收敛速度。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: matlab中的npg函数是一个基于模拟退火算法的全局优化函数。它被用来寻找给定约束条件下的最小值或最大值。 npg函数的使用格式为: x = npg(fun,x0,A,b,Aeq,beq,lb,ub,options) 其中,fun是用户定义的目标函数;x0是初始猜测解;A和b定义了线性不等式约束条件;Aeq和beq定义了线性等式约束条件;lb和ub定义了变量的上下界;options是一个结构体,包含了算法的相关参数设置。 npg函数首先使用模拟退火算法进行优化,然后使用局部搜索算法来细化结果。这个函数使用了随机性来探索解空间,并以一定概率接受劣解,从而避免陷入局部最优解。 在调用npg函数时,我们需要根据具体的问题设置好目标函数和约束条件。目标函数应是连续可导的,并且返回一个标量值。约束条件可以包括线性不等式约束、线性等式约束、变量的上下界等。我们还可以通过调整参数options来控制算法的收敛速度和结果的准确性。 总之,npg函数是matlab中的一个全局优化函数,它基于模拟退火算法来寻找给定约束条件下的最小值或最大值。通过合理设置目标函数和约束条件,并调整算法的参数,我们可以得到较好的优化结果。 ### 回答2: npg函数在MATLAB中是一个用于计算NPG(Normalized Power Gained)的函数。NPG是一种用于评估机械系统动力学特性的指标。它与系统的阻尼特性有关,可以用于评估系统的稳定性和性能。 在MATLAB中,使用npg函数可以计算给定系统的NPG值。该函数需要提供系统的传递函数作为输入参数。传递函数是描述输入和输出之间关系的数学模型。通过传递函数,可以确定系统的动态特性,如频率响应和阻尼比。 npg函数根据传递函数计算系统的固有频率和阻尼比,并使用这些值来计算NPG值。NPG值越大,表示系统在运行过程中获得的能量越高,系统更加稳定。 使用npg函数可以帮助工程师和研究人员评估系统的动力学特性,并根据需要进行调整和优化。该函数在MATLAB中提供了一种方便的方式来计算和分析系统的NPG值。 ### 回答3: matlab中的npg函数是用来计算矩阵中每个元素的非负公差的函数。NPG是Non-negative Partial Gradient的缩写,意为非负部分梯度。在计算机科学和数学领域,梯度是指一个函数的变化率或斜率。在图像处理和优化问题中,梯度可以帮助我们确定最佳的方向和步长。然而,在某些情况下,我们希望限制梯度的取值范围在非负数之间,以保持数据的特定性质和约束。这种情况下,就可以使用matlab中的npg函数。 npg函数的输入参数为一个矩阵,输出为一个与输入矩阵相同大小的矩阵,其中每个元素的值为相应元素的非负梯度值。具体来说,对于输入矩阵中的每个元素,npg函数会计算其梯度值,并将其限制在非负范围内。如果原始元素大于零,则输出元素与原始元素相同;如果原始元素小于零,则输出元素为零。因此,npg函数可以帮助我们处理那些需要梯度的问题,但又需要限制梯度的正负性的情况。 使用npg函数的示例代码如下: ```matlab A = [-1 2 -3; 4 -5 6; -7 8 -9]; % 输入矩阵 B = npg(A); % 计算矩阵A的非负梯度 disp(B); % 输出非负梯度矩阵 ``` 以上示例代码中,输入矩阵A包含了正负数,通过调用npg函数得到的矩阵B则只包含非负数。可以看到,输出矩阵中负数元素都被替换为零,而正数元素与输入矩阵中相同。 总之,matlab中的npg函数提供了一种计算矩阵非负梯度的方法,它能够帮助处理那些需要限制梯度正负性的问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值