RL-赵-(八)-Value-Based01:Value Function Approximation【值函数近似:用函数取代表格来拟合v、q】【函数可用于处理连续v/q空间,存储空间小泛化能力强】

在这里插入图片描述

一、Motivating examples: 曲线拟合curve fitting

到目前为止,我们都是使用tables表示state values和action values。例如,下表是action value的表示:

在这里插入图片描述
在编程的时候我们实际上就把这些表格重组成向量矩阵或者是数组,我使用表格的好处是什么呢?就是它是非常的直观,
然后我去分析的时候也是比较简单的。

  • 优势:直观且容易分析
  • 劣势:难以处理较大或者连续的state或者action空间。两个方面:1)存储;2)泛化能力。

在这里插入图片描述
举个例子: 假定有一个one-dimensional states s 1 , . . . , s ∣ S ∣ s_1,...,s_{|S|} s1,...,sS, 当 π \pi π是给定策略的时候,它们的state values是 v π ( s 1 ) , . . . , v π ( s ∣ S ∣ ) v_\pi(s_1),...,v_\pi(s_{|S|}) vπ(s1),...,vπ(sS)

假设 ∣ S ∣ |S| S非常大,因此我们希望用一个简单的曲线近似它们的点以降低内存:

在这里插入图片描述
首先我们使用简单的straight line去拟合这些点。假设straight line的方程为
v ^ ( s , w ) = a s + b = [ s , 1 ] ⏟ ϕ T ( s ) [ a b ] ⏟ w = ϕ T ( s ) w \hat{v}(s,w)=as+b=\underbrace{[s,1]}_{\phi^T(s)}\underbrace{\left[\begin{array}{c}a\\b\end{array}\right]}_{w}=\phi^T(s)w v^(s,w)=as+b=ϕT(s) [s,1]w [ab]=ϕT(s)w

其中:

  • w w w是参数向量 (parameter vector)
  • ϕ ( s ) \phi(s) ϕ(s)是s的特征向量 (feature vector)
  • v ^ ( s , w ) \hat{v}(s,w) v^(s,w) w w w成线性关系(当然,也可以是非线性的)

在这里插入图片描述

这样表示的好处是:

  • 表格形式需要存储 ∣ S ∣ |S| S个state values, 现在,只需要存储两个参数 a a a b b b
  • 每次我们想要使用 s s s 的值,我们可以计算 ϕ T ( s ) w \phi^T(s)w ϕT(s)w
  • 但是这个好处也不是免费的,它需要付出一些代价: state values不能被精确地表示,这也是为什么这个方法被称为 value
    approximation

既然直线不够准确,那么是否可以使用高阶的曲线呢?当然可以。第二,我们使用一个second-order curve去拟合这些点:

在这里插入图片描述
在这种情况下:

  • w w w ϕ ( s ) \phi(s) ϕ(s)的维数增加了,但是values可以被拟合的更加精确。
  • 尽管 v ^ ( s , w ) \hat{v}(s,w) v^(s,w) s s s是非线性的,但是它与 w w w是线性的。这种非线性的性质包含在 ϕ ( s ) \phi(s) ϕ(s)中。

在这里插入图片描述
当然,还可以继续增加阶数。第三,使用一个更加 high-order polynomial curves(多项式曲线)或者其他复杂的曲线来拟合这些点

  • 好处是:更好的拟合;
  • 坏处是:需要更多的参数;

在这里插入图片描述
小结一下:

  • Idea: value function approximation的idea是用一个函数 v ^ ( s , w ) \hat{v}(s,w) v^(s,w)来拟合 υ π ( s ) \upsilon_{\pi}\left(s\right) υπ(s),这个函数里边有参数 w w w, 所以被称为parameterized function, w w w就是parameter vector。
  • 这样做的好处:
    1. 节省存储 w w w 的维数远小于 ∣ S ∣ |S| S(state的数量) 。
    2. 泛化能力:当一个state s s s是visited,参数 w w w是updated,这样某些其他unvisited states的values也可以被updated。按这种方
      式,the learned values可以泛化到unvisited states。

二、Algorithm for state value estimation

1、Objective function

在这里插入图片描述
首先,用一种更正式的方式:

  • v π ( s ) v_\pi(s) vπ(s) v ^ ( s , w ) \hat{v}(s,w) v^(s,w)分别表示true state value和approximate函数;
  • 我们的目标是找到一个最优的 w w w,使得 v ^ ( s , w ) \hat{v}(s,w) v^(s,w) 对于每个 s s s 能最优地近似 v π ( s ) v_{\pi}\left(s\right) vπ(s)
  • 这个问题就是一个 policy evaluation 问题,然后之后我们会再推广得到 action value,稍后我们再将会把它推广到 policy improvement
  • 所以我们一步一步来,我们先看怎么样做policy evaluation;
  • 为了找到最优的 w w w,我们需要两步:
    • 第一步定义一个目标函数 (object function) ;
    • 第二步是优化这个目标函数;

在这里插入图片描述
目标函数:
J ( w ) = E [ ( v π ( S ) − v ^ ( S , w ) ) 2 ] J(w)=\mathbb{E}[(v_\pi(S)-\hat{v}(S,w))^2] J(w)=E[(vπ(S)v^(S,w))2]

  • 我们的目标是找到最优的 w w w,这样可以最小化 J ( w ) J(w) J(w)
  • S S S 是一个随机变量, S ∈ S S\in \mathcal{S} SS,随机变量一定是有概率分布(probability distribution)的;
  • 期望值与随机变量(random variable) S ∈ S S\in \mathcal{S} SS 有关。随机变量 S S S的概率分布是什么?
    • 这通常令人困惑,因为我们到目前为止还没有讨论过state的概率分布;
    • 有几种定义 S S S的概率分布的方式;

在这里插入图片描述
第一种方式是使用一个平均分布(uniform distribution):

  • 它对待每个states都是同等的重要性,通过将每个state的概率设置为 1 / ∣ S 1/|S 1/∣S
  • 这种情况下,目标函数变为:
    J ( w ) = E [ ( v π ( S ) − v ^ ( S , w ) ) 2 ] = 1 ∣ S ∣ ∑ s ∈ S ( v π ( s ) − v ^ ( s , w ) ) 2 J(w)=\mathbb{E}[(v_\pi(S)-\hat{v}(S,w))^2]=\frac{1}{|\mathcal{S}|}\sum_{s\in\mathcal{S}}(v_\pi(s)-\hat{v}(s,w))^2 J(w)=E[(vπ(S)v^(S,w))2]=S1sS(vπ(s)v^(s,w))2
  • 虽然平均分布是非常直观的,但是有一个问题: 这里假设所有状态都是平等的,但是实际上可能不是那么回事。例如某些state在一个policy下可能几乎不会访问到。因此这种方式没有考虑一个给定policy下Markov process的实际动态变化。

在这里插入图片描述
第二种方式是在value function approximation方法当中所使用的,即 平稳分布(stationary distribution):

  • Stationary distribution is an important concept. 它描述了一个Markov process的 long-run behavior
  • { d π ( s ) } s ∈ S \{d_{\pi}\left(s\right)\}_{s\in S} { dπ(s)}sS表示基于策略 π \pi π的Markov process的stationany distribution。根据定义有, d π ( s ) ≥ 0 d_{\pi}\left(s\right)\geq0 dπ(s)0 ∑ s ∈ S d π ( s ) = 1 \sum_{s\in S}d_{\pi}\left(s\right)=1 sSdπ(s)=1
  • 在这种情况下,目标函数被重写为:
    J ( w ) = E [ ( v π ( S ) − v ^ ( S , w ) ) 2 ] = ∑ s ∈ S d π ( s ) ( v π ( s ) − v ^ ( s , w ) ) 2 \begin{aligned}J(w)=\mathbb{E}[(v_\pi(S)-\hat{v}(S,w))^2]=\sum_{s\in\mathcal{S}}d_\pi(s)(v_\pi(s)-\hat{v}(s,w))^2\end{aligned} J(w)=E[(vπ(S)v^(S,w))2]=sSdπ(s)(vπ(s)v^(s,w))2
    这里的 d π ( s ) d_{\pi}(s) dπ(s)就扮演了权重的意思,这个函数是一个weighted squared error。
    • 某一个状态它的权重比较大,那我就会让它估计的那个误差会更小一些。
    • 这个 d π d_π dπ 还有一个意思是什么呢?就是它在达到平稳状态之后agent出现在那个状态的概率。或者说那个状态被访问的概率是多大。
  • 由于更频繁地visited states, 具有更高的 d π ( s ) d_\pi\left(s\right) dπ(s)值,它们在目标函数中的权重也比那些很少访问的states的权重高。

在这里插入图片描述
对于stationary distribution更多的介绍:

  • Distribution:state的概率分布(如果是在求加权平均的时候,可以认为它实际上就是那个状态的权重);
  • Stationary : Long-run behavior(就是我从现在出发然后执行某个策略,又跑了很多很多步之后所达到的一种概率的分布,所以那时候就已经达到是平稳的状态了)
  • Summary: 智能体agent根据一个策略运行一个较长时间之后,the probability that the agent is at any state can be described by this distribution.

需要强调的是:

  • Stationary distribution 也被称为steady-state distribution,或者limiting distribution(limiting就是极限,就跑了很多步之后)
  • 它在理解value functional approximation method方面是非常重要的
  • 对于policy gradient method也是非常重要的。

在这里插入图片描述

举个例子:如图所示,给定一个探索性的策略。让agent从一个状态出发然后跑很多次,根据这个策略,然后看一下会发生什么事情。

  • n π ( s ) n_{\pi}(s) nπ(s)表示在由 π π π 生成的非常长的一个episode中 s s s 被访问的次数;
  • 然后, d π ( s ) d_{\pi}(s) dπ(s)可以由下式估计:
    d π ( s ) ≈ n π ( s ) ∑ s ′ ∈ S n π ( s ′ ) d_{\pi}\left(s\right)\approx\frac{n_{\pi}\left(s\right)}{\sum_{s'\in\mathcal{S}}n_{\pi}\left(s'\right)} dπ(s)sSnπ(s)nπ(s)

在这里插入图片描述
横坐标是我们episode的步长,我们现在跑了一个episode 它一共有1000步。纵坐标就是上面这个比值 d π d_{\pi} dπ;

  • 大家可以看到访问不同的状态它所得到的比值,或者说那个状态被访问的概率是不同的;
  • 在开始的时候波动还是比较大的,但是随着step越来越多最后都趋向了平稳,所以这个就是为什么叫stationary平稳,就是为什么叫long-run。就是我跑很多次之后它就会趋向于平稳,那它们的每一个比值或者是概率都会收敛到一个具体的值。
  • s 4 s_4 s4 以这条紫色的线最上面这条线为例(这条线对应的状态是s4),也就是在跑很多次之后,s4被访问的次数除以整个episode的长度最后趋向了这样一个比值(≈0.7)。这个比值还是比较大的相比于其它的这些状态,那为什么这个比值是比较大的呢?其实也容易理解,因为在每一个状态(s1/s2/s3/s4)它都有比较大的概率,选择某一个特定的action 然后这些action刚好无论你从哪个点出发它都能够有比较大的概率跑到s4。最后跑了很多步之后agent在s4出现的概率是比较大的,它大概是等于0.7。
  • 图上右图的右侧的星号 ∗ * 代表理论值,也就是说我不需要去跑很多次我就能找到这个 d π ( s ) d_π(s) dπ(s)

在这里插入图片描述
最后收敛的值是可以预测的,因为它们是 d π d_π dπ 的 entries。
d π T = d π T P π d_\pi^T=d_\pi^TP_\pi dπT=dπTPπ
对于上面的例子,假设状态转移矩阵 P π P_{\pi} Pπ 如下:
P π = [ 0.3 0.1 0.6 0 0.1 0.3 0 0.6 0.1 0 0.3 0.6 0 0.1 0.1 0.8 ] P_\pi=\begin{bmatrix}0.3&0.1&0.6&0\\0.1&0.3&0&0.6\\0.1&0&0.3&0.6\\0&0.1&0.1&0.8\end{bmatrix} Pπ= 0.30.10.100.10.300.10.600.30.100.60.60.8
可以计算得到 P π P_{\pi} Pπ 的特征值(eigenvalues)为 { − 0.0449 , 0.3 , 0.4449 , 1 } \{−0.0449, 0.3, 0.4449, 1\} { 0.0449,0.3,0.4449,1},The unit-length (right) eigenvector of P π P_{\pi} Pπ corresponding to the eigenvalue 1 is [ 0.0463 , 0.1455 , 0.1785 , 0.9720 ] [0.0463, 0.1455, 0.1785, 0.9720] [0.0463,0.1455,0.1785,0.9720]

After scaling this vector so that the sum of all its elements is equal to 1, we obtain the theoretical value of d π d_π dπ as follows:

可以计算出来它左边对应于特征值(eiqenvalue)等于1的那个特征向量(eigenvector):

d π = [ 0.0345 0.1084 0.1330 0.7241 ] d_{\pi}=\left[{\begin{array}{c}0.0345\\0.1084\\0.1330\\0.7241\end{array}}\right] dπ= 0.03450.10840.13300.7241

2、如何优化目标函数?答案:梯度下降

在这里插入图片描述
当我们有了目标函数,下一步就是优化它。

为了最小化目标函数 J ( w ) J(w) J(w),我们可以使用gradient-descent算法:
w k + 1   =   w k   −   α k ∇ w J ( w k   ) \begin{aligned}w_{k+1}\:=\:w_k\:-\:\alpha_k\nabla_wJ(w_k\:)\end{aligned} wk+1=wkαkwJ(wk)
真实梯度(true gradient)的表达式如下:
∇ w J ( w ) = ∇ w E [ ( v π ( S ) − v ^ ( S , w ) ) 2 ] = E [ ∇ w ( v π ( S ) − v ^ ( S , w ) ) 2 ] = 2 E [ ( v π ( S ) − v ^ ( S , w ) ) ( − ∇ w v ^ ( S , w ) ) ] = − 2 E [ ( v π ( S ) − v ^ ( S , w ) ) ∇ w v ^ ( S , w ) ] \begin{aligned} \nabla_wJ(w)& =\nabla_w\mathbb{E}[(v_\pi(S)-\hat{v}(S,w))^2] \\ &=\mathbb{E}[\nabla_w(v_\pi(S)-\hat{v}(S,w))^2] \\ &=2\mathbb{E}[(v_\pi(S)-\hat{v}(S,w))(-\nabla_w\hat{v}(S,w))] \\ &\begin{aligned}=-2\mathbb{E}[(v_\pi(S)-\hat{v}(S,w))\nabla_w\hat{v}(S,w)]\end{aligned} \end{aligned} wJ(w)=wE[(vπ(S)v^(S,w))2]=E[w(vπ(S)v^(S,w))2]=2E[(vπ(S)v^(S,w))(wv^(S,w))]=2E[(vπ(S)v^(S,w))wv^(S,w)]
这个true gradient需要计算一个expectation。【这个算法无法实施,因为它需要真实的状态值 v π {v_\pi} vπ,而这个值是需要估计的未知重】

在这里插入图片描述

我们可以用一个近似值(随机梯度/stochastic gradient)替代 true gradient,使得算法可以实施。
w t + 1   =   w t   +   α t ( v π ( s t ) − v ^ ( s t , w t ) ) ∇ w v ^ ( s t , w t ) \begin{aligned}w_{t+1}\:=\:w_t\:+\:\alpha_t(v_\pi(s_t)-\hat{v}(s_t,w_t))\nabla_w\hat{v}(s_t,w_t)\end{aligned} wt+1=wt+αt(vπ(st)v^(st,wt))wv^(st,wt)
其中 s t s_t st S S S的一个采样。这里 2 α k 2\alpha_k 2αk 合并到了 α k \alpha_k αk

  • 这个算法在实际当中是不能使用的,因为它需要 true state value v π ( s t ) v_\mathrm{\pi}(s_t) vπ(st),这是未如的;
  • 可以使用一个估计(approximation)来替代 v π ( s t ) v_\pi(s_t) vπ(st),这样该筫法就可以实现了;那么如何进行代替呢?有两种方法(采样)
    • 第一种,“Monte Carlo learning” with “value function approximation”
      g t g_t gt表示在episode中从 s t s_t st开始的discounted return, 然后使用 g t g_t gt 近似 v π ( s t ) v_\pi(s_t) vπ(st)。该算法变为
      w t + 1 = w t + α t ( g t − v ^ ( s t , w t ) ) ∇ w v ^ ( s t , w t ) \begin{aligned}w_{t+1}&=w_t+\alpha_t(g_t-\hat{v}(s_t,w_t))\nabla_w\hat{v}(s_t,w_t)\end{aligned} wt+1=wt+αt(gtv^(st,wt))wv^(st,wt)
    • 第二种,“TD learning” with “value function approximate”
      By the spirit of TD learning, r t + 1 + γ v ^ ( s t + 1 , w t ) r_{t+1}+\gamma\hat{v}(s_{t+1},w_t) rt+1+γv^(st+1,wt) 可以视为 υ π ( s t ) \upsilon_\pi(s_t) υπ(st)的一个近似。因此,算法变为:
      w t + 1 = w t + α t [ r t + 1 + γ v ^ ( s t + 1 , w t ) − v ^ ( s t , w t ) ] ∇ w v ^ ( s t , w t ) \color{red}{w_{t+1}=w_t+\alpha_t\left[r_{t+1}+\gamma\hat{v}(s_{t+1},w_t)-\hat{v}(s_t,w_t)\right]\nabla_w\hat{v}(s_t,w_t)} wt+1=wt+αt[rt+1+γv^(st+1,wt)v^(st,wt)]wv^(st,wt)
      在这里插入图片描述
      该方法仅能估计在给定policy情况下的state values。之后我们才会去推广到去估计action value,然后再推广到怎么去和policy improvement相结合,得到能够去搜索最优策略的这样一个算法。

3、如何选择用于拟合的函数 v ^ ( s , w ) \hat{v}(s,w) v^(s,w)

在这里插入图片描述
如何选取函数 v ^ ( s , w ) ? \hat{v}(s,w)? v^(s,w)?

  • 第一种方法,也是之前被广泛使用的,就是linear function
    v ^ ( s , w ) = ϕ T ( s ) w \hat{v}(s,w)=\phi^T(s)w v^(s,w)=ϕT(s)w
    这里的 ϕ ( s ) \phi(s) ϕ(s)是一个feature vector, 可以是polynomial basis, Fourier basis,…。
  • 第二种方法是,现在广泛使用的,就是用一个神经网络作为一个非线性函数近似器。神经网络的输入是state,输出是 v ^ ( s , w ) \hat{v}(s,w) v^(s,w),网络参数是 w w w

Linear function approximation

在这里插入图片描述
在线性的情况中 v ^ ( s , w ) = ϕ T ( s ) w \hat{v}(s,w)=\phi^T(s)w v^(s,w)=ϕT(s)w,我们有:
∇ w v ^ ( s t , w t ) = ϕ ( s ) \nabla_w\hat{v}(s_t,w_t)=\phi(s) wv^(st,wt)=ϕ(s)
将这个带入到TD算法
w t + 1   =   w t   +   α t   [ r t + 1   +   γ v ^ ( s t + 1 , w t )   −   v ^ ( s t , w t ) ] ∇ w v ^ ( s t , w t ) \begin{aligned}w_{t+1}\:=\:w_t\:+\:\alpha_t\:[r_{t+1}\:+\:\gamma\hat{v}(s_{t+1},w_t)\:-\:\hat{v}(s_t,w_t)]\nabla_w\hat{v}(s_t,w_t)\end{aligned} wt+1=wt+αt[rt+1+γv^(st+1,wt)v^(st,wt)]wv^(st,wt)
就变成了
w t + 1   =   w t   +   α t   [ r t + 1   +   γ ϕ T ( s t + 1   ) w t   −   ϕ T ( s t   ) w t   ] ϕ ( s t   ) \begin{aligned}w_{t+1}\:=\:w_t\:+\:\alpha_t\:[r_{t+1}\:+\:\gamma\phi^T(s_{t+1}\:)w_t\:-\:\phi^T(s_t\:)w_t\:]\phi(s_t\:)\end{aligned} wt+1=wt+αt[rt+1+γϕT(st+1)wtϕT(st)wt]ϕ(st)
这个具有线性函数近似的TD learning算法称为TD-Linear。

  • 线性函数近似的劣势是:
    • 需要人工选择合适的feature vector,这个需要你对问题有非常好的理解;但是很多时候即使你有非常好的理解也很难选出来很鲁棒的很好的这种feature vector;这个也是linear function approximation慢慢被神经网络所取代的一个很重要的原因;这个和传统深度学习被现在的深度学习所取代的原因也是类似的;
  • 线性函数近似的优势是:
    • TD算法在线性情况下的理论上的性质与非线性情况相比更容易理解和分析;(在很多领域当中都是这样,就是一个非常难的问题我们很难去理解,那我们退而求其次,去理解一个稍微简单一点的问题,当这个问题很好地理解清楚之后,可以比较好地帮助我们去理解一个更复杂的问题)
    • 线性函数近似仍然在某些情况下使用:tabular representation是linear function approximation的一种少见的特殊情况。

在这里插入图片描述
那么为什么tabular representation是linear function approximation的一种少见的特殊情况?

  • 首先,对于state s s s,选择一个特殊的feature vecton
    ϕ ( s ) = e s ∈ R ∣ S ∣ \phi(s)=e_s\in\mathbb{R}^{|\mathcal{S}|} ϕ(s)=esRS
    其中 e s e_s es 是一个vector,其中第 s s s个元素为1,其他为0.
  • 在这种情况下
    v ^ ( s t , w t ) = e s T w = w ( s ) \hat{v}(s_t,w_t)=e_s^Tw=w(s) v^(st,wt)=esTw=w(s)
    其中 w ( s ) w(s) w(s) w w w的第s个元素。
    在这里插入图片描述
    回顾TD-Linear算法:
    w t + 1   = w t   + α t   [ r t + 1   + γ ϕ T ( s t + 1   ) w t   −   ϕ T ( s t   ) w t   ] ϕ ( s t   ) w_{t+1}\:=w_t\:+\alpha_t\:[r_{t+1}\:+\gamma\phi^T(s_{t+1}\:)w_t\:-\:\phi^T(s_t\:)w_t\:]\phi(s_t\:) wt+1=wt+αt[rt+1+γϕT(st+1)wtϕT(st)wt]ϕ(st)
  • ϕ ( s t ) = e s \phi(s_t)=e_s ϕ(st)=es,上面的算法变成了
    w t + 1   =   w t   +   α t   [ r t + 1   +   γ w t   ( s t + 1   )   −   w t   ( s t   ) ] e s t \begin{aligned}w_{t+1}\:=\:w_t\:+\:\alpha_t\:[r_{t+1}\:+\:\gamma w_t\:(s_{t+1}\:)\:-\:w_t\:(s_t\:)]e_{s_t}\end{aligned} wt+1=wt+αt[rt+1+γwt(st+1)wt(st)]est
    这是一个向量等式,仅仅更新 w t w_t wt的第 s s s个实体。
  • 将上面式子两边乘以 e s t T e_{s_t}^T estT,得到
    w t + 1 ( s t ) = w t ( s t ) + α t [ r t + 1 + γ w t ( s t + 1 ) − w t ( s t ) ] w_{t+1}(s_t)=w_t(s_t)+\alpha_t[r_{t+1}+\gamma w_t(s_{t+1})-w_t(s_t)] wt+1(st)=wt(st)+αt[rt+1+γwt(st+1)wt(st)]
    这就是基于表格形式的TD算法。

4、讲解案例

在这里插入图片描述
在这里插入图片描述

考虑一个5×5的网格世界示例:

  • 给定一个策略,对于任意的 s , a s,a s,a π ( a ∣ s ) = 0.2 \pi(a|s)=0.2 π(as)=0.2

  • 我们的目标是基于该策略,估计state values (策略评估问题)

  • 总计有25种state values。

  • 设置: r f o r b i d d e n   =   r b o u n d a r y   =   − 1 , r t a r g e t   =   1 , γ = 0.9 r_{forbidden}\:=\:r_{boundary}\:=\:-1,r_{target}\:=\:1,\gamma=0.9 rforbidden=rboundary=1,rtarget=1,γ=0.9

这个例子我们仍然考虑我们的grid-world example,这里是5*5的 一共有25个状态量。首先我们给出来了一个策略 用箭头大家也可以看到,这个策略是一个探索性的策略,在每一个状态它对5个action都有相同的概率都是0.2。我们下面要做的是什么呢?就是估计这个策略所对应的state value,对每一个状态我都要计算出来它的state value,这个本质上来说是一个policy evaluation的问题。

如果我用基于表格的方法我肯定要存储25个state value,但是下面我要用TD-Linear的方法来计算,大家可以看到我们能够用比较少的参数也能够比较好地去近似这25个state value。

Ground truth(求解贝尔曼公式的方法得到的每一个state真正的最优state value):
在这里插入图片描述
在这里插入图片描述
为了实现这样的一个目标,我们需要数据(我们没有模型的情况下我们就需要数据),Experience 样本:

  • 这里的数据是我们一共有500个episode,然后每个episode有500步。
  • 每一个episode的出发的state action pair是随机选择的,并且服从一个均匀分布。

为了对比,首先给出表格形式的TD算法(TD-Table)的结果:
在这里插入图片描述

4.1 用平面进行拟合

那么看一下TD-Linear是否也能很好估计出来state value呢?

在这里插入图片描述
那么看一下TD-Linear是否也能很好估计出来state value呢?

第一步就是要建立feature vector。要建立一个函数,这个函数也对应一个曲面,这个曲面能很好地拟合 Q ^{\mathrm{Q}} Q真实的state value对应的曲面。那么函数对应的曲面最简单的情况是什么呢?就是平面,所以这时候选择feature vector等于
ϕ ( s ) = [ 1 x y ] ∈ R 3 \phi(s)=\begin{bmatrix}1\\x\\y\end{bmatrix}\in\mathbb{R}^3 ϕ(s)= 1xy R3
在这种情况下,近似的state value是
v ^ ( s , w ) = ϕ T ( s ) w = [ 1 , x , y ] [ w 1 w 2 w 3 ] = w 1 + w 2 x + w 3 y \hat{v}(s,w)=\phi^T(s)w=[1,x,y]\begin{bmatrix}w_1\\w_2\\w_3\end{bmatrix}=w_1+w_2x+w_3y v^(s,w)=ϕT(s)w=[1,x,y] w1w2w3 =w1+w2x+w3y
注意, ϕ ( s ) \phi(s) ϕ(s)也可以定义为 ϕ ( s ) = [ x , y , 1 ] T \phi(s)=[x,y,1]^T ϕ(s)=[x,y,1]T, 其中这里边的顺序是不重要的。

将刚才的feature vector带入TD-Linear算法中,得到:

在这里插入图片描述

  • 这里边的趋势是正确的,但是有一些错误,这是由于用平面拟合的本身方法的局限性。
  • 我们尝试使用一个平面去近似一个非平面,这是非常困难的。

4.2 用曲面进行拟合

在这里插入图片描述
为了提高近似能力,可以使用high-order feature vectors,这样也就有更多的参数。

  • 例如,我们考虑这样一个feature vector:
    ϕ ( s ) = [ 1 , x , y , x 2 , y 2 , x y ] T ∈ R 6 \begin{aligned}\phi(s)=[1,x,y,x^2,y^2,xy]^T\in\mathbb{R}^6\end{aligned} ϕ(s)=[1,x,y,x2,y2,xy]TR6
    在这种情况下,有
    v ^ ( s , w ) = ϕ T ( s ) w = w 1   + w 2   x + w 3   y + w 4   x 2 + w 5   y 2 + w 6   x y \begin{aligned}\hat{v}(s,w)&=\phi^T(s)w=w_1\:+w_2\:x+w_3\:y+w_4\:x^2+w_5\:y^2+w_6\:xy\end{aligned} v^(s,w)=ϕT(s)w=w1+w2x+w3y+w4x2+w5y2+w6xy
    这对应一个quadratic surface。
  • 可以进一步增加feature vector的维度
    ϕ ( s ) = [ 1 , x , y , x 2 , y 2 , x y , x 3 , y 3 , x 2 y , x y 2 ] T ∈ R 1 0 \begin{aligned}\phi(s)=[1,x,y,x^2,y^2,xy,x^3,y^3,x^2y,xy^2]^T\in\mathbb{R}^10\end{aligned} ϕ(s)=[1,x,y,x2,y2,xy,x3,y3,x2y,xy2]TR10

通过higher-order feature vectors的TD-Linear算法的结果:

在这里插入图片描述

5、Summary of the story

在这里插入图片描述
Summary of the story

  1. 首先从一个objective function出发
    J ( w ) = E [ ( v π ( S ) − v ^ ( S , w ) ) 2 ] \begin{aligned}J(w)=\mathbb{E}[(v_\pi(S)-\hat{v}(S,w))^2]\end{aligned} J(w)=E[(vπ(S)v^(S,w))2]
    这个目标函数表明这是一个policy evaluation问题.
  2. 然后对这个objective function进行优化,优化方法使用gradient-descent algorithm:
    w t + 1 = w t   + α t ( v π ( s t ) − v ^ ( s t , w t ) ) ∇ w v ^ ( s t , w t ) w_{t+1}=w_t\:+\alpha_t(v_\pi(s_t)-\hat{v}(s_t,w_t))\nabla_w\hat{v}(s_t,w_t) wt+1=wt+αt(vπ(st)v^(st,wt))wv^(st,wt)
    但是问题是里边有一个 v π ( s t ) v_{\pi}\left(s_{t}\right) vπ(st)是不知道的。
  3. 第三,使用一个近似替代算法中的true value function v π ( s t ) v_{\pi}\left(s_{t}\right) vπ(st), 得到下面算法:
    w t + 1 = w t   + α t [ r t + 1 + γ v ^ ( s t + 1 , w t   ) − v ^ ( s t   , w t   ) ] ∇ w v ^ ( s t   , w t   ) \begin{aligned}w_{t+1}&=w_t\:+\alpha_t\left[r_{t+1}+\gamma\hat{v}(s_{t+1},w_t\:)-\hat{v}(s_t\:,w_t\:)\right]\nabla_w\hat{v}(s_t\:,w_t\:)\end{aligned} wt+1=wt+αt[rt+1+γv^(st+1,wt)v^(st,wt)]wv^(st,wt)

尽管上面的思路对于理解基本思想是非常有帮助的,但是它在数学上是不严谨的,因为做了替换操作。

6、Theoretical analysis

在这里插入图片描述
一个基本的结论,这个算法
w t + 1 = w t + α t [ r t + 1 + γ v ^ ( s t + 1 , w t ) − v ^ ( s t , w t ) ] ∇ w v ^ ( s t , w t ) w_{t+1}=w_{t}+\alpha_{t}\left[r_{t+1}+\gamma\hat{v}(s_{t+1},w_{t})-\hat{v}(s_{t},w_{t})\right]\nabla_{w}\hat{v}(s_{t},w_{t}) wt+1=wt+αt[rt+1+γv^(st+1,wt)v^(st,wt)]wv^(st,wt)
不是去minimize下面的objective function:
J ( w ) = E [ ( v π ( S ) − v ^ ( S , w ) ) 2 ] \begin{aligned}J(w)=\mathbb{E}[(v_\pi(S)-\hat{v}(S,w))^2]\end{aligned} J(w)=E[(vπ(S)v^(S,w))2]

实际上,有多种objective functions:

  • Objective function 1: True value error
    J ( w ) = E [ ( v π ( S ) − v ^ ( S , w ) ) 2 ] = ∣ ∣ v ^ ( w ) − v π ∣ ∣ D 2 \begin{aligned}J(w)=\mathbb{E}[(v_\pi(S)-\hat{v}(S,w))^2]=||\hat{v}(w)-v_\pi||_D^2\end{aligned} J(w)=E[(vπ(S)v^(S,w))2]=∣∣v^(w)vπD2
  • Objective function 2: Bellman error
    I B E ( w ) = ∣ ∣ v ^ ( w ) − ( r π + γ P π   v ^ ( w ) ) ∣ ∣ D 2 ≐ ∣ ∣ v ^ ( w ) − T π ( v ^ ( w ) ) ∣ ∣ L 2 I_{BE}(w)=||\hat{v}(w)-(r_{\pi}+\gamma P_{\pi}\:\hat{v}(w))||_{D}^{2}\doteq||\hat{v}(w)-T_{\pi}(\hat{v}(w))||_{L}^{2} IBE(w)=∣∣v^(w)(rπ+γPπv^(w))D2∣∣v^(w)Tπ(v^(w))L2
    其中 T π ( x ) ≐ r π + γ P π x T_{\pi}(x)\doteq r_{\pi}+\gamma P_{\pi}x Tπ(x)rπ+γPπx
  • Objective function 3: Projected Bellman error
    J P B E ( w ) = ∣ ∣ v ^ ( w ) − M T π ( v ^ ( w ) ) ∣ ∣ D 2 J_{PBE}(w)=||\hat{v}(w)-MT_{\pi}(\hat{v}(w))||_{D}^{2} JPBE(w)=∣∣v^(w)MTπ(v^(w))D2
    其中 M M M是一个projection matrix (投影矩阵)

简而言之,上面提到的TD-Linear算法在最小化projected Bellman error。




参考资料:
【强化学习】强化学习数学基础:值函数近似
6. 值函数近似(Value Function Approximation)
第六讲 价值函数的近似法(Value Function Approximation)
矩阵特征值和特征向量(Eigenvalue and Eigenvector)

猜你喜欢

转载自blog.csdn.net/u013250861/article/details/135006998