2 spinup-TRPO

在更新策略过程中最大化性能提升的步长, 并使用KL散度限制新旧策略的分布不要偏离的太远.

与标准PG的区别:

  • PG的新旧策略在参数空间距离很近; 但是即使参数空间距离很近, 也不能保证策略或性能离得近.所以PG算法中, 某一步的策略不好, 可能导致整个算法崩溃.
  • 同时PG算法样本效率低, 因为它不能使用比较大的步长
  • TRPO使用重要性采样避免了性能函数崩溃, 同时倾向于更平滑的性能提升.

综上, TRPO性质:

  • on-policy, 随机策略算法
  • 适应离散和连续动作空间
  • 可以支持并行化

1. 关键公式

TRPO更新公式为

θk+1=argmaxθL(θk,θ)s.t.D¯KL(θθk)δ \begin{aligned} \theta_{k+1} = \arg \max_{\theta} \; & {\mathcal L}(\theta_k, \theta) \\ \text{s.t.} \; & \bar{D}_{KL}(\theta || \theta_k) \leq \delta \end{aligned}

其中 L(θk,θ){\mathcal L}(\theta_k, \theta) 称为surrogate advantage, 衡量新旧策略相对性能. DKLD_{KL}为平均KL散度.

L(θk,θ)=Es,aπθk[πθ(as)πθk(as)Aπθk(s,a)] \mathcal{L}(\theta_k, \theta) = E_{s, a \sim \pi_{\theta_k}} \left[ \frac{\pi_{\theta}(a|s)}{\pi_{\theta_k}(a|s)} A^{\pi_{\theta_k}}(s, a)\right]

  1. 当新旧策略相同时, 目标函数和约束项都为0
  2. 当新旧策略相同时, 约束项相对于theta的梯度为0

2 更新

TRPO将目标函数和约束项进行泰勒展开, 然后使用函数近似进行更新:

L(θk,θ)gT(θθk)D¯KL(θθk)12(θθk)TH(θθk) \begin{aligned} {\mathcal L}(\theta_k, \theta) &\approx g^T (\theta - \theta_k) \\ \bar{D}_{KL}(\theta || \theta_k) & \approx \frac{1}{2} (\theta - \theta_k)^T H (\theta - \theta_k) \end{aligned}

得到如下近似的带约束优化问题:

θk+1=argmaxθgT(θθk)s.t.12(θθk)TH(θθk)δ. \begin{aligned} \theta_{k+1} = &\arg \max_{\theta} \; g^T (\theta - \theta_k) \\ \text{s.t.} \; & \frac{1}{2} (\theta - \theta_k)^T H (\theta - \theta_k) \leq \delta. \end{aligned}

其中gg是surrogate advantage函数在θ=θk\theta=\theta_k处的梯度, 等于策略梯度θJ(πθ)\triangledown_{\theta} J(\pi_{\theta})

3. 解析求解, 使用拉格朗日对偶公式

θk+1=θk+2δgTH1gH1g. \begin{aligned} \theta_{k+1} = \theta_k + \sqrt{\frac{2 \delta}{g^T H^{-1} g}} H^{-1} g. \end{aligned}

上述公式就是 Natural Policy Gradient的求解公式. 但是问题是:

  1. 由于泰勒展开引入的函数逼近误差可能导致上述更新不满足KL约束, 也有可能不满足性能提升的目的

    • TRPO使用如下更新规则: a backtracking line search(回溯线性搜索)

    θk+1=θk+αj2δgTH1gH1g, \begin{aligned} \theta_{k+1} = \theta_k + \alpha^j \sqrt{\frac{2 \delta}{g^T H^{-1} g}} H^{-1} g, \end{aligned}

    其中, α(0,1) \alpha \in (0, 1)是回溯因子, jj表示满足KL约束并产生正surrogate advantage的最小的非负整数.

  2. 使用神经网络逼近时, 矩阵求逆运算复杂度太高.

    • TRPO使用共轭梯度算法( conjugate gradient, CG).
    • 通过计算Hx=gHx = g 代替计算 x=H1gx = H^{-1} g, 只用计算一个矩阵-向量的乘积就行, 不用存储整个矩阵H. Hx=θ((θD¯KL(θθk))Tx), \begin{aligned} Hx = \nabla_{\theta} \left( \left(\nabla_{\theta} \bar{D}_{KL}(\theta || \theta_k)\right)^T x \right), \end{aligned}

4 伪代码

TRPO是on-policy, 随机策略算法, 对最新策略抽样得到动作. 动作选择的随机性取决于初始条件和训练过程. 随着训练随机性下降, 可能陷入局部最优

create By cicoa            此页面修订于: 2022-06-28 03:15:43

results matching ""

    No results matching ""