Dpg

基于值和基于策略的强化学习

  • 基于值
    • 学习到的值函数
    • 隐式的策略(如 $\epsilon$-贪婪)
  • 基于策略
    • 不使用值函数
    • 学习到的策略
  • Actor-Critic
    • 学习到的值函数
    • 学习到的策略
      优势:
  • 更好的收敛属性
  • 高维或者连续行动空间
  • 可以学习随机策略
    劣势:
  • 通常会收敛于一个局部最优点(而非全局最优)
  • 衡量策略通常低效和高方差

策略目标函数

  • 目的:给定策略 $\pi_\theta(s,a)$ 参数为 $\theta$,找到最优 $\theta$
  • 但是我们如何衡量策略 $\pi_\theta$ 的质量?
  • 在片段式环境中,我们使用开始值
    $$J_1(\theta) = V^{\pi_\theta}(s_1) = \mathbb{E}_{\pi_\theta}[v_1]$$
  • 在持续式环境我们可以使用平均值
    $$J_{avV}(\theta) = \sum_{s}d^{\pi_\theta}(s)V^{\pi_\theta}(s)$$
  • 或者使用每时间步的平均奖励
    $$J_{avR}(\theta) = \sum_{s}d^{\pi_\theta}(s) \sum_{a} \pi_\theta(s,a) \mathcal{R}_{s}^{a}$$
  • 其中 $d^{\pi_\theta}(s)$ 是 $\pi_\theta$ 的马尔科夫链的稳定分布

策略优化

  • 基于策略的强化学习其实就变成了优化问题
  • 找到 $\theta$ 最大化 $J(\theta)$
  • 存在一些不用梯度的方法
    • Hill climbing
    • Simplex / amoeba / Nelder Mead
    • Genetic algorithms
  • 使用梯度常会提升效率
    • 梯度下降
    • 共轭梯度
    • Quasi-newton
  • 我们主要讲梯度下降,可以有很多扩展
  • 并且只针对开发序列结构的方法

策略梯度

  • 令 $J(\theta)$ 为任意策略目标函数
  • 策略梯度算法通过上升策略关于参数 $\theta$ 的梯度来搜索其一个局部最大值
    $$\Delta\theta = \alpha \nabla_\theta J(\theta)$$
  • 其中 $\nabla_\theta J(\theta)$ 是策略梯度
    $$\nabla_\theta J(\theta) = \begin{pmatrix} \frac{\partial J(\theta)}{\partial \theta_1} \\
    \vdots \\
    \frac{\partial J(\theta)}{\partial \theta_n}
    \end{pmatrix}$$
  • 其中 $\alpha$ 是步长参数

使用有限差异(Finite Differences)计算梯度

  • 来衡量 $\pi_\theta(s,a)$ 的策略梯度
  • 对每个维度 $k \in [1,n]$
    • 估计目标函数关于 $\theta$ 的第 $k$ 个偏导数
    • 在第 $k$ 维以小的量 $\epsilon$ 微调 $\theta$
      $$\frac{\partial J(\theta)}{\partial \theta_k} \approx \frac{J(\theta + \epsilon u_k) - J(\theta)}{\epsilon}$$
      其中 $u_k$ 是单位向量,第 $k$ 维元素为 $1$,其他为 $0$
  • 使用 $n$ 个评估来计算 $n$ 个维度的策略梯度
  • 简单、有噪声、低效 - 但有时候实用
  • 对任意策略有效,甚至不可微的策略

计分函数

  • 我们现在解析的方式来计算策略梯度
  • 假设策略 $\pi_\theta$ 在非零处可微分
  • 我们知道梯度 $\nabla_\theta \pi_{\theta}(s,a)$
  • 似然比例利用了下面的等式

\begin{array} {lcl} \nabla_\theta \pi_{\theta}(s,a) & = & \pi_{\theta}(s,a) \frac{\nabla_\theta \pi_{\theta}(s,a)}{\pi_\theta(s,a)} \\ & = & \pi_{\theta}(s,a) \nabla_\theta \log \pi_{\theta}(s,a)
\end{array}

  • 计分函数为 $\nabla_\theta \log \pi_\theta(s,a)$

Powered by Hexo and Hexo-theme-hiker

Copyright © 2013 - 2017 Universality All Rights Reserved.

UV : | PV :