Java教程

强化学习笔记(5)-回合策略梯度算法

本文主要是介绍强化学习笔记(5)-回合策略梯度算法,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

以下为阅读《强化学习:原理与python实现》这本书第七章的学习笔记。

在之前学习到的强度学习方法中,都是通过学习最优价值函数来获得最优策略。现在换一个角度来思考,我们可以通过用含参函数来近似最优策略,并在迭代中更新参数值,这就是策略梯度算法。

用函数近似方法估计最优策略\pi_{*}(a|s)的基本思想是用含参函数\pi(a|s;\theta )来近似最优策略。由于任意策略\pi都需要满足对于任意的状态s\in S,均有\sum_{a}^{}\pi(a|s)=1,我们也希望\pi(a|s;\theta )满足对于任意的s\in S,均有\sum_{a}^{}\pi(a|s;\theta)=1。为此我们可以引入动作偏好函数h(s,a;\theta),使得

\pi(a|s;\theta)=\frac{exp h(s,a;\theta)}{\sum_{a'}^{}exp h(s,a';\theta)} , s\in S, a\in A(s)

动作偏好函数可以具有线性组合或神经网络等多种形式,通过基于梯度的迭代算法来更新参数\theta,就可以得到最优状态估计。

策略梯度定理

策略梯度定理给出了期望回报和策略梯度之间的关系,是策略梯度方法的基础

在回合制任务中,策略\pi(\theta)期望回报可以表示为E_{\pi(\theta)}[G_{0}],策略梯度定理给出了它对策略参数\theta的梯度为

\triangledown E_{\pi(\theta)}[G_{0}]=E\left [\sum_{t=0}^{+\infty } \gamma^{t}G_{t}\triangledown ln\pi(A_{t}|S_{t};\theta) \right ]

 策略梯度定理告诉我们,只要知道了\triangledown ln\pi(A_{t}|S_{t};\theta)的值,就可以得到期望回报的梯度。因此我们可以顺着梯度的方向改变\theta以增大期望回报。

简单的策略梯度算法

在每一个回合结束后,我们可以就回合中的每一步用以下公式来更新参数\theta,这样的算法称为简单的策略梯度算法:

\theta_{t+1}\leftarrow \theta_{t}+\alpha \gamma^{t}G_{t}\triangledown ln\pi(A_{t}|S_{t};\theta), t=0,1,...

算法如下

输入:环境,策略\pi

输出:最优策略的估计\pi(\theta)

参数: 优化器(隐含学习率\alpha),折扣因子\gamma,控制回合数和回合内步数的参数

1. (初始化)\theta\leftarrow任意值

2.(时序差分更新)对每个回合执行以下操作

2.1(采样)用策略\pi(\theta)生成轨迹S_{0},A_{0},R_{1},S_{1},...,S_{T-1},A_{T-1},R_{T},S_{T}

2.2(初始化回报)G\leftarrow 0

2.3 对t=T-1, T-2,...,0,执行以下步骤:

2.3.1(更新回报)G\leftarrow \gamma G+R_{t+1}

2.3.2(更新策略)更新\theta以减小-\gamma^{t}Gln\pi(A_{t}|S_{t};\theta), 如\theta\leftarrow \theta+\alpha \gamma^{t}G\triangledown ln\pi(A_{t}|S_{t};\theta)

这篇关于强化学习笔记(5)-回合策略梯度算法的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!