3 策略学习

本章我们将用一个神经网络来近似策略函数,这个神经网络叫做policy network,用于控制agent的运动,我们将使用policy gradient算法来训练这个网络。

用神经网络近似策略函数π(a|s)

1 策略网络

考虑离散动作空间,比如A = {左, 右, 上}。策略函数π定义为:

策略函数π 的输入是状态s 和动作a,输出是一个0 到1 之间的概率值。举个例子,把马里奥游戏当前屏幕上的画面作为s,策略函数会输出每个动作的概率值:

有了三个概率值,agent会进行一次随机抽样,得到动作a,但是动作“左”被抽到概率最大。

如果我们有这样一个策略函数,我们就可以拿它控制智能体。每当观测到一个状态s,就用策略函数计算出每个动作的概率值,然后做随机抽样,得到一个动作a,让智能体执行a。

那么如何得到策略函数呢?

如果状态数和动作空间都很小,我们便可以用一张表格对其进行记录, 但是对于类似马里奥游戏,其状态数相当大,因此我们需要学习一个函数来近似策略函数,这个函数我们用policy network来近似:

其中,θ是神经网络的参数,一开始是随机初始化的,通过学习来更新。

在马里奥游戏中,我们可以使用如下的神经网络:

其中,策略π需要满足:

回忆一下上节中状态价值函数的定义:

我们将Vπ中的策略函数π替换为神经网络,即:

2 策略学习的主要思想

2.1 主要思想

通过不断改进神经网络参数θ,使得目标函数值越大越好。

2.2 目标函数

状态价值函数进一步可以写为:

我们的目标是通过不断改进模型(学习参数θ ),使得V(s;θ)增大。

因此我们这样定义目标函数:

这里状态s是随机变量,积分积掉后,变量只剩下θ。

这个目标函数排除掉了状态S 的因素,只依赖于策略网络π 的参数θ;策略越好,则J(θ) 越大。所以策略学习可以描述为这样一个优化问题:

那么怎么去改进模型呢?下面介绍策略梯度算法(policy gradient)

2.3 策略梯度算法

注:使用梯度上升,我们要求的是目标函数的最大值。

2.3.1 策略梯度的简单证明

首先介绍简单的证明方法,这个方法不太严谨,但是对于初步理解policy gradient已经足够了~

2.3.2 两种形式的policy gradient

综上,我们得到了两种形式的策略梯度:

如果动作是离散的,例如动作空间A={左、右、上},则使用Form1:

我们对于A集合中的每个动作a,都求一个函数值:

然后求和,即:

但是对于连续动作,我们便无法枚举每个动作。例如A=[0,1]。此时使用form2:

但是A是连续变量,求其期望需要做积分,由于神经网络的复杂性,积分无法实现。因此我们需要一个函数来近似这个期望值。

2.4 蒙特卡洛近似

我们使用蒙特卡洛近似来近似出这个期望值。

具体方法:

1.根据策略π随机抽样一个动作

2.求出下面函数的值(是个确定的值)。

很显然:

因此,g函数是,是 的一个无偏估计。因此可以用g函数来近似期望值。

3 策略梯度算法

总结:

此时,还存在一个问题:我们并不知道Qπ,那么怎么计算

方法1:REINFORCE算法

1.用策略网络来控制agent运动,从一开始一直玩到游戏结束,我们可以得到一条游戏轨迹:

2.计算所有的回报:

由于 ,因此我们可以使用ut来近似Qπ(st,at)。也就是说用观测到的ut来代替Qπ函数。

3.用(st, at) 作为数据,做反向传播计算:

4.做随机梯度上升更新策略网络参数:

方法2:用一个神经网络来做函数近似

这就有了两个神经网络,也就是actor-critic算法,将在下一讲进行介绍。

本章中的代码正在整理中。

猜你喜欢

转载自blog.csdn.net/weixin_45985148/article/details/125303843