【强化学习的数学原理】第08课-值函数近似-笔记

打印 上一主题 下一主题

主题 1729|帖子 1729|积分 5197

学习资料:bilibili 西湖大学赵世钰老师的【强化学习的数学原理】课程。链接:强化学习的数学原理 西湖大学 赵世钰
  
  

一、例子:曲线拟合

停止到目前为止,我们所先容的state value和action value都是以表格的形式呈现的(如下图所示)。这种呈现方式虽然清晰简单,但难以处理很大/一连的状态空间、动作空间。

下面通过一个例子来先容value function approaximation的根本头脑。
假设现在有                                   ∣                         S                         ∣                              |S|                  ∣S∣个状态,基于给定的策略,每个状态都有一个state value(用下图中的离散点表示,每一个离散点代表状态s对应的state value v(s))。假如状态s的数量非常多,那么储存就耗费很大空间,因此渴望用一个函数来拟合这些点。

起首,用一个直线来拟合这些点。如下图所示。                                   w                              w                  w里面包含a和b,是parameter vector;                                    ϕ                         (                         s                         )                              \phi(s)                  ϕ(s)是特性向量。

用直线举行拟合的好处:节省存储空间。现在不消存储许多状态s的state value,只必要存储两个参数a和b。但缺点是,拟合后的效果只是一个近似值,不那么精确了。
下面是一个非线性的拟合方式,这种方法使用的参数多一些,提高了拟合精度。

简单总结:总体头脑是用参数化的函数来拟合状态s的state value。
优点:
(1)节省存储空间
(2)提高泛化性。假如s1/s2/s3是相邻的三个状态,现在episode访问到了s2,必要更新s2的state value,更新后的state value变大。在表格的形式中,s1和s3的state value值是保持不变的。但是在函数的形式中,s2的state value变化后,拟合的函数发生变化(w变化),此时对s1和s3的state value的估计值也更准确。

二、原理-目标函数先容

                                              v                            π                                  (                         s                         )                              v_{\pi}(s)                  vπ​(s)是state value的真实值,                                             v                            ^                                  (                         s                         ,                         w                         )                              \hat{v}(s,w)                  v^(s,w)是state value的近似值。
我们的目标是找到一个最优的                                   w                              w                  w,使得对于每一个状态                                   s                              s                  s,                                             v                            ^                                  (                         s                         ,                         w                         )                              \hat{v}(s,w)                  v^(s,w)都能最好地近似                                             v                            π                                  (                         s                         )                              v_{\pi}(s)                  vπ​(s)。
为了寻找最优的                                   w                              w                  w,我们定义如下目标函数:

值得指出的是,                                   S                              S                  S是一个随机变量,既然是一个随机变量,这个随机变量就是有概率分布的。那么S的概率分布是什么呢?有几种方式来定义S的概率分布。
第一种方式是均匀分布。这种方式下,每一个状态的权重都是一样的,一共有                                   ∣                         S                         ∣                              |S|                  ∣S∣个状态,那每一个状态的权重就是                                   1                         /                         ∣                         S                         ∣                              1/|S|                  1/∣S∣。但这样的缺点在于,并不是每一个状态都是划一重要,有的状态更重要,我们必要这样的状态权重高一点,盘算的误差小一点。

第二种方式是stationary distribution。在这种方式下,从某一个状态开始,不断地和环境举行交互,交互许多次之后,就达到了一种安稳的状态,在这种安稳的状态下,能够盘算出,每一个状态出现的概率是多少。这个概率分布用                                             d                            π                                  (                         s                         )                              d_{\pi}(s)                  dπ​(s)来表示,基于                                             d                            π                                  (                         s                         )                              d_{\pi}(s)                  dπ​(s)可以把目标函数写成如下图所示的形式。                                             d                            π                                  (                         s                         )                              d_{\pi}(s)                  dπ​(s)实际上饰演了权重的角色。

stationary distribution是状态state 的概率分布,从当前状态出发,跑了许多许多步之后达到的一种安稳的分布。它也被称作steady-state distribbution或者limiting distribution。
下图展示了一个例子。用                                             n                            π                                  (                         s                         )                              n_{\pi}(s)                  nπ​(s)表示在基于                                   π                              \pi                  π的策略基础上,在一个很长的episode中,访问s的次数。                                             d                            π                                  (                         s                         )                              d_{\pi}(s)                  dπ​(s)是比值效果,表示状态被访问的概率。右下角的图表示,随着步长越来越长,比值渐渐趋于稳定。

三、原理-优化算法和函数选择

优化算法
用梯度下降方法求解优化目标。下图给出了梯度下降算法,以及盘算了目标函数                                   J                         (                         w                         )                              J(w)                  J(w)的梯度。

而这个梯度算出来是有期望的,期望不太好算,以是下面使用随机梯度来代替真实的梯度。

但是这个算法仍然是不好实施的,由于                                             v                            π                                  (                                   s                            t                                  )                              v_{\pi}(s_t)                  vπ​(st​)的值是不知道的。可以用其他量来代替                                             v                            π                                  (                                   s                            t                                  )                              v_{\pi}(s_t)                  vπ​(st​)。
第一种方法:Monte Carlo的方法。用                                   g                         (                         t                         )                              g(t)                  g(t)来代替                                             v                            π                                  (                                   s                            t                                  )                              v_{\pi}(s_t)                  vπ​(st​),                                   g                         (                         t                         )                              g(t)                  g(t)是在某一个episode中从状态                                             s                            t                                       s_t                  st​出发所得到的discounted return。(这个头脑就是和蒙特卡洛方法一致的)

第二种方法:TD learning的方法。把                                             v                            π                                  (                                   s                            t                                  )                              v_{\pi}(s_t)                  vπ​(st​)用下式来代替。

TD learning算法的伪代码如下。(分为general case和linear case两种环境)值函数估计的目标还是盘算给定策略的state value。

函数选择
怎样选择函数                                             v                            ^                                  (                         s                         ,                         w                         )                              \hat{v}(s,w)                  v^(s,w)呢?
第一种方法,是用线性函数linear function作为                                             v                            ^                                  (                         s                         ,                         w                         )                              \hat{v}(s,w)                  v^(s,w)。(以前常用)
第二种方法,是用神经网络作为一种非线性函数近似。神经网络的输入是状态state,输出是近似的效果                                             v                            ^                                  (                         s                         ,                         w                         )                              \hat{v}(s,w)                  v^(s,w)。网络权重是                                   w                              w                  w。(现在常用)
下面看一下线性的环境。假如                                             v                            ^                                  (                         s                         ,                         w                         )                              \hat{v}(s,w)                  v^(s,w)用线性函数表示,则其梯度为                                   ϕ                         (                         s                         )                              \phi(s)                  ϕ(s),把这个梯度应用到TD算法中,就得到如下图3所示的效果。这也被称作TD-Linear。

Linear function approximation的优劣势:
劣势:很难去选择一个好的feature vector。(好的拟合函数)
上风:相对于非线性函数,线性函数的理论性质能被很好地分析;线性函数的表征能力相对还是比力强的。
四、原理-示例与分析

例1:
下面是一个5*5的网格世界的例子,目标是用函数拟合的方法,在给定策略的基础上盘算25个状态的state value。

下图展示了Ground truth。我们收集了500个episode,每个episode有500步。每个episode出发的state action pair是随机选择的,并服从均匀分布。

1.用一个平面来拟合
下面用TD-Linear算法来求解。所选择的feature vector实际上是一个平面(有x、y)。

下图(中心)给出了TD Linear的盘算效果,下图(左边)是ground truth。可以看出,趋势是对的,但对于某些状态估计得不太准确。由于我的拟合函数只是一个平面,而真实效果是一个复杂的曲面。

2.用更高阶的曲面来拟合
从拟合效果中可以看出来,用更高阶的曲面来拟合,效果更好了。


小结:

PS:从(2)到(3)的更换在数学上是不严谨的。更详细的分析可以见赵老师的书。
五、Sarsa和Q-learning

Sarsa with function approximation
下图是Sarsa和value function approaximation相联合后的算法。和上一节讲到的TD算法相比,就是把                                              v                            ^                                  (                                   s                            t                                  )                              \hat{v}(s_t)                  v^(st​)换成                                              q                            ^                                  (                                   s                            t                                  ,                                   a                            t                                  )                              \hat{q}(s_t,a_t)                  q^​(st​,at​)。这里本质上仍然是在做policy evaluation,action value                                              q                            ^                                  =                                   ϕ                            T                                  w                              \hat{q}=\phi^Tw                  q^​=ϕTw。

下图是伪代码。起首在当前状态                                             s                            t                                       s_t                  st​的环境下遵循策略选择动作                                             a                            t                                       a_t                  at​,产生                                             r                                       t                               +                               1                                                 r_{t+1}                  rt+1​和                                             s                                       t                               +                               1                                                 s_{t+1}                  st+1​,然后在新的状态下遵循策略选择新的动作                                             a                                       t                               +                               1                                                 a_{t+1}                  at+1​。然后举行value update 过程,对参数w举行更新,这里本质上仍然是在做policy evaluation。再举行policy update过程,这里接纳的是                                   ϵ                              \epsilon                  ϵ-greedy的方法。

下图展示了将Sarsa和linear function approximation联合的例子。使命是从某一状态出发,到达目标状态。

Q-learning with function approximation
算法如下:

这是Q-learning with function approximation(on policy)版本的伪代码。

下图展示了将Q-learning和linear function approximation联合的例子。使命是从某一状态出发,到达目标状态。

六、Deep Q-learning (DQN) 根本原理

DQN把深度神经网络引入到强化学习中。下图的                                   J                         (                         w                         )                              J(w)                  J(w)展示了DQN的目标函数/损失函数。假如达到最优的话,loss function应该是即是0。

然后用梯度下降法对目标函数举行优化。但对这个目标函数求梯度有点困难。由于第二部分的梯度好求,但是第一部分的梯度有点难求。可以把第一部分+R看作一个团体y。

设计两个网络,在main network中,参数是w,w是一直被更新的,有新的采样进来的时候,就会被更新。但在target network中,参数是                                             w                            T                                       w_T                  wT​,这个参数不是一直被更新的,隔一段时间之后,会把main network中的参数w的值给赋值过来。末了,                                   w                              w                  w和                                             w                            T                                       w_T                  wT​都能收敛到最优的值。

以是它的梯度公式最终是写成这样的:

值得强调的是,DQN使用了两个网络,main network和target network,其参数分别是                                   w                              w                  w和                                             w                            T                                       w_T                  wT​。在每次迭代中,从replay buffer中提取一些sample,使得输出的效果尽量接近                                             y                            T                                       y_T                  yT​。训练一段时间后,参数                                   w                              w                  w的值变化了,把这个值赋给                                             w                            T                                       w_T                  wT​,                                             w                            T                                       w_T                  wT​再用来训练这个                                   w                              w                  w。

七、Deep Q-learning (DQN) Experience replay(履历回放)

什么是履历回放?
在收集数据experience samples的时候,是有肯定的先后次序的,但是在使用数据的时候,并不肯定要遵循这个次序。我们把这些数据存到一个                                   B                              B                  B聚会集(从状态s出发,接纳action a,得到reward r,跳转到下一个状态s’),这个聚集的名字叫replay buffer。
每次训练神经网络的时候,从这个replay buffer中抽取一些mini-batch的随机样本。这些样本的抽取叫做experience replay,这必要遵循均匀分布。

为什么要履历回放?
为什么要在deep Q-learning中使用experience replay?为什么这个replay必须遵循均匀分布呢?
把                                   (                         S                         ,                         A                         )                              (S,A)                  (S,A)当成一个索引,将其当成一个随机变量。给定                                   (                         S                         ,                         A                         )                              (S,A)                  (S,A)后,                                   R                              R                  R和                                             S                            ′                                       S'                  S′都服从体系的模子。假设                                   (                         S                         ,                         A                         )                              (S,A)                  (S,A)服从均匀分布(由于我们没有先验知识,无法判断哪些                                   (                         s                         ,                         a                         )                              (s,a)                  (s,a)重要,哪些不重要,以是我们只能让它服从均匀分布)。

为了不按照采集experience的次序使用数据,接纳了experience replay履历回放的方法,把数据打散,然后再均匀地从中抽取数据。
八、Deep Q-learning (DQN) 代码与例子

下面是Deep Q-learning的伪代码,off-policy 版:

初始的策略                                             π                            b                                       \pi_b                  πb​产生了许多sample,这些sample被存在聚集                                   B                              B                  B中。下面在每一个iteration中,起首从聚集                                   B                              B                  B中举行随机的采样,然后对采样举行进一步的处理,盘算                                             y                            T                                       y_T                  yT​(渴望近似值                                             q                            ^                                       \hat{q}                  q^​尽可能地接近                                             y                            T                                       y_T                  yT​)。然后把                                   (                         s                         ,                         a                         ,                                   y                            T                                  )                              (s,a,y_T)                  (s,a,yT​)送入到神经网络中举行训练。每颠末C次迭代,就把                                   w                              w                  w赋值给                                             w                            T                                       w_T                  wT​。
例子:
使命是对所有的state action pair,去找到其optimal action value。一些具体的设置如下图所示。必要留意的是,这里设计的神经网络很简单,只有三层:隐藏层、输入层、输出层,隐藏层只有100个神经元。

下面是效果。可以看到TD error和state value error渐渐收敛到0。


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

泉缘泉

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表