强化学习读书笔记 - 09 - on-policy预测的近似方法

参照

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

这一章开始了第二部门 - 近似解决方案

近似方法的重要性

我们先看看传统方法中存在的问题:

  • 不适用复杂的环境。主要原因是状态和行动太多,策略需要大量空间来记忆策略价值。
  • 环境可能是不稳定的,过去的经验不能适用于未来的情况。需要一个通用性的方法来更新策略价值。
  • 策略价值是一个数值,缺乏通用性。期望有一个通用的方法来计算策略价值。

所以对近似预测方法的理解是,找到一个通用的方法\(\hat{v}(s, \theta)\)。
数学表示
\[
\hat{v}(s, \theta) \approx v_{\pi}(s) \\
where \\
\theta \text{ - a weight vector} \\
\theta \doteq (\theta_1, \theta_2, ..., \theta_n)^T
\]

解释
近似预测方法是指求策略的状态价值的近似值。
求策略的行动状态价值的近似值叫做近似控制方法(Control Methods)(下一章的内容)。

近似预测方法的目标

首先,我们需要找到一个判断近似预测方法质量的计算公式。

价值均方误差(Mean Squared Value Error)
\[
MSVE(\theta) = \sum_{s \in \mathcal{S}} d(s) [v_{\pi} - \hat{v}(s, \theta)]^2 \\
where \\
d(s) \text{ - on-policy distribution, the fraction of time spent in s under the target policy } \pi \\
\]

  • 在情节性任务中
    \[
    \eta(s) = h(s) + \sum_{\bar{s}} \eta(\bar{s}) \sum_{a} \pi(a|\bar{s})p(s|\bar{s}, a), \ \forall s \in \mathcal{S} \\
    d(s) = \frac{\eta(s)}{\sum_{s'} \eta(s')} \\
    where \\
    \eta(s) \text{ - the number of time steps spent in state s in a single episode} \\
    h(s) \text{ - time spent in a state s if episodes start in it}
    \]

  • 在连续性任务中
    \[
    d(s) = \text{ the stationary distribution under } \pi \\
    \]

解释:
\(\eta(s) = h(s) + \sum_{\bar{s}} \eta(\bar{s}) \sum_{a} \pi(a|\bar{s})p(s|\bar{s}, a), \ \forall s \in \mathcal{S}\)
状态s的发生时间(次数) = 在情节中状态s发生在开始的时间(次数) + 状态s发生在其它的时间(次数)

随机梯度递减方法(Stochastic gradient descend method)

那么如何求\(\theta\)呢?一个常见的方法是通过梯度递减的方法,迭代的求解\(\theta\)。

随机梯度递减算法

Stochastic gradient descend
\[
\begin{align}
\theta_{t+1}
& \doteq \theta_{t} - \frac{1}{2} \alpha \nabla [v_{\pi}(S_t) - \hat{v}(S_t, \theta_t)]^2 \\
& = \theta_{t} + \alpha [v_{\pi}(S_t) - \hat{v}(S_t, \theta_t)] \nabla \hat{v}(S_t, \theta_t) \\
\end{align} \\
where \\
\nabla f(\theta) \doteq \left ( \frac{\partial f(\theta)}{\partial \theta_1}, \frac{\partial f(\theta)}{\partial \theta_2}, \cdots, \frac{\partial f(\theta)}{\partial \theta_n} \right )^T \\
\alpha \text{ - the step size, learning rate}
\]

解释
这个方法可以在多次迭代后,让\(\theta\)最优。
\(v_{\pi}(S_t)\)是实际值。
\(\hat{v}(S_t, \theta_t)\)是当前计算值。
随机梯度递减方法通过误差(实际值 - 当前计算值)接近最优值的方法。
比较麻烦的是:如何求\(\nabla \hat{v}(S_t, \theta_t)\)。
传统的方法是求\(v_{\pi}(s), q_{\pi}(s, a)\),在近似方法中变成了求\(\theta, \hat{v}(s, \theta), \hat{q}(s, a,\theta)\)。

蒙特卡洛

  • 算法描述

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

    Initialize value-function weights \(\theta\) arbitrarily (e.g. \(\theta = 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\)
       \(\theta \gets \theta + \alpha [G_t -\hat{v}(S_t, \theta)] \nabla \hat{v}(S_t, \theta)\)

半梯度递减方法(Semi-gradient method)

之所以叫半梯度递减的原因是TD(0)和n-steps TD计算价值的公式不是精确的(而蒙特卡罗方法是精确的)。

半梯度下降(Semi-gradient TD(0))

  • 算法描述

    Input: the policy \(\pi\) to be evaluated
    Input: a differentiable function \(\hat{v} : S^+ \times \mathbb{R^n} \to \mathbb{R}\) such that \(\hat{v}(terminal, \dot \ ) = 0\)

    Initialize value-function weights \(\theta\) arbitrarily (e.g. \(\theta = 0\))
    Repeat (for each episode):
      Initialize \(\mathcal{S}\)
      Repeat (for each step of episode):
       Choose $A \sim \pi(\dot  |S) $
       Take action \(A\), observe \(R, S'\)
       \(\theta \gets \theta + \alpha [R + \gamma \hat{v}(S', \theta) -\hat{v}(S', \theta)] \nabla \hat{v}(S, \theta)\)
       \(S \gets S'\)
      Until \(S'\) is terminal

n-steps TD

请看原书,不做拗述。

特征选择

线性方程的定义

\[
\phi(s) \doteq (\phi_1(s), \phi_2(s), \dots, \phi_n(s))^T \\
\hat{v} \doteq \theta^T \phi(s) \doteq \sum_{i=1}^n \theta_i \phi_i(s)
\]
\(\phi(s)\) 为特征函数
这里讨论特征函数的通用化定义方法。

多项式基(polynomials basis)

\(s\)的每一个维度都可以看成一个特征。多项式基的方法是使用\(s\)的高维多项式作为新的特征。
比如:二维的\(s = (s_1, s_2)\),可以选择多项式为\((1, s_1, s_2, s_1s_2)\)或者\((1, s_1, s_2, s_1s_2, s_1^2, s_2^2, s_1s_2^2, s_1^2s_2, s_1^2s_2^2)\)

多项式基方法的通用数学表达:
\[
\phi_i(s) = \prod_{j=1}^d s_j^{C_{i,j}} \\
where \\
s = (s_1,s_2,\cdots,s_d)^T \\
\phi_i(s) \text{ - polynomials basis function}
\]

傅里叶基(Fourier basis)

傅里叶基方法的通用数学表达:
\[
\phi_i(s) = \cos(\pi c^i \dot s), \ s \in [0,1)] \\
where \\
c^i = (x_1^i, c_2^i, \cdots, c_d^i)^T, \ with \ c_j^i \in \{0, \cdots, N\} \ for \ j = 1, \cdots, d \ and \ i = 0, \cdots, (N + 1)^d
\]

径向基(Radial Basis)

径向基方法的通用数学表达:
\[
\phi_i(s) \doteq exp \left ( - \frac{\lVert s-c_i \rVert ^2 }{2 \sigma_i^2} \right )
\]

最小二乘法TD(Least-Squares TD)

Input: feature representation \(\phi(s) \in \mathbb{R}^n, \forall s \in \mathcal{S}, \phi(terminal) \doteq 0\)

$\hat{A^{-1}} \gets \epsilon^{-1} I \qquad \text{An } n \times n  matrix $
\(\hat{b} \gets 0\)
Repeat (for each episode):
  Initialize S; obtain corresponding \(\phi\)
  Repeat (for each step of episode):
   Choose \(A \sim \pi(\dot \ | S)\)
   Take action \(A\), observer \(R, S'\); obtain corresponding \(\phi'\)
   \(v \gets \hat{A^{-1}}^T (\phi - \gamma \phi')\)
   \(\hat{A^{-1}} \gets \hat{A^{-1}} - (\hat{A^{-1}}\phi) v^T / (1+v^T\phi)\)
   \(\hat{b} \gets \hat{b} + R \phi\)
   \(\theta \gets \hat{A^{-1}} \hat{b}\)
   \(S \gets S'; \phi \gets \phi'\)
  until S' is terminal

强化学习读书笔记 - 09 - on-policy预测的近似方法的更多相关文章

  1. 强化学习读书笔记 - 13 - 策略梯度方法(Policy Gradient Methods)

    强化学习读书笔记 - 13 - 策略梯度方法(Policy Gradient Methods) 学习笔记: Reinforcement Learning: An Introduction, Richa ...

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

    强化学习读书笔记 - 12 - 资格痕迹(Eligibility Traces) 学习笔记: Reinforcement Learning: An Introduction, Richard S. S ...

  3. 强化学习读书笔记 - 11 - off-policy的近似方法

    强化学习读书笔记 - 11 - off-policy的近似方法 学习笔记: Reinforcement Learning: An Introduction, Richard S. Sutton and ...

  4. 强化学习读书笔记 - 10 - on-policy控制的近似方法

    强化学习读书笔记 - 10 - on-policy控制的近似方法 学习笔记: Reinforcement Learning: An Introduction, Richard S. Sutton an ...

  5. 强化学习读书笔记 - 05 - 蒙特卡洛方法(Monte Carlo Methods)

    强化学习读书笔记 - 05 - 蒙特卡洛方法(Monte Carlo Methods) 学习笔记: Reinforcement Learning: An Introduction, Richard S ...

  6. 强化学习读书笔记 - 06~07 - 时序差分学习(Temporal-Difference Learning)

    强化学习读书笔记 - 06~07 - 时序差分学习(Temporal-Difference Learning) 学习笔记: Reinforcement Learning: An Introductio ...

  7. 强化学习读书笔记 - 02 - 多臂老O虎O机问题

    # 强化学习读书笔记 - 02 - 多臂老O虎O机问题 学习笔记: [Reinforcement Learning: An Introduction, Richard S. Sutton and An ...

  8. 深度学习读书笔记之RBM(限制波尔兹曼机)

    深度学习读书笔记之RBM 声明: 1)看到其他博客如@zouxy09都有个声明,老衲也抄袭一下这个东西 2)该博文是整理自网上很大牛和机器学习专家所无私奉献的资料的.具体引用的资料请看参考文献.具体的 ...

  9. 【转载】 “强化学习之父”萨顿:预测学习马上要火,AI将帮我们理解人类意识

    原文地址: https://yq.aliyun.com/articles/400366 本文来自AI新媒体量子位(QbitAI)     ------------------------------- ...

随机推荐

  1. pyhton 自动化pymysql操作mysqldb数据库增删改查封装

    # coding=utf-8 import pymysql import os import configparser """ /* @:param: python ve ...

  2. 【luogu P1606 [USACO07FEB]荷叶塘Lilypad Pond】 题解

    题目链接:https://www.luogu.org/problemnew/show/P1606 这个题..第一问很好想,但是第二问,如果要跑最短路计数的话,零边权的花怎么办? 不如这样想,如果这个点 ...

  3. DataFrame查找

    一 通过索引取数据 (ix/loc/iloc) loc (根据索引名称取数据 , 适合多列) iloc (根据索引序号取数据,   适合多列) at  (和loc类似,只用于取单列, 性能更好) ia ...

  4. Set集合之HashSet类

    HashSet简介 HashSet是Set接口的典型实现,大多数时候使用Set集合时就是使用这个实现类.HashSet按Hash算法来存储集合中的元素,因此具有良好的存取和查找性能. HashSet特 ...

  5. Knowledge-Reserve

    Knowledge-Reserve ComputerOperatingSystem 编译 静态库&动态库(Linux) 静态链接&动态链接 内存 内联函数&宏 Static&a ...

  6. #leetcode刷题之路28-实现 strStr() 函数

    实现 strStr() 函数.给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始).如果不存在,则返回 ...

  7. 双硬盘双系统win10+manjaro-kde搭建

    电脑sdd+hdd双硬盘,默认win10装在了sdd分区,uefi+gpt引导.现在想要在hdd中划分出一个分区安装manjaro,并在开机多重引导. 1. 制作安装盘 先去下载最新的镜像,最好在国内 ...

  8. 【Linux】Linux中VIM编辑器的使用

    vim编辑器是我们在Linux中不可或缺的一部分,我们通常会使用它去自定义编辑文本已达到我们的需求,那么vim文本编辑器具体要怎么使用呢.今天跟大家分享一下vim编辑器的使用: vim编辑器模式介绍 ...

  9. 偏前端-纯css,手写轮播-(焦点切换 和 自动轮播 只可选择一种,两者不可共存)

    现在我们一般都是在网上找个轮播插件,各种功能应有尽有,是吧!!~大家似乎已经生疏了手写是什么感觉.万一哪天想不起来,人家要手写,就尴尬了!~~跟我一起复习一下吧 不多说:效果图看一下: 高度不能是固定 ...

  10. previewImage.js图片预览缩放保存插件

    previewImage.js好用的图片预览缩放保存插件