Actor-Critic强化学习教程

来源:互联网 发布:软件开发过程检测规范 编辑:程序博客网 时间:2024/05/18 01:18

注:actor以及critic可以分别看作是policy以及value function的同义词。
Actor-Critic算法是目前一个非常流行常用的强化学习算法,广泛应用于机器人,能源,经济等领域。通过low-variance(低方差)以及policy gradient(策略梯度)在线搜索最优策略,可以处理连续的state(状态)以及连续的action(行为)。
强化学习的方法可以分为以下三种:
(1)actor-only:将policy参数化,可以再算法过程中直接优化,因此action可以是连续的。优化方法通常为policy gradient方法,该方法的缺点为在估计梯度的时候将会产生较大的方差,导致学习速度较慢。
(2)critic-only:使用temporal difference(时间差分法)学习方法,估计过程中方差小。通常greedy (贪心算法)或者ε-greedy(ε贪心算法)。ε-greedy可以有效的平衡exploration-exploitation的关系,既能探索新的action又能利用原有的经验生成最优的action,这里不详细介绍greedy,通过greedy算法搜索最优action的计算量非常大,尤其是action是连续的情况下。因此,critic-only通常连续的action进行离散化,将优化问题变为一个枚举问题。
(3)actor-critic:整合了上述两个方法的优点。低方差,连续action。critic对当前的state以及action的表现进行估计,得到value function,用来给actor更新梯度。低方差的代价是在学习开始时,由于critic的估计不够准确而使算法具有较大偏差。policy-gradient占了该算法的绝大部分,其中可以分为两种standard gradient以及natural gradient,另一部分为更新actor。
下面的讲解会用到马尔科夫决策过程的基本知识,这里不对其进行讲解,直接使用。在现实项目中,状态state以及行为action大多都是连续的,因此不可能保存大量的value function 以及 policy,因此大多是的强化学习方法采用function approximators(函数逼近)来确定value function 以及 policy,以至于能够覆盖整个state以及action空间。
下面首先介绍critic-only算法,该算法主要讲解非常重要的policy gradient方法。

  • critic-only
    典型的critic-only算法有——Q-learning,SARSA。使用state-action value function,没有一个关于policy的函数,该方法通过在线迭代Bellman方程的方法逼近value function,然后通过greedy方法选取使收益最大的最优action。

  • actor-only
    使用policy gradient,不需要存储value function。actor-only使用参数化的policy函数,直接优化cost function(定义如下)。
    cost function
    actor-only较critic-only的优势为,允许policy直接生成action在完整的连续空间。将π参数化,参数向量花θ,得到policyπθ
    πθ花θ求导,并带入Jπ的倒数,可得。
    J导
    右上式可以得到每一步J的梯度方向,通过梯度上升法,可以得到πθ的参数的更新值。
    这里写图片描述
    aak是一个非常小的学习速率,最终可以使Jk+1>Jk
    由于采用梯度下降法,actor-only具有非常强大的收敛特性。学习速率通常有以下设定。
    这里写图片描述
    但采用上述方法会产生非常大的方差, 并且没有利用以前的知识。

  • actor-critic
    类似actor-only,可以处理连续的action。通过增加critic,可以减小方差值。critic的作用是评价当前action的质量好坏。评价方法可以采用目前比较常用的方法,例如TD(λ)、LSTD、residual gradient。critic通过采样的方式逼近更新value function,value function沿着最大收益方向更新policy的参数。policy通常使用非常小的步长沿着policy gradient 的方向更新policy,因此value function将以非常微小的影响来更新policy,以避免产生振荡。action-critic的结构图如下。
    action-critic结构图
    由上图,学习算法可以分为两部分,其一为actor,用来估计policy生成action(u),另一为critic,用来估计value function。actor根据当前的状态state(x)生成一个控制action(u)。critic用来处理收到的reward(r),评估当前action的质量并更新value function。
    使用value function θ将value function参数化,若为线性,则客表示如下:
    V Q 参数化
    同理将,policy(π)使用花theta参数化参数化pai,此处π表示的不是每个action的概率密度,而是直接从state到action的映射。
    critic的目标为精确地估计一个policy的Bellman equation。通常采用temporal difference(TD)来更新critic,Bellman function的左右两边的差值被定义为temporal difference error,针对一个状态转移过程状态转移集合,TD error 如下,TD error为正,表明未来选择该action的倾向被加强,如果TD error为负,表明未来选择action的倾向被削弱。
    TD error
    采用梯度法更新value function的参数如下。
    这里写图片描述
    由于前文假设为线性函数,因此上式可以表示为。
    这里写图片描述
    以上TD算法被称为TD(0)算法,该算法没有利用eligibility traces,eligibility trace 可以更好的利用之前step的信息来更好的估计value function。eligibility trace 可以在时刻k关于q个特征参数的向量被定义为zk,其更新律为。
    zk更新律
    依赖衰减率衰减率随着时间不断衰减,λ范围,则
    eligible θ 更新律
    因此在使用eligibility trace的情况下,actor-critic的所有更新律为:
    actor-critic更新律
    此处的J将使用V替代。

原创粉丝点击