机器学习与深度学习系列连载: 第三部分 强化学习(六) 价值函数的近似表示

价值函数的近似表示

通过强化学习的基础理论,只能解决一些中小规模的问题,很多价值函数需要用一张大表来存储,获取某一状态或行为价值的时候通常需要一个查表操作(Table Lookup),这对于那些状态空间或行为空间很大的问题几乎无法求解,而许多实际问题都是这些拥有大量状态和行为空间的问题,因此只掌握强化学习的基础理论,是无法较好的解决实际问题的。本篇开始的内容就主要针对如何解决实际问题。

本篇主要解决各种价值函数的近似表示和学习,下一篇则主要集中与策略相关的近似表示和学习。在实际应用中,对于状态和行为空间都比较大的情况下,精确获得各种v(S)和q(s,a)几乎是不可能的。这时候需要找到近似的函数,具体可以使用

  • 线性组合
  • 神经网络

近似价值函数。
在这里插入图片描述
w 表示引入的参数,通常是一个矩阵或至少是一个向量。

通过函数近似,可以用少量的参数w来拟合实际的各种价值函数。本篇同时在理论上比较了各种近似方法的优缺点以及是否收敛与最优解等。本讲将各种近似方法分为两大类:

  • 一类是“递增方法”,针对每一步,近似函数得到一些信息,立即优化近似函数,主要用于在线学习;
  • 另一类是“批方法”,针对一批历史数据集中进行近似。两类方法没有明显的界限,相互借鉴。

本篇先讲解了引入价值函数的近似表示的重要性,接着从梯度开始讲起,使用梯度下降可以找到一个目标函数的极小值,以此设计一个目标函数来寻找近似价值函数的参数。有机器学习基础的读者理解本节会非常容易。

本篇的理论重点在于理解不同强化学习方法在应用不同类型的近似函数时的收敛性,能否获得全局最优解,以及DQN算法的设计思想及算法流程。

1. 简介 Introduction

  • 大规模强化学习 Large-Scale Reinforcement Learning

    强化学习可以用来解决大规模问题,例如围棋有 1 0 170 10^{170} 10170 个状态空间,控制直升机飞行需要的是一个连续状态空间。如何才能将强化学习应用到这类大规模的问题中,进而进行预测和控制呢?

  • 近似价值函数 Value Function Approximation

    到目前为止,我们使用的是查表(Table Lookup)的方式,这意味着每一个状态或者每一个状态行为对对应一个价值数据。对于大规模问题,这么做需要太多的内存来存储,而且有的时候针对每一个状态学习得到价值也是一个很慢的过程。

对于大规模问题,解决思路可以是这样的:

  1. 通过函数近似来估计实际的价值函数:

在这里插入图片描述

  1. 把从已知的状态学到的函数通用化推广至那些未碰到的状态中

  2. 使用MC或TD学习来更新函数参数。

  • 近似函数的类型 Types of Value Function Approximation

针对强化学习,近似函数根据输入和输出的不同,可以有以下三种架构:
在这里插入图片描述

  1. 针对状态本身,输出这个状态的近似价值;

  2. 针对状态行为对,输出状态行为对的近似价值;

  3. 针对状态本身,输出一个向量,向量中的每一个元素是该状态下采取一种可能行为的价值。

2. 近似函数方法 Function Approximator

所有和机器学习相关的一些算法都可以应用到强化学习中来,其中线性回归和神经网络在强化学习里应用得比较广泛,主要是考虑这两类方法是一个针对状态可导的近似函数。

强化学习应用的场景其数据通常是非静态、非独立均匀分布的,因为一个状态数据是可能是持续流入的,而且下一个状态通常与前一个状态是高度相关的。因此,我们需要一个适用于非静态、非独立均匀分布的数据的训练方法来得到近似函数。

下面分别从递增方法和批方法两个角度来讲解价值函数的近似方法,其主要思想都是梯度下降,与机器学习中的随机梯度下降和批梯度下降相对应。

(1) 递增方法 Incremental Methods

  • 梯度下降 Gradient Descent
    假定J(w)是一个关于参数w的可微函数,定义J(w)的梯度如下:
    在这里插入图片描述

调整参数超朝着负梯度的方向,寻找J(w)的局部最小值:
在这里插入图片描述

式中α是步长参数,机器学习里称为学习速率参数

在强化学习中:

目标:找到参数向量w,最小化近似函数 v ^ ( S , w ) \hat{v}(S,w) v^(S,w)与实际函数 v π ( S ) v_{\pi}(S) vπ(S) 的均方差:
在这里插入图片描述

梯度下降能够找到局部最小值:

在这里插入图片描述

使用随机梯度下降对梯度进行更新,来近似差的期望:

在这里插入图片描述

每一步,参数朝着实际的价值函数进行一定程度地逼近。

  • 线性函数近似——特征向量 Linear Function Approximation - Feature Vectors

用一个特征向量表示一个状态
在这里插入图片描述

每一个价值函数是由以w表示的不同强度的特征来线性组合得到:
可以通过对特征的线性求和来近似价值函数:
在这里插入图片描述

这样,我们的目标函数可以表示成:
在这里插入图片描述

使用随机梯度下降可以收敛至全局最优解。

参数更新规则相对比较简单:

在这里插入图片描述

即:参数更新量 = 步长 × 预测误差 × 特征值

“查表”方法是一个特殊的线性价值函数近似方法:每一个状态看成一个特征,个体具体处在某一个状态时,该状态特征取1,其余取0。参数的数目就是状态数,也就是每一个状态特征有一个参数,这比较简单,具体就不列公式了。

  • 预测——递增算法 Incremental Prediction Algorithms

事实上,之前所列的公式都不能直接用于强化学习,因为公式里都有一个实际价值函数 v π ( S ) v_{\pi}(S) vπ(S) ,或者是一个具体的数值,而强化学习没有监督数据,因此不能直接使用上述公式。

强化学习里只有即时奖励,没有监督数据。我们要找到能替代 v_{\pi}(S) 的目标值,以便来使用监督学习的算法学习到近似函数的参数。

对于MC算法,目标值就是收获:
在这里插入图片描述
对于TD(0),目标值就是TD目标:
在这里插入图片描述
对于TD(λ),目标值是λ收获:
在这里插入图片描述

(2) 控制——递增算法

把近似函数引入到控制过程中,我们需要能够近似状态行为对的价值函数近似而不是仅针对状态的价值函数近似。
如图所示:
在这里插入图片描述

从一系列参数开始,得到一个近似的状态行为对价值函数,在Ɛ-greedy执行策略下产生一个行为,执行该行为得到一个即时奖励,以此数据计算目标值,进行近似函数参数的更新。再应用这个策略得到后续的状态和对应的目标值,每经历一次状态就更新依次参数,如此反复进行策略的优化,同时逼近最优价值函数。

策略评估:是一个近似策略评估 q ^ ( ⋅ , ⋅ , w ) ≈ q π \hat{q}(\cdot,\cdot,w) \approx q_{\pi} q^(,,w)qπ ,特别是早期误差会较大,而且这种近似无法最终收敛于最优策略对应的行为价值函数,只能在其周围震荡,后文将讲述改进方法。

策略改善:使用Ɛ-greedy执行。

行为价值函数近似表示为:
在这里插入图片描述

最小化均方差
在这里插入图片描述

使用随机梯度下降来寻找局部最优解:
在这里插入图片描述

在这里插入图片描述

同样我们介绍使用线性函数来近似状态行为价值函数时的公式,状态行为价值可以用特征向量表示:
在这里插入图片描述

如此,线性特征组合的状态行为价值近似函数可以表示为:
在这里插入图片描述

在这里插入图片描述

随机梯度下降更新参数:
在这里插入图片描述
在这里插入图片描述

(3) 线性控制算法
与预测算法类似,我们找到真实行为价值的目标值。

对于MC算法,目标值就是收获:
在这里插入图片描述
对于TD(0),目标值就是TD目标:
在这里插入图片描述
对于前向认识TD(λ),目标值是λ收获:
在这里插入图片描述
对于后向认识TD(λ),对应的参数更新是:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

(4) 示例——小车爬山
在这里插入图片描述

小车爬山是一个经典的强化学习示例。环境如图左上角所示,小车被困于山谷,单靠小车自身的动力是不足以在谷底由静止一次性冲上右侧目标位置的,比较现时的策略是,当小车加速上升到一定位置时,让小车回落,同时反向加速,使其加速冲向谷底,借助势能向动能的转化冲上目标位置。现在问题是在模型位置的情况下,如何用强化学习的方法找到小车冲上目标位置的最优策略。

状态空间是小车的位置和速度,其它几张三维图展示的是经过不同步数(上中图)以及不同Episode(其余几张三维图)的学习,小车位于某个位置同时具有某个速度的状态价值。在这个例子中,行为空间是离散的,只能选则正向的最大油门和反向的最大油门两个离散值。

最后小车使用SARSA学习到了接近最优策略的价值函数,如下图:
在这里插入图片描述

实际上这里没有显示状态行为价值图,主要是因为行为空间是一维2个离散变量,在任何一个状态,两个行为中只有一个行为是有正向价值的,另一个则是负向价值的。因此根据Bellman最优方程,状态空间价值总选择正向行为价值的那个数值。

  • 关于λ——需要Bootstrap吗?
    下图显示了几种不同的任务,使用不同λ进行的强化学习算法分析结果。总的来说λ=1的时候通常算法表现是很差的,TD(0)是比MC好得多的方法,这说明了Bootstrap的重要性;不同的任务对应的最优λ值是不太容易确定的。
    在这里插入图片描述

  • 收敛性

预测学习

MC使用的是实际价值的有噪声无偏估计,虽然很多时候表现很差,但总能收敛至局部或全局最优解。TD性能通常更加优秀,是否意味着TD也是一直收敛的呢?答案是否定的。David给出了一个TD学习不收敛的例子,这里不再详述,这里给出各种算法在使用不同近似函数进行预测学习时是否收敛的小结

在这里插入图片描述

注:打钩表示能收敛,打叉表示不收敛。

从表中可以看出,没有函数近似时,各种算法都收敛;
线性函数近似时现时策略学习可以收敛,但离线策略时仅有MC收敛;
非线性函数近似时无论采用现时策略还是离线策略只有MC收敛。而MC算法在实际中是很少使用的。这给强化学习的实际应用带来的挑战。好在我们有一些改善TD算法的办法。

TD算法在更新参数时不遵循任何目标函数的梯度是导致它在离线策略或使用非线性近似函数可能会发散的原因,我们可以通过修改TD算法使得它遵循Projected Bellman Error的梯度进而收敛

在这里插入图片描述

3. 控制学习

针对控制学习的算法,其收敛性比较如下图:
在这里插入图片描述

针对控制学习算法,大多数都能得到较好的策略,但是理论上只要存在函数近似,就都不是严格收敛的,比较常见的是在最优策略上下震荡,逐渐逼近然后突然来一次发散,再逐渐逼近等。使用非线性函数近似的效果要比近似函数要差很多,实际也是如此。

  • 批方法 Batch Methods
    前面所说的递增算法都是基于数据流的,经历一步,更新算法后,我们就不再使用这步的数据了,这种算法简单,但有时候不够高效。与之相反,批方法则是把一段时期内的数据集中起来,通过学习来使得参数能较好地符合这段时期内所有的数据。这里的训练数据集“块”相当于个体的一段经验。

(1) 最小平方差预测
假设存在一个价值函数的近似:
在这里插入图片描述
以及一段时期的、包含<状态、价值>的经历D:
在这里插入图片描述

最小平方差算法要求找到参数w,使得下式值最小:
在这里插入图片描述

这就相当于经历重现(Experience Replay),把一段时期内的经历重新过一遍,更新参数。这种算法实现起来不是很难,只要重复:

  1. 从经历中去除一个<s,v>:
    在这里插入图片描述

  2. 应用随机梯度下降来更新参数:
    在这里插入图片描述

  3. 这将收敛至针对这段经历最小平方差的参数
    在这里插入图片描述

  • 批方法应用于DQN网络
    TD方法结合非线性的神经网络函数近似可能不会收敛,但DQN(Deep Q-Networks) 使用 经历重现和固定的Q目标值 能做到收敛而且保持很好的鲁棒性。在解释其收敛之前先要介绍DQN算法的要点:
  1. 依据Ɛ-greedy执行策略产生t时刻的行为;

  2. 将大量经历数据(例如百万级的)以 (s_t, a_t, r_{t+1}, s_{t+1}) 存储在内存里,作为D大块;

  3. 从D大块中随机抽取小块(例如64个样本数据)数据 (s, a, r, s’) ;

  4. 维护两个神经网络DQN1,DQN2,一个网络固定参数专门用来产生目标值,目标值相当于标签数据。另一个网络专门用来评估策略,更新参数。

  5. 优化关于Q网络和Q目标值之间的最小平方差:
    在这里插入图片描述

  6. 用随机梯度下降的方式更新参数。

首先,随机采样打破了状态之间的联系;第二个神经网络会暂时冻结参数,我们从冻结参数的网络而不是从正在更新参数的网络中获取目标值,这样增加了算法的稳定性。经过一次批计算后,把冻结参数的网络换成更新的参数再次冻结产生新一次迭代时要用的目标值。

这里举了一个应用DQN玩Atari类游戏的例子,算法直接对屏幕进行拍照,将最近4帧的屏幕图像送入一个卷积神经网络,最终输出针对游戏手柄的18个按钮精细方位的Q(s,a)值算法直接获取游戏屏幕的图像信息,对应的近似函数类型好像是第三类,奖励信息根据当时屏幕显示的分数确定。这种设计在50中Atari类游戏中测试,表现很好。具体可以参考原讲义图表。

此外用了一张表比较了在DQN中有没有应用固定参数、以及有没有使用经历重现(批方法)两个条件时在5款游戏中的表现,结果体现了这两个条件联合应用的优势:

在这里插入图片描述

  • 批方法的直接计算
    通过比较发现使用批方法能够找到最小平方差的解决方案,提高算法的稳定性,但是它需要多次迭代。我们可以设计一个价值函数的线性近似函数:
    在这里插入图片描述
    然后直接求解参数。求解思路是逆向思维,假设已经找到这个参数,那么他应该满足最小LS(w),通过把LS展开,可以直接得到w:

在这里插入图片描述

这种方法直接求解的时间复杂度是 O ( N 3 ) O(N^3) O(N3) , 使用Shermann-Morrison法求解复杂度是 O ( N 2 ) O(N^2) O(N2) ,n是特征数量,这意味着求解该问题的难度与设计的特征数量多少有关,而与状态空间大小无关,因此适合应用与那些特征较少的问题。

将这种方法分别应用于MC, TD, 和TD()学习方法,就分别得到LSMC, LSTD, 和LSTD(λ)。结合之前的各种价值函数的近似这里直接贴上w求解公式:

在这里插入图片描述

下图展示了各种方法的收敛性比较:
在这里插入图片描述

  • 最小平方差控制
    使用最小平房差进行策略迭代的原理和结局如图所示:

在这里插入图片描述

在这里插入图片描述
策略评估使用 最小平方差Q学习,策略改善使用:Greedy 搜索策略。如果使用最小平方差方法进行策略控制,我们必须要设计针对行为价值函数的线性近似:

在这里插入图片描述

使用下列经历,最小化 q ^ ( s , a , w ) 和 q π ( s , a ) \hat{q}(s,a,w) 和 q_{\pi}(s,a) q^(s,a,w)qπ(s,a) 的平方差:
在这里插入图片描述

对于策略评估我们希望改善策略,使用类似Q学习的方法,进行离线策略学习。

本专栏图片、公式很多来自David Silver主讲的UCL-Course强化学习视频公开课和台湾大学李宏毅老师的深度强化学习课程,在这里,感谢这些经典课程,向他们致敬!

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值