zoukankan      html  css  js  c++  java
  • 强化学习读书笔记

    强化学习读书笔记 - 12 - 资格痕迹(Eligibility Traces)

    学习笔记:
    Reinforcement Learning: An Introduction, Richard S. Sutton and Andrew G. Barto c 2014, 2015, 2016

    参照

    需要了解强化学习的数学符号,先看看这里:

    资格迹(Eligibility Traces)

    如何理解资格迹

    资格迹是一个向量,称为eligibility trace vector。
    强化学习是找最优策略(pi_*)
    最优策略(pi_*)等价于最优行动(pi_*(s))
    最优行动(pi_*(s))可以由最优状态价值(v_*(s))(或者最优行动价值(q_*(s, a)))决定。
    如果把(v_*(s))(或者(q_*(s, a)))看成一个函数,因此:强化学习变成了求这个函数。

    在近似方法中(v_*(s))(或者(q_*(s, a)))表示为近似预测函数(hat{v}(s, heta))(或者近似控制函数(hat{q}(s, a, heta)))。
    以近似预测函数(hat{v}(s, heta))为例:

    [hat{v} doteq heta^T phi(s) ]

    (phi(s))可以认为是固定的。它是将状态变成一个计算向量的方法。
    因此,求近似预测函数(hat{v}(s, heta)),就是求解权重向量( heta)
    求权重向量( heta)是通过梯度下降的方法。比如:

    [delta_t = G_t - hat{v}(S_t, heta_t) \ heta_{t+1} = heta_t + alpha delta_t abla hat{v}(S_t, heta_t) ]

    这里面,有三个元素:(alpha, G_t, abla hat{v}(S_t, heta_t))。每个都有自己的优化方法。

    • (alpha)是学习步长
      要控制步长的大小。一般情况下步长是变化的。比如:如果误差(delta_t)变大了,步长要变小。
    • (G_t)的计算
      可以通过本章的(lambda) - return方法。
    • ( abla hat{v}(S_t, heta_t))
      可以通过资格迹来优化。资格迹就是优化后的函数微分。
      为什么要优化,原因是在TD算法中(hat{v}(S_t, heta_t))是不精确的。
      (G_t)也是不精确的。

    (lambda) - return

    (lambda) - return 提供了一个新的方式来估算(G_t),这个新的估值为(G_t^{lambda})
    它是由它后面的所有(G_t^{(n)})的加权平均值。
    从下面的公式可以看出,这个方法可以用于连续性任务和情节性任务。

    [G_t^{(n)} doteq R_{t+1} + gamma R_{t+2} + dots + gamma^{n-1} R_{t+n} + gamma^n hat{v}(S_{t+n}, heta_{t+n-1}) , 0 le t le T-n \ ext{Continuing tasks: } \ G_t^{lambda} doteq (1 - lambda) sum_{n=1}^{infty} lambda^{n-1}G_t^{(n)} \ ext{Episodic tasks: } \ G_t^{lambda} doteq (1 - lambda) sum_{n=1}^{T-t-1} lambda^{n-1}G_t^{(n)} + lambda^{T-t-1}G_t \ where \ lambda in [0, 1] \ (1 - lambda) sum_{n=1}^{infty}lambda^{n-1} = 1 \ (1 - lambda) sum_{n=1}^{T-t-1} lambda^{n-1} + lambda^{T-t-1} = 1 \ ]

    • 算法描述

    Input: the policy (pi) to be evaluated
    Input: a differentiable function (hat{v} : mathcal{S} imes mathbb{R^n} o mathbb{R})

    Initialize value-function weights ( heta) arbitrarily (e.g. ( heta = 0))
    Repeat (for each episode):
      Generate an episode (S_0, A_0, R_1 ,S_1 ,A_1, cdots ,R_t ,S_t) using (pi)
      For (t = 0, 1, cdots, T - 1)
       ( heta gets heta + alpha [color{Red}{G_t^{lambda}} -hat{v}(S_t, heta)] abla hat{v}(S_t, heta))

    比较下面这个算法(第9章的蒙特卡罗方法),红色是不同之处。

    • 算法描述

    Input: the policy (pi) to be evaluated
    Input: a differentiable function (hat{v} : mathcal{S} imes mathbb{R^n} o mathbb{R})

    Initialize value-function weights ( heta) arbitrarily (e.g. ( heta = 0))
    Repeat (for each episode):
      Generate an episode (S_0, A_0, R_1 ,S_1 ,A_1, cdots ,R_t ,S_t) using (pi)
      For (t = 0, 1, cdots, T - 1)
       ( heta gets heta + alpha [color{Red}{G_t} -hat{v}(S_t, heta)] abla hat{v}(S_t, heta))

    可以看出当(lambda=1)的时候,(lambda) - return算法就是蒙特卡罗算法。所以说(lambda) - return算法是蒙特卡罗算法的通用化算法

    (lambda)(gamma)一起控制了n步回报(G_t^{(n)})的权重。

    TD((lambda))

    (e_t) - 第t步资格迹向量(eligibility trace rate)。
    资格迹向量是近似价值函数的优化微分值。
    其优化的技术称为(backward view)。仔细观察公式可以发现(e_t)的算法中包含了以前的微分值。

    • 数学公式

    [e_0 doteq 0 \ e_t doteq abla hat{v}(S_t, heta_t) + gamma lambda e_{t-1} \ delta_t doteq R_{t+1} + gamma hat{v}(S_{t+1}, heta_t) - hat{v}(S_{t}, heta_t) \ heta_{t+1} doteq heta_t + alpha delta_t e_t \ where \ e_t ext{ - eligibility accumulating traces, the estimation differential of } abla hat{v}(S_t, heta) \ delta_t ext{ - the TD error} \ heta_t ext{ - the weighted vector in the approximation value function } hat{v}(S, heta) \ ]

    • 算法描述(Semi-gradient TD((lambda)) for estimating (hat{v} approx v_{pi}))
      请参考原书。

    On-line Forward View

    On-line和off-line的一个区别是off-line的数据是完整的,比如拥有一个情节的所有Return(G)。
    这个导致off-line算法不适合on-line的情景,就是说在完成一个情节前,学习不到任何东西。
    这个章节要开发一个on-line的算法,首先引入一个概念h。
    h(horizon)- 水平线h表示on-line当时可以模拟的数据步骤。(t < h le T)
    没有步骤h之后的数据。

    • h-truncated (lambda)-return

    [G_t^{lambda | h} doteq (1 - lambda) sum_{n=1}^{h-t-1} lambda^{n-1} G_t^{(n)} + lambda^{h-t-1} G_t^{(h-t)}, 0 le t < h le T \ heta_{t+1}^h doteq heta_{t}^h alpha left [ G_t^{lambda | h} - hat{v}(S_t, heta_t^h) ight ] abla hat{v}(S_t, heta_t^h) , 0 le t < h le T \ heta_t doteq heta_t^t \ where \ h ext{ - the horizon, we have the n-step returns up to the the horizon, but beyond the horizon there is no data} ]

    True on-line TD((lambda))

    [e_0 doteq 0 \ e_t doteq gamma lambda e_{t-1} + (1 - alpha gamma lambda e_{t-1}^T phi_t) phi_t \ delta_t doteq R_{t+1} + gamma hat{v}(S_{t+1}, heta_t) - hat{v}(S_{t}, heta_t) \ heta_{t+1} doteq heta_t + alpha delta_t e_t + alpha left ( heta_t^T phi_t - heta_{t-1}^T phi_t ight ) (e_t - phi_t) \ where \ e_t ext{ - eligibility dutch trace, the estimation differential of } abla hat{v}(S_t, heta) \ delta_t ext{ - the TD error} \ heta_t ext{ - the weighted vector in the approximation value function } hat{v}(s, heta) \ hat{v}(s, heta) = heta^T phi(s) \ ]

    • 算法描述(True Online TD((lambda)) for estimating ( heta^T phi approx v_{pi}))
      请参考原书。

    原书还没有完成,这章先停在这里

  • 相关阅读:
    jQuery火箭图标返回顶部代码
    jQuery火箭图标返回顶部代码
    jQuery火箭图标返回顶部代码
    jQuery火箭图标返回顶部代码
    jQuery火箭图标返回顶部代码
    小花梨的三角形(暴力上下扫三角形)
    调手表(bfs)
    Educational Codeforces Round 65 (Rated for Div. 2)(ACD)B是交互题,不怎么会
    C. News Distribution(并查集)
    Codeforces Round #560 (Div. 3)A-E
  • 原文地址:https://www.cnblogs.com/steven-yang/p/6617134.html
Copyright © 2011-2022 走看看