策略搜索(强化学习方法)
为了解决这个问题,我们可以直接去寻找策略,而不是通过值函数来导出策略,这种直接学习策略的方法称为基于策略函数(Policybased)的方法。我们一般直接在策略空间中搜索得到最优策略,该方法称为策略搜索(Policy Search)。
策略梯度
在策略搜索中,可以使用基于梯度的方式来优化策略,这种方法称为策略梯度(Policy Gradient)。假设策略函数为 πθ=(a|s),θ 为这个函数的参数,目标函数则可定义为:J(θ)=∫Pθ(τ)R(τ)dτ
有了目标函数 J(θ),可以使用梯度上升的方法来优化参数 θ 使得目标函数 J(θ) 增大,梯度就是函数 J(θ) 关于参数 θ 的导数,即
上式中 G(τt:T) 是从起始时刻 t 直至结束后得到的累积奖励。
Monte Carlo Policy Gradient 算法
在前面介绍蒙特卡罗方法的时候介绍过,期望可以通过采样的方法近似。对于当前的策略 πθ,可以通过让智能体在环境中运行,得到多条运动轨迹。对于每一条运动轨迹,可以计算每个时刻的梯度,将得到的梯度乘以一个学习率用来更新参数。这就是 Monte Carlo Policy Gradient 算法(或称 REINFORCE 算法),伪代码如下所示:
Input: a differentiable policy parameterization πθ(a|s)
Initialize policy parameter θ
Repeat:
Generate an episode τ: S0, A0, R1,···,ST-1, AT-1, RT, following πθ(a|s)
For each step of the episode t = 0, ···, T-1:
G ← return from step t
θ←θ+αγtG(τt:T)(∂/∂θ)logπθ(at|st)
End
Until θ is converged
Output: πθ
Actor-Critic 算法
Actor-Critic 算法在 Monte Carlo Policy Gradient 算法中,只有每次都要走完一条完整的轨迹才能得到累积奖励,我们希望像时序差分方法一样,可以实现单步更新。Actor-Critic 算法是一种结合了策略梯度和时序差分的强化学习方法。在 Actor-Critic 算法中,既要学习策略 πθ(a|s),同时还要学习值函数 Vφ(s),伪代码如下所示:
Input: a differentiable policy parameterization πθ(a|s)
Input: a differentiable state-value parameterization V∅(s)
Repeat:
Initialize state s
λ=1
Repeat:
On state s, choose an action a = πθ(a|s)
Execute a, get reward r and new state s'
δ←r+γV∅(s')-V∅(s)
∅←∅+βλδ(∂/∂∅)V∅(s) #更新值函数的参数
θ←θ+βλδ(∂/∂θ)logπθ(a|s) #更新策略函数的参数
λ←γλ
s←s'
until s is terminal
until θ is converged
Output: πθ