强化学习基础篇(二十八)值函数近似法(Value Function Approximation)

强化学习基础篇(二十八)值函数近似法(Value Function Approximation)

在大规模的强化学习任务求解中,精确获得状态值或动作值Q较为困难。而值函数近似法通过寻找状态值或动作值Q的近似替代函数\hat v(s,w)\hat q(s,a,w)的方式来求解大规模强化学习任务,既避免了表格求解法所需大规模存储空间的问题,又提升了求解效率,是实际求解任务中被泛采纳的一种算法。

1、大规模强化学习

强化学习是可以去解决很多非常大型的问题的,比如像Backgammon游戏中有着10^{20}个状态,在围棋游戏中有着10^{170}个状态,此外一些连续状态空间的环境也有着无数的状态。

那么如何把model-free方法中的预测与控制的算法应用在这些大规模强化学习任务之中呢?

这就需要使用值函数近似法,在之前我们所介绍的算法都是基于表格查找,也就是每一个状态sV(s)的表格中都有相应的条目索引,或者说每个state-action对(s,a)Q(s,a)的表格中都有相应的条目索引。

但是表格型的表述方法在大型的MDP问题中有着致命性的问题:

  • 一是,存储这些大量的状态或者动作信息将会耗费海量的内存
  • 二是,去单独学习每个状态的价值非常得慢。

所以,对于大型的MDP问题,我们只能使用函数去近似价值函数:
\begin{aligned} \hat{v}(s, \mathbf{w}) & \approx v_{\pi}(s) \\ \text { or } \hat{q}(s, a, \mathbf{w}) & \approx q_{\pi}(s, a) \end{aligned}
使用这种近似价值方法一方面可以将价值函数的近似从可见状态泛化到不可见状态,另一方面我们可以使用MC或TD学习的方法更新参数w

2、函数近似的模式

价值函数的近似可以有三种主要的方式:

  • 输入状态s,输出价值函数\hat v(s,w)
  • 输入状态s与动作a,输出Q函数\hat q(s,a,w).
  • 输入状态s,输出所有可能动作的Q函数\hat q(s,a_1,w),\hat q(s,a_2,w)...\hat q(s,a_m,w)
image.png

近似函数可以有很多的选择,比如线性函数,神经网络,决策树,最近邻算法,傅里叶基,小波变化等等。我们主要会集中于可微分的近似函数,比如线性函数和神经网络。

强化学习应用的场景其数据通常是非静态(non-stationary)、非独立同分布(non-iid)的,因为下一个状态通常与前一个状态高度相关。因此,函数近似器也需要适用于非静态、非独立同分布的数据

3、梯度下降(Gradient Descent)

如果目标函数J(w)是一个关于参数w的可微分函数,那么目标函数J(w)的梯度就是:
\nabla_{\mathbf{w}} J(\mathbf{w})=\left(\begin{array}{c}\frac{\partial J(\mathbf{w})}{\partial \mathbf{w}_{1}} \\ \vdots \\ \frac{\partial J(\mathbf{w})}{\partial \mathbf{w}_{n}}\end{array}\right)
为了去找到目标函数J(w)的最小值,我们只需要将参数w想着梯度的反方向进行调整。\Delta \mathbf{w}=-\frac{1}{2} \alpha \nabla_{\mathbf{w}} J(\mathbf{w}),这里的超参数\alpha是学习率。

梯度下降的可视化就可以看成沿着图形最陡峭的方向进行参数调整:

image.png

4、随机梯度下降(Stochastic Gradient Descent)

我如果已经知道策略\pi的真实的价值函数v_{\pi}(s),那么我们可以将目标函数定义近似函数\hat v(s,w)和真实的价值函数v_{\pi}(s)之间的均方误差(Mean-squared error ,MSE),我们需要找到为参数为w去最小化MSE的方法。
J(\mathbf{w})=\mathbb{E}_{\pi}\left[\left(v_{\pi}(S)-\hat{v}(S, \mathbf{w})\right)^{2}\right]
其关于参数w梯度为:
\begin{aligned} \Delta \mathbf{w} &=-\frac{1}{2} \alpha \nabla_{\mathbf{w}} J(\mathbf{w}) \\ &=\alpha \mathbb{E}_{\pi}\left[\left(v_{\pi}(S)-\hat{v}(S, \mathbf{w})\right) \nabla_{\mathbf{w}} \hat{V}(S, \mathbf{w})\right] \end{aligned}
上面计算期望在大型环境中是很困难的,他需要求出策略\pi的概率分布,然后再加权求和。这样操作过于复杂,实际操作的时候会采用蒙特卡洛的形式,只用一个样本或者一批样本进行更新,此时会产生一定的样本误差。当样本足够多的时候,所有更新方向加权后就能逼近真实的梯度方向。)
随机梯度下降算法会对梯度进行采样:
\Delta \mathbf{w}=\alpha\left(v_{\pi}(S)-\hat{v}(S, \mathbf{w})\right) \nabla_{\mathbf{w}} \hat{V}(S, \mathbf{w})

5、线性函数近似

特征向量

状态我们是可以拆解为有一堆特征组成,所有的特征可以组成特征向量:
\mathbf{x}(S)=\left(\begin{array}{c}\mathbf{x}_{1}(S) \\ \vdots \\ \mathbf{x}_{n}(S)\end{array}\right)

线性值函数近似

如果将值函数由线性方程来表示,可以是:
\hat{v}(S, \mathbf{w})=\mathbf{x}(S)^{\top} \mathbf{w}=\sum_{j=1}^{n} \mathbf{x}_{j}(S) \mathbf{w}_{j}
其MSE的目标函数可以表示为:
J(\mathbf{w})=\mathbb{E}_{\pi}\left[\left(v_{\pi}(S)-\mathbf{x}(S)^{\top} \mathbf{w}\right)^{2}\right]
对于线性值函数近似,我们使用SGD方法是可以收敛到全局最优解的,其梯度更新的过程也非常得简洁:
\begin{aligned} \nabla_{\mathbf{w}} \hat{V}(S, \mathbf{w}) &=\mathbf{x}(S) \\ \Delta \mathbf{w} &=\alpha\left(v_{\pi}(S)-\hat{v}(S, \mathbf{w})\right) \mathbf{x}(S) \end{aligned}
这个梯度的更新过程,直观的看是:
Update= step \ size \times prediction \ error \times feature \ value

表格检索特征

表格检索是线性值函数近似的一种特殊形式,他吧每一个状态看成一个特征,个体具体处在某一个状态时,该状态特征取1,其余取0。参数的数目就是状态数,也就是每一个状态特征有一个参数。特征的形式是:
\mathbf{x}^{\text {table}}(S)=\left(\begin{array}{c}\mathbf{1}\left(S=s_{1}\right) \\ \vdots \\ \mathbf{1}\left(S=s_{n}\right)\end{array}\right)
参数向量w本质上相当于给了每个状态对应的值函数:
\hat{v}(S, \mathbf{w})=\left(\begin{array}{c}\mathbf{1}\left(S=s_{1}\right) \\ \vdots \\ \mathbf{1}\left(S=s_{n}\right)\end{array}\right) \cdot\left(\begin{array}{c}\mathbf{w}_{1} \\ \vdots \\ \mathbf{w}_{n}\end{array}\right)

6、增量预测算法

之前是假设了给定了真实的值函数v_{\pi}(s),但是在RL环境中,并不知道真实的值函数,只有奖励值,所以在实际中,我们会用目标(target)去替换真实的值函数v_{\pi}(s),目标可以使用MC,TD(0)TD(\lambda)的方法计算:

  • 如果使用MC方法,目标是回报值G_t:

    \Delta \mathbf{w}=\alpha\left(G_{t}-\hat{v}\left(S_{t}, \mathbf{w}\right)\right) \nabla_{\mathbf{w}} \hat{v}\left(S_{t}, \mathbf{w}\right)

  • 如果使用TD(0)方法,则用TD目标R_{t+1}+\gamma \hat{v}\left(S_{t+1}, \mathbf{w}\right)
    \Delta \mathbf{w}=\alpha\left(R_{t+1}+\gamma \hat{v}\left(S_{t+1}, \mathbf{w}\right)-\hat{v}\left(S_{t}, \mathbf{w}\right)\right) \nabla_{\mathbf{w}} \hat{v}\left(S_{t}, \mathbf{w}\right)

  • 如果使用TD(\lambda)方法,则用\lambda-return G_t^{\lambda}
    \Delta \mathbf{w}=\alpha\left(G_{t}^{\lambda}-\hat{v}\left(S_{t}, \mathbf{w}\right)\right) \nabla_{\mathbf{w}} \hat{v}\left(S_{t}, \mathbf{w}\right)

使用MC方法的价值函数近似

如果使用MC方法,目标是回报值G_tG_t是一个对真实价值函数v_{\pi}(S_t)的无偏差,但噪声很大的采样。我们在收集到很多训练数据后应用监督学习的方法进行训练。训练数据就是没个状态得到的回报对:
\left\langle S_{1}, G_{1}\right\rangle,\left\langle S_{2}, G_{2}\right\rangle, \ldots,\left\langle S_{T}, G_{T}\right\rangle
如果使用线性函数作为价值函数的近似,那么其MC方法下的梯度为:
\begin{aligned} \Delta \mathbf{w} &=\alpha\left(G_{t}-\hat{v}\left(S_{t}, \mathbf{w}\right)\right) \nabla_{\mathbf{w}} \hat{v}\left(S_{t}, \mathbf{w}\right) \\ &=\alpha\left(G_{t}-\hat{v}\left(S_{t}, \mathbf{w}\right)\right) \mathbf{x}\left(S_{t}\right) \end{aligned}
MC评估方法在应用中就算是使用非线性价值函数近似,也可以收敛到局部最优解,

使用TD方法的价值函数近似

如果使用TD方法,则用TD目标R_{t+1}+\gamma \hat{v}\left(S_{t+1}, \mathbf{w}\right),这是对真实价值函数v_{\pi}(S_t)的有偏差采样,其收集到的训练数据是这样的:
\left\langle S_{1}, R_{2}+\gamma \hat{v}\left(S_{2}, \mathbf{w}\right)\right\rangle,\left\langle S_{2}, R_{3}+\gamma \hat{v}\left(S_{3}, \mathbf{w}\right)\right\rangle, \ldots,\left\langle S_{T-1}, R_{T}\right\rangle
如果使用线性函数作为价值函数的近似,那么其TD(0)方法下的梯度为:
\begin{aligned} \Delta \mathbf{w} &=\alpha\left(R+\gamma \hat{v}\left(S^{\prime}, \mathbf{w}\right)-\hat{v}(S, \mathbf{w})\right) \nabla_{\mathbf{w}} \hat{V}(S, \mathbf{w}) \\ &=\alpha \delta \mathbf{x}(S) \end{aligned}
在收敛性上TD(0)几乎可以收敛到全局最优解。

使用TD(\lambda)方法的价值函数近似

如果使用TD(\lambda)方法,则用\lambda-return G_t^{\lambda},其收集到的训练数据是这样的:
\left\langle S_{1}, G_{1}^{\lambda}\right\rangle,\left\langle S_{2}, G_{2}^{\lambda}\right\rangle, \ldots,\left\langle S_{T-1}, G_{T-1}^{\lambda}\right\rangle
如果使用线性函数作为价值函数的近似,那么前向TD(\lambda)方法下的梯度为:
\begin{aligned} \Delta \mathbf{w} &=\alpha\left(G_{t}^{\lambda}-\hat{v}\left(S_{t}, \mathbf{w}\right)\right) \nabla_{\mathbf{w}} \hat{V}\left(S_{t}, \mathbf{w}\right) \\ &=\alpha\left(G_{t}^{\lambda}-\hat{v}\left(S_{t}, \mathbf{w}\right)\right) \mathbf{x}\left(S_{t}\right) \end{aligned}
后向TD(\lambda)方法下的梯度为:
\begin{aligned} \delta_{t} &=R_{t+1}+\gamma \hat{v}\left(S_{t+1}, \mathbf{w}\right)-\hat{V}\left(S_{t}, \mathbf{w}\right) \\ E_{t} &=\gamma \lambda E_{t-1}+\mathbf{x}\left(S_{t}\right) \\ \Delta \mathbf{w} &=\alpha \delta_{t} E_{t} \end{aligned}

7、增量控制算法

控制的算法是指使用函数近似Q函数,\hat{q}(S, A, \mathbf{w}) \approx q_{\pi}(S, A)

在知道真实的action-value的时候,我们可以还是可以使用MSE作为目标函数:
J(\mathbf{w})=\mathbb{E}_{\pi}\left[\left(q_{\pi}(S, A)-\hat{q}(S, A, \mathbf{w})\right)^{2}\right]
然后用随机梯度下降(SGD)找到局部最优解:
\begin{aligned}-\frac{1}{2} \nabla_{\mathbf{w}} J(\mathbf{w}) &=\left(q_{\pi}(S, A)-\hat{q}(S, A, \mathbf{w})\right) \nabla_{\mathbf{w}} \hat{q}(S, A, \mathbf{w}) \\ \Delta \mathbf{w} &=\alpha\left(q_{\pi}(S, A)-\hat{q}(S, A, \mathbf{w})\right) \nabla_{\mathbf{w}} \hat{q}(S, A, \mathbf{w}) \end{aligned}

使用线性函数近似Q函数

如果使用线性函数近似Q函数,我们将state-action对通过特征向量进行描述:
\mathbf{x}(S, A)=\left(\begin{array}{c}\mathbf{x}_{1}(S, A) \\ \vdots \\ \mathbf{x}_{n}(S, A)\end{array}\right)
然后Q函数就可以表示为:
\hat{q}(S, A, \mathbf{w})=\mathbf{x}(S, A)^{\top} \mathbf{w}=\sum_{j=1}^{n} \mathbf{x}_{j}(S, A) \mathbf{w}_{j}
其SGD的更新方式为:
\begin{aligned} \nabla_{\mathbf{w}} \hat{q}(S, A, \mathbf{w}) &=\mathbf{x}(S, A) \\ \Delta \mathbf{w} &=\alpha\left(q_{\pi}(S, A)-\hat{q}(S, A, \mathbf{w})\right) \mathbf{x}(S, A) \end{aligned}

使用MC方法的Q函数近似

使用MC方法的Q函数近似,是将回报值G_t代替真实的Q函数值q_{\pi}(S, A),其更新方式为:
\Delta \mathbf{w}=\alpha\left(G_{t}-\hat{q}\left(S_{t}, A_{t}, \mathbf{w}\right)\right) \nabla_{\mathbf{w}} \hat{q}\left(S_{t}, A_{t}, \mathbf{w}\right)

使用TD(0)方法的Q函数近似

使用TD(0)方法的Q函数近似,是将R_{t+1}+\gamma Q\left(S_{t+1}, A_{t+1}\right)代替真实的Q函数值q_{\pi}(S, A),其更新方式为:
\Delta \mathbf{w}=\alpha\left(R_{t+1}+\gamma \hat{q}\left(S_{t+1}, A_{t+1}, \mathbf{w}\right)-\hat{q}\left(S_{t}, A_{t}, \mathbf{w}\right)\right) \nabla_{\mathbf{w}} \hat{q}\left(S_{t}, A_{t}, \mathbf{w}\right)

使用TD(\lambda)方法的Q函数近似

使用前向TD(\lambda)方法的Q函数近似,是将\lambda回报代替真实的Q函数值q_{\pi}(S, A),其更新方式为:
\Delta \mathbf{w}=\alpha\left(q_{t}^{\lambda}-\hat{q}\left(S_{t}, A_{t}, \mathbf{w}\right)\right) \nabla_{\mathbf{w}} \hat{q}\left(S_{t}, A_{t}, \mathbf{w}\right)
其等价的使用后向观点的方法中,使用资格迹进行如下更新:
\begin{aligned} \delta_{t} &=R_{t+1}+\gamma \hat{q}\left(S_{t+1}, A_{t+1}, \mathbf{w}\right)-\hat{q}\left(S_{t}, A_{t}, \mathbf{w}\right) \\ E_{t} &=\gamma \lambda E_{t-1}+\nabla_{\mathbf{w}} \hat{q}\left(S_{t}, A_{t}, \mathbf{w}\right) \\ \Delta \mathbf{w} &=\alpha \delta_{t} E_{t} \end{aligned}

8、收敛性

几种算法之间的收敛性比较在下面几张图。

首先是预测算法的收敛性,在On-policy与Off-policy下都是MC最优。

image.png

从预测算法的收敛性上可以看到TD算法的Off-policy上的收敛性较差,但是如果使用Gradient TD会好很多。

image.png

在控制算法的收敛性上的比较,其中 (✓) 表示接近最优值函数。

[图片上传失败...(image-be584f-1604324484205)]

9、批量方法(Batch Method)

前面讲的部分都是使用梯度下降进行增量更新,以使得目标函数接近最优解。但是其采样效率很低,批量方法进行批量得对训练数据进行学习,具有更高的效率。批方法要在最大化利用数据的同时去找到对于值函数最好的拟合。

MSE

假设给定近似函数\hat{v}(s, \mathbf{w}) \approx v_{\pi}(s),并且给定包含大量state-value对的经验池D
\mathcal{D}=\left\{\left\langle s_{1}, v_{1}^{\pi}\right\rangle,\left\langle s_{2}, v_{2}^{\pi}\right\rangle, \ldots,\left\langle s_{T}, v_{T}^{\pi}\right\rangle\right\}
我们需要找到一个最佳的参数w能够使得函数\hat{v}(s, \mathbf{w})能够拟合经验池D中的所有数据,MSE作为目标函数就可以找到最优解:
\begin{aligned} L S(\mathbf{w}) &=\sum_{t=1}^{T}\left(v_{t}^{\pi}-\hat{v}\left(s_{t}, \mathbf{w}\right)\right)^{2} \\ &=\mathbb{E}_{\mathcal{D}}\left[\left(v^{\pi}-\hat{v}(s, \mathbf{w})\right)^{2}\right] \end{aligned}

使用经验回放的SGD

在给定经验池时,我们可以重复下面两个步骤应用SGD:

  • 从经验池D中进行(state,value)对的采样:\left\langle s, v^{\pi}\right\rangle \sim \mathcal{D}
  • 应用SGD进行参数更新:\Delta \mathbf{w}=\alpha\left(v^{\pi}-\hat{v}(s, \mathbf{w})\right) \nabla_{\mathbf{w}} \hat{v}(s, \mathbf{w})

这样的结果可以收敛到最小二乘解:\mathbf{w}^{\pi}=\underset{\mathbf{w}}{\operatorname{argmin}} L S(\mathbf{w})

DQN算法

DQN算法的成功就是主要使用了经验池与固定的目标Q网络两种技术,其关键在于以下几点:

    1. 使用\epsilon-greedy策略选取动作a_t

    2. 将产生的转移数据\left(s_{t}, a_{t}, r_{t+1}, s_{t+1}\right)存储到经验池D

    3. 从经验池D中随机采样一个小批量的经验数据\left(s_{t}, a_{t}, r_{t+1}, s_{t+1}\right)

    4. 根据旧的,并且固定的参数w^-计算Q函数的目标值

    5. 优化Q-network和Q函数目标值之间的目标函数MSE:
      \mathcal{L}_{i}\left(w_{i}\right)=\mathbb{E}_{s, a, r, s^{\prime} \sim \mathcal{D}_{i}}\left[\left(r+\gamma \max _{a^{\prime}} Q\left(s^{\prime}, a^{\prime} ; w_{i}^{-}\right)-Q\left(s, a ; w_{i}\right)\right)^{2}\right]

    6. 使用SGD进行参数更新

DQN算法在Atari游戏中的应用

DQN算法在Atari游戏训练过程中,端到端得从游戏像素s中学习Q函数Q(s,a),其状态s是根据游戏最后4帧画面叠加而成,然后输出游戏手柄中18个动作按钮的Q值,其奖励就是在执行动作后游戏中的分数。

网络拓扑图如下所示:

image.png

线性最小二乘预测

在使用经验池的时候我们可以找到最小二乘解,但是知道最优解还是会花费非常多的迭代。如果使用线性近似函数\hat{v}(s, \mathbf{w})=\mathbf{x}(s)^{\top} \mathbf{w},我们就可以直接找到最小二乘解。

在最小化LS(w)的过程中,我们LS(w)的期望为0进行推导:
\begin{aligned} \mathbb{E}_{\mathcal{D}}[\Delta \mathbf{w}] &=0 \\ \alpha \sum_{t=1}^{T} \mathbf{x}\left(s_{t}\right)\left(v_{t}^{\pi}-\mathbf{x}\left(s_{t}\right)^{\top} \mathbf{w}\right) &=0 \\ \sum_{t=1}^{T} \mathbf{x}\left(s_{t}\right) v_{t}^{\pi} &=\sum_{t=1}^{T} \mathbf{x}\left(s_{t}\right) \mathbf{x}\left(s_{t}\right)^{\top} \mathbf{w} \\ \mathbf{w} &=\left(\sum_{t=1}^{T} \mathbf{x}\left(s_{t}\right) \mathbf{x}\left(s_{t}\right)^{\top}\right)^{-1} \sum_{t=1}^{T} \mathbf{x}\left(s_{t}\right) v_{t}^{\pi} \end{aligned}
如果有N个特征,这种直接求解的复杂度是O(N^3),如果使用Shermann-Morrison方法进行迭代更新可以将复杂度降低到O(N^2)

在不知道真实价值v_t^{\pi}的时候,在实际中就需要使用到MC,TD的方法进行采样代替v_t^{\pi}

  • 如果使用MC方法,就有LSMC(Least Squares Monte-Carlo)算法,使用回报代替真值:v_{t}^{\pi} \approx G_{t}
  • 如果使用TD方法,就有LSTD(Least Squares Temporal-Di�erence)算法,v_{t}^{\pi} \approx R_{t+1}+\gamma \hat{v}\left(S_{t+1}, \mathbf{w}\right)
  • 如果使用TD(\lambda)方法,则使用\lambda回报代替真值:v_{t}^{\pi} \approx G_{t}^{\lambda}

在这三种方法的时候都可以直接进行求解最小二乘解:

对于LSMC:
\begin{aligned} 0 &=\sum_{t=1}^{T} \alpha\left(G_{t}-\hat{v}\left(S_{t}, \mathbf{w}\right)\right) \mathbf{x}\left(S_{t}\right) \\ \mathbf{w} &=\left(\sum_{t=1}^{T} \mathbf{x}\left(S_{t}\right) \mathbf{x}\left(S_{t}\right)^{\top}\right)^{-1} \sum_{t=1}^{T} \mathbf{x}\left(S_{t}\right) G_{t} \end{aligned}
对于LSTD:
0=\sum_{t=1}^{T} \alpha\left(R_{t+1}+\gamma \hat{v}\left(S_{t+1}, \mathbf{w}\right)-\hat{v}\left(S_{t}, \mathbf{w}\right)\right) \mathbf{x}\left(S_{t}\right)

\mathbf{w}=\left(\sum_{t=1}^{T} \mathbf{x}\left(S_{t}\right)\left(\mathbf{x}\left(S_{t}\right)-\gamma \mathbf{x}\left(S_{t+1}\right)\right)^{\top}\right)^{-1} \sum_{t=1}^{T} \mathbf{x}\left(S_{t}\right) R_{t+1}

对于LSTD(\lambda):
\begin{aligned} 0 &=\sum_{t=1}^{T} \alpha \delta_{t} E_{t} \\ \mathbf{w} &=\left(\sum_{t=1}^{T} E_{t}\left(\mathbf{x}\left(S_{t}\right)-\gamma \mathbf{x}\left(S_{t+1}\right)\right)^{\top}\right)^{-1} \sum_{t=1}^{T} E_{t} R_{t+1} \end{aligned}
这三种预测算法的收敛性如下:

image.png

最小二乘的策略迭代

使用最小二乘方法进行策略迭代的过程,只是在策略评估过程中使用least square Q-learning。

image.png

线性最小二乘控制

如果线性函数对q函数q_{\pi}(s, a)进行近似,
\hat{q}(s, a, \mathbf{w})=\mathbf{x}(s, a)^{\top} \mathbf{w} \approx q_{\pi}(s, a)
然后最小化真实q_{\pi}(s, a)与预测的\hat{q}(s, a, \mathbf{w})之间的MSE,其中\hat{q}(s, a, \mathbf{w})来自于经验池的\langle(state,action), value \rangle对:
\mathcal{D}=\left\{\left\langle\left(s_{1}, a_{1}\right), v_{1}^{\pi}\right\rangle,\left\langle\left(s_{2}, a_{2}\right), v_{2}^{\pi}\right\rangle, \ldots,\left\langle\left(s_{T}, a_{T}\right), v_{T}^{\pi}\right\rangle\right\}
在策略评估中,我们是要去高效得利用已有的经验,但是在控制中,我们是要去提升策略。经验池中的经验是从许多的策略中采样产生的,所以对q_{\pi}(s,a)进行评估必须进行off-policy学习,需要使用和Q-learning一样的想法:

  • 使用旧的策略产生经验:S_{t}, A_{t}, R_{t+1}, S_{t+1} \sim \pi_{\text {old}}
  • 根据后续状态产生动作:A^{\prime}=\pi_{\text {new}}\left(S_{t+1}\right)
  • 更新q函数\hat{q}\left(S_{t}, A_{t}, \mathbf{w}\right)\left.R_{t+1}+\gamma \hat{q}\left(S_{t+1}, A^{\prime}, \mathbf{w}\right)\right)

然后我们继续考虑线性函数的增量更新方式为:
\begin{aligned} \delta &=R_{t+1}+\gamma \hat{q}\left(S_{t+1}, \pi\left(S_{t+1}\right), \mathbf{w}\right)-\hat{q}\left(S_{t}, A_{t}, \mathbf{w}\right) \\ \Delta \mathbf{w} &=\alpha \delta \mathbf{x}\left(S_{t}, A_{t}\right) \end{aligned}
如果使用最小二乘的方法直接求解:
\begin{aligned} 0 &=\sum_{t=1}^{T} \alpha\left(R_{t+1}+\gamma \hat{q}\left(S_{t+1}, \pi\left(S_{t+1}\right), \mathbf{w}\right)-\hat{q}\left(S_{t}, A_{t}, \mathbf{w}\right)\right) \mathbf{x}\left(S_{t}, A_{t}\right) \\ \mathbf{w} &=\left(\sum_{t=1}^{T} \mathbf{x}\left(S_{t}, A_{t}\right)\left(\mathbf{x}\left(S_{t}, A_{t}\right)-\gamma \mathbf{x}\left(S_{t+1}, \pi\left(S_{t+1}\right)\right)\right)^{\top}\right)^{-1} \sum_{t=1}^{T} \mathbf{x}\left(S_{t}, A_{t}\right) R_{t+1} \end{aligned}
我们利用这里的LSTDQ对值函数进行估计,得到下面的LSPI算法:

image.png

控制算法的收敛性:

image.png
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,761评论 5 460
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,953评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,998评论 0 320
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,248评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,130评论 4 356
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,145评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,550评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,236评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,510评论 1 291
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,601评论 2 310
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,376评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,247评论 3 313
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,613评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,911评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,191评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,532评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,739评论 2 335