强化学习基础知识笔记[7] - Policy Gradient

参考资料
[1] 强化学习进阶 第六讲 策略梯度方法
本文主要是对该资料学习的笔记,并且加入了一些自己的想法,如有错误欢迎指出。

Value based 与 Policy based

Value based

值函数方法包括策略评估与策略改善两个步骤。最典型的为前面学习的DQN方法。

其优化目标为:

  1. 寻找最优θ,拟合值函数 Q θ ( s , a ) Q_{\theta}(s,a) Qθ(s,a)(策略评估);
  2. 在值函数基础上选择最佳策略 a r g m a x a Q θ ( s , a ) argmax_a Q_{\theta}(s,a) argmaxaQθ(s,a)(贪婪策略,策略改善)。

当值函数为最优时策略也是最优的。这种方法得到的策略为状态空间到有限集动作空间的映射。策略空间受限。

该方法需要迭代计算值函数,再根据值函数优化策略。

Policy based

策略方法时将策略参数化,建立 π θ ( s ) \pi_{\theta}(s) πθ(s),利用参数化的线性函数或非线性函数表示策略。策略空间可以很大或者连续。

其优化目标为:寻找最优θ, m i n   E [ ∑ t = 0 N R ( s t ) ∣ π θ ] min \ E\lbrack \sum_{t=0}^{N}R(s_t)|\pi_{\theta} \rbrack min E[t=0NR(st)πθ]

该方法直接迭代计算策略函数。

优缺点比较

Policy based与Value based相比优点有:

  1. 策略参数化简单,收敛性更好;
  2. 可以求解连续或者很大的动作空间;
  3. 采用随机策略,将探索直接集成到策略之中;

Policy based与Value based相比缺点有:

  1. 容易收敛到局部最小值;
  2. 评估单个策略并不充分,方差较大;

策略搜索方法

分类


本节笔记策略梯度方法中的内容。

策略梯度

用τ表示一组状态-行为序列: s 0 , u 0 , ⋯   , s H , u H s_0, u_0, \cdots , s_H, u_H s0,u0,,sH,uH,该序列长度为H。

该序列回报为:
R ( τ ) = ∑ t = 0 H R ( s t , u t ) R(\tau)=\sum_{t=0}^{H}R(s_t , u_t) R(τ)=t=0HR(st,ut)

轨迹τ出现概率记为: P ( τ ; θ ) P(\tau;\theta) P(τ;θ),θ为参数。

目标函数记为:
U ( θ ) = E ( ∑ t = 0 H R ( s t , u t ) ; π θ ) = ∑ τ P ( τ ; θ ) R ( τ ) (1) U(\theta) = E(\sum_{t=0}^{H}R(s_t , u_t);\pi_{\theta}) = \sum_{\tau}P(\tau;\theta)R(\tau) \tag{1} U(θ)=E(t=0HR(st,ut);πθ)=τP(τ;θ)R(τ)(1)

强化学习目标为:
m a x θ U ( θ ) = m a x θ ∑ τ P ( τ ; θ ) R ( τ ) max_{\theta} U(\theta) = max_{\theta} \sum_{\tau}P(\tau;\theta)R(\tau) maxθU(θ)=maxθτP(τ;θ)R(τ)

求解该优化问题采用梯度下降法:
θ n e w = θ o l d + α ∇ θ U ( θ ) \theta_{new} = \theta_{old} + \alpha \nabla_{\theta}U(\theta) θnew=θold+αθU(θ)

经过推导,由m条已知的轨迹求解策略梯度公式为:
∇ θ U ( θ ) ≈ 1 m ∑ i = 0 m ∇ θ l o g P ( τ ; θ ) R ( τ ) ≈ 1 m ∑ i = 1 m ( ∑ t = 0 H ∇ θ l o g π θ ( u t ( i ) ∣ s t ( i ) ) R ( τ ( i ) ) ) (2) \begin{aligned} \nabla_{\theta}U(\theta) & \approx \frac{1}{m}\sum_{i=0}^{m}\nabla_{\theta}logP(\tau;\theta)R(\tau) \\ & \approx \frac{1}{m}\sum_{i=1}^{m} \left( \sum_{t=0}^{H}\nabla_{\theta}log\pi_{\theta}(u_{t}^{(i)}|s_{t}^{(i)})R(\tau^{(i)}) \right) \end{aligned} \tag{2} θU(θ)m1i=0mθlogP(τ;θ)R(τ)m1i=1m(t=0Hθlogπθ(ut(i)st(i))R(τ(i)))(2)

其中:

  • ∇ θ l o g P ( τ ; θ ) \nabla_{\theta}logP(\tau;\theta) θlogP(τ;θ)为轨迹τ下logP随参数θ变化最陡的方向,沿着该方向更新θ会增大选取轨迹τ的概率;
  • R ( τ ) R(\tau) R(τ)控制更新θ的程度,为正且越大则选择该轨迹的概率越大,反之亦然;
  • m为路径条数;H为每个路径状态数;
  • π θ ( u t ( i ) ∣ s t ( i ) ) \pi_{\theta}(u_{t}^{(i)}|s_{t}^{(i)}) πθ(ut(i)st(i))为给定状态s下按参数为θ的策略选择u的概率,关于θ的函数;
  • R ( τ ( i ) ) R(\tau^{(i)}) R(τ(i))为第i条路径的累计回报;

小结
策略梯度优化会增加高回报路径的概率,减小低回报路径的概率。
同时,策略 π θ ( u ∣ s ) \pi_{\theta}(u|s) πθ(us)是一个以θ为参数,s为输入的函数,输出为各状态的选择概率!其参数更新方式为梯度下降,很自然想到使用神经网络进行方便的求解!只要给定多组轨迹,即可根据(2)更新参数。

(2)存在的问题:梯度是无偏的,但方差很大!
解决方法:引入常数基线b:

请添加图片描述
请添加图片描述

修改后的方法应用方式仍然不变:根据轨迹数据,带入公式进行计算求解。

采用神经网络的实现思路

这里假定动作空间是有限的。

神经网络设计

梯度策略算法中未修正方差的策略梯度为:
∇ θ U ( θ ) ≈ 1 m ∑ i = 1 m ( ∑ t = 0 H ∇ θ l o g π θ ( u t ( i ) ∣ s t ( i ) ) R ( τ ( i ) ) ) (3) \nabla_{\theta}U(\theta) \approx \frac{1}{m}\sum_{i=1}^{m} \left( \sum_{t=0}^{H}\nabla_{\theta}log\pi_{\theta}(u_{t}^{(i)}|s_{t}^{(i)})R(\tau^{(i)}) \right) \tag{3} θU(θ)m1i=1m(t=0Hθlogπθ(ut(i)st(i))R(τ(i)))(3)

其中策略 π θ ( u t ( i ) ∣ s t ( i ) ) \pi_{\theta}(u_{t}^{(i)}|s_{t}^{(i)}) πθ(ut(i)st(i))使用神经网络实现,该网络输入为:状态s时的特征向量,输出为各个动作的概率分布,网络示意如下:

请添加图片描述

假定如下:

  • 输入特征向量维数为6;
  • 可用动作数量为4,输出还需经过softmax层处理!

经过softmax处理后,神经网络输出为在当前输入的特征向量下,选取各个动作的概率!

策略选择

在探索过程中,给定环境特征s下得到的是当前各个动作选择的概率,agent根据该概率随机选择动作。

训练方法

探索阶段
采用参数 θ o l d \theta_{old} θold作为策略参数,在进行多个episode的探索获得多条样本轨迹,设第i条为: s 0 ( i ) , u 0 ( i ) , r 0 ( i ) ⋯   , s H ( i ) , u H ( i ) , r H ( i ) s^{(i)}_0, u^{(i)}_0, r^{(i)}_0 \cdots , s^{(i)}_H, u^{(i)}_H, r^{(i)}_H s0(i),u0(i),r0(i),sH(i),uH(i),rH(i)

优化阶段
定义损失函数:
L = − ∫ p o l d l o g q π θ Q ( s , a ) (4) L = -\int p_{old}logq_{\pi_{\theta}}Q(s,a) \tag{4} L=poldlogqπθQ(s,a)(4)

其中:

  • − ∫ p o l d l o g q π θ -\int p_{old}logq_{\pi_{\theta}} poldlogqπθ为实际动作选择分布与策略概率分布的交叉熵;
    • p o l d p_{old} pold为实际选择的动作,如[0 0 1];
    • q π θ q_{\pi_{\theta}} qπθ为当前状态s下预测各动作的概率,如[0.1 0.5 0.4]
  • Q ( s , a ) Q(s,a) Q(s,a)为当前状态s下实际采取动作a后的累计回报函数;

利用该损失函数,即可对神经网络应用反向传播计算参数梯度并更新参数。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值