一、Introduction
(一)Large-Scale Reinforcement Learning
强化学习可用于解决较大的问题,例如:
- Backgammon: states
- Computer Go: states
- Helicopter: continuous state space
在最近的两堂课中,我们如何扩展无模型的预测和控制方法?
(二)Value Function Approximation
- 到目前为止,我们已经通过查找表(lookup table)表示了值函数
- 每个状态s都有一个条目V(s)
- 或每个状态-动作对(s,a)都有有一个条目Q(s,a)
- Problem with large MDPs:
- states and/or actions太多,无法存储在内存中
- 单独学习每个状态的值太慢
到目前为止,我们使用的是查表(Table Lookup)的方式,这意味着每一个状态或者每一个状态行为对对应一个价值数据。对于大规模问题,这么做需要太多的内存来存储,而且有的时候针对每一个状态学习得到价值也是一个很慢的过程
- Solution for large MDPs:
-
过函数近似来估计实际的价值函数
- 把从已知的状态学到的函数通用化推广至那些未碰到的状态中
- 用MC或TD学习来更新函数参数。
-
(三)Types of Value Function Approximation
针对强化学习,近似函数根据输入和输出的不同,可以有以下三种架构:
针对状态本身,输出这个状态的近似价值;
针对状态行为对,输出状态行为对的近似价值;
针对状态本身,输出一个向量,向量中的每一个元素是该状态下采取一种可能行为的价值。
(四)Which Function Approximator?
有许多函数逼近器,例如
- 特征的线性组合
- 神经网络
- 决策树
- 最近邻
- 傅立叶/小波基
- ......
我们考虑可微函数逼近器,例如
- 决策树
- 最近邻
- 傅立叶/小波基
- ......
此外,我们需要一种适用于的训练方法
所有和机器学习相关的一些算法都可以应用到强化学习中来,其中线性回归和神经网络在强化学习里应用得比较广泛,主要是考虑这两类方法是一个针对状态可导的近似函数。
强化学习应用的场景其数据通常是非静态、非独立均匀分布的,因为一个状态数据是可能是持续流入的,而且下一个状态通常与前一个状态是高度相关的。因此,我们需要一个适用于非静态、非独立均匀分布的数据的训练方法来得到近似函数。
下面分别从递增方法和批方法两个角度来讲解价值函数的近似方法,其主要思想都是梯度下降,与机器学习中的随机梯度下降和批梯度下降相对应。
二、Incremental Methods
(一)Gradient Descent
- 假定是参数向量为的可微函数
- 定义的梯度为
- 调整参数超朝着负梯度的方向,寻找的局部最小值
是一个步长参数,机器学习里称为学习速率参数
用随机梯度下降来近似价值函数
- 目标:找到参数向量,最小化近似函数与实际函数 的均方差:
-
梯度下降能够找到局部最小值:
-
使用随机梯度下降对梯度进行更新,来近似差的期望:
(二)Linear Function Approximation
Feature Vectors
-
用特征向量表示状态
- 例如:
- 机器人到地标的距离
- 股市趋势
- 象棋棋子和棋子配置
Linear Value Function Approximation
-
通过特征的线性组合表示值函数
-
参数为w的目标函数是二次函数
- 随机梯度下降收敛于全局最优
-
更新规则特别简单
在线性函数逼近下,
所以更新式可以简化为
Table Lookup Features
- 查表是线性值函数逼近的一种特殊情况
-
使用表格查询特征
-
参数向量w给出每个状态的值
每一个状态看成一个特征,个体具体处在某一个状态时,该状态特征取1,其余取0。参数的数目就是状态数,也就是每一个状态特征有一个参数。
(三)增量预测算法
- 假设有监督者给出了真正的值函数
- 但是在RL中没有监督,只有rewards
- 实际上,我们用一个target代替
- 在MC中,target是回报
- 在MC中,target是回报
- 在TD(0)中,target是TD target
- 在TD()中,target是
1、Monte-Carlo with Value Function Approximation
- return 是对真实值的无偏差、无噪声取样
-
因此可以将监督学习应用于“训练数据”:
-
例如,使用线性蒙特卡洛策略评估
- 蒙特卡洛评估收敛到局部最优(为什么?书上和老师都没说)
有两个原因:
- 蒙特卡洛算法并不能穷尽搜索所有的状态。由于它需要到episode结束才能进行计算,效率并不算高,样本不够多。
- 并不算是一个目标(target)
- 即使使用非线性值函数逼近
3、TD Learning with Value Function Approximation
- TD-target 是对真实值的有偏差采样。
-
仍可以将监督学习应用于“ 训练数据”:
例如,使用线性TD(0)
- 线性TD(0)收敛(接近)到全局最优(以为教授证明得到)
- 一方面是TD每一个时间步就可以进行更新,可取得的样本更多
- TD target 是一个目标,每次更新都朝着目标前进,更容易收敛。
4、TD() with Value Function Approximation
- 也是对真实值的有偏差采样。
-
可以再次将监督学习应用于“ 训练数据”:
- Forward view linear TD()
- Backward view linear TD()
前视图和后视图线性 TD() 是等效的
5、 Control with Value Function Approximation
把近似函数引入到控制过程中,我们需要能够近似状态行为对的价值函数近似而不是仅针对状态的价值函数近似。
如图所示:
从一系列参数开始,得到一个近似的状态行为对价值函数,在Ɛ-greedy执行策略下产生一个行为,执行该行为得到一个即时奖励,以此数据计算目标值,进行近似函数参数的更新。再应用这个策略得到后续的状态和对应的目标值,每经历一次状态就更新依次参数,如此反复进行策略的优化,同时逼近最优价值函数。
策略评估:是一个近似策略评估 ,特别是早期误差会较大,而且这种近似无法最终收敛于最优策略对应的行为价值函数,只能在其周围震荡,后文将讲述改进方法。
策略改进:Ɛ-greedy策略进行改进
6、Action-Value Function Approximation
-
近似action-value函数
- 最小化近似作用值函数与真实作用值函数之间的均方误差
-
用随机梯度下降方法找到局部最小值:
7、Linear Action-Value Function Approximation
-
同样我们介绍使用线性函数来近似状态行为价值函数时的公式,状态行为价值可以用特征向量表示:
-
通过特征的线性组合表示作用值函数
-
随机梯度下降更新
8、Incremental Control Algorithms
- 与预测算法类似,我们找到真实行为价值的目标值。
- 对于MC算法,目标值就是return :
- 对于MC算法,目标值就是return :
-
对于TD(0),目标值就是TD目标:
-
对于前向认识TD(λ),目标值是λ-return:
-
对于后向认识TD(λ),对应的参数更新是:
(四)Mountain Car
1、山区汽车中带有粗编码的线性Sarsa
小车爬山是一个经典的强化学习示例。环境如图左上角所示,小车被困于山谷,单靠小车自身的动力是不足以在谷底由静止一次性冲上右侧目标位置的,比较现时的策略是,当小车加速上升到一定位置时,让小车回落,同时反向加速,使其加速冲向谷底,借助势能向动能的转化冲上目标位置。现在问题是在模型位置的情况下,如何用强化学习的方法找到小车冲上目标位置的最优策略。
状态空间是小车的位置和速度,其它几张三维图展示的是经过不同步数(上中图)以及不同Episode(其余几张三维图)的学习,小车位于某个位置同时具有某个速度的状态价值。
最初的动作是0,这是乐观的(注意,这个任务中所有的真实价值都是负数),这使得即使试探参数为0,也会引起广泛的试探。这可以从图的中间顶部为“step 428”的图中可以看到。尽管这时候一个episode都没完成,但是车子在山谷里沿着状态空间的弧形轨迹来回摆动。所有经常访问的状态的价值函数都比未试探到的状态低,这是因为实际的收益比(不切实际的)预期的要差。这会不断驱使智能体离开其所在的地点,去探索新的状态,直到找到最优解决方案。
最后小车使用SARSA学习到了接近最优策略的价值函数,如下图:
2、Study of Should We Bootstrap?
下图显示了几种不同的任务,使用不同λ进行的强化学习算法分析结果。总的来说λ=1的时候通常算法表现是很差的,TD(0)是比MC好得多的方法,这说明了Bootstrap的重要性;不同的任务对应的最优λ值是不太容易确定的。
五、Convergence(收敛)
1、预测算法的收敛性
MC使用的是实际价值的有噪声无偏估计,虽然很多时候表现很差,但总能收敛至局部或全局最优解。TD性能通常更加优秀,是否意味着TD也是一直收敛的呢?答案是否定的。David给出了一个TD学习不收敛的例子,这里不再详述,这里给出各种算法在使用不同近似函数进行预测学习时是否收敛的小结。
注:打钩表示能收敛,打叉表示不收敛。
从表中可以看出,没有函数近似时,各种算法都收敛;
线性函数近似时现时策略学习可以收敛,但离线策略时仅有MC收敛;
非线性函数近似时无论采用现时策略还是离线策略只有MC收敛。而MC算法在实际中是很少使用的。这给强化学习的实际应用带来的挑战。好在我们有一些改善TD算法的办法。
2、Gradient Temporal-Difference Learning
- TD不遵循任何目标函数的梯度
- 这就是为什么当off-policy或使用非线性函数逼近时TD可能会发散的原因
-
我们可以通过修改TD算法使得它遵循Projected Bellman Error的梯度进而收敛。
3、Convergence of Control Algorithms
针对控制学习的算法,其收敛性比较如下图:
(对勾)代表在最佳值函数附近震荡
针对控制学习算法,大多数都能得到较好的策略,但是理论上只要存在函数近似,就都不是严格收敛的,比较常见的是在最优策略上下震荡,逐渐逼近然后突然来一次发散,再逐渐逼近等。使用非线性函数近似的效果要比近似函数要差很多,实际也是如此。
三、Batch Methods
(一)Batch Reinforcement Learning
- 梯度下降很简单而且很吸引人
- 但是不够取样是不够高效的
- 批处理方法寻求找到最佳价值函数
- 根据智能体的经验(“训练数据”)
前面所说的递增算法都是基于数据流的,经历一步,更新算法后,我们就不再使用这步的数据了,这种算法简单,但有时候不够高效。与之相反,批方法则是把一段时期内的数据集中起来,通过学习来使得参数能较好地符合这段时期内所有的数据。这里的训练数据集“块”相当于个体的一段经验。
(二)最小平方差预测
- 假设存在一个价值函数的近似
-
以及一段时期的、包含<状态、价值>的经历D:
- 最小平方差算法要求找到参数w,使得下式值最小:为目标值
1、Stochastic Gradient Descent with Experience Replay
给出包含<state,value>对的经验:
Repeat:
-
Sample state, value from experience
-
Apply stochastic gradient descent update
这将收敛至针对这段经历最小平方差的参数:
2、Experience Replay in Deep Q-Networks (DQN)
DQN使用experience replay和fixed Q-targets(再建立第二个神经网络,我们实际上是在用两套神经网络运行的,因此也就是两套完全不同的参数向量,我们一般会冻结老的神经网络,试图存储下所有看过的信息,之后我们就会用目标对冻结的目标一个引导辅助程序,我们并不是对新设立的目标做辅助引导程序,这样就能使得程序更加稳定。仅从字面意思上来看的话,我们对老的神经网络的几千条信息进行升级处理,逐步替换就能够形成新的神经网络。我们永远不会直接对目前的新目标进行辅助引导,因为那是不稳定的。在你设立的目标和你的实际价值之间是有一定联系的,这使得你的神经网络不受控制。)
- 根据策略产生行动
- 将经验以的形式存储到replay memery D
- 从D中随机抽样一个mini-batch的经验
- 用固定参数计算Q-learning target,维护两个神经网络DQN1,DQN2,一个网络固定参数专门用来产生目标值,目标值相当于标签数据。另一个网络专门用来评估策略,更新参数。
-
在Q-network 和 Q-learning targets之间优化MSE
- 使用随机梯度下降的的方式更新参数。
首先,随机采样打破了状态之间的联系;第二个神经网络会暂时冻结参数,我们从冻结参数的网络而不是从正在更新参数的网络中获取目标值,这样增加了算法的稳定性。经过一次批计算后,把冻结参数的网络换成更新的参数再次冻结产生新一次迭代时要用的目标值。
3、DQN in Atari
- 从像素s端到端学习值函数Q(s,a)
- 输入状态s是最后4帧的原始像素堆栈
- 输出为Q(s,a),用于18个操纵杆/按钮位置
-
奖励是该步骤的分数变化
网络架构和超参数贯穿所有游戏
这里举了一个应用DQN玩Atari类游戏的例子,算法直接对屏幕进行拍照,将最近4帧的屏幕图像送入一个卷积神经网络,最终输出针对游戏手柄的18个按钮精细方位的Q(s,a)值算法直接获取游戏屏幕的图像信息,对应的近似函数类型好像是第三类,奖励信息根据当时屏幕显示的分数确定。这种设计在50中Atari类游戏中测试,表现很好。
DQN Results in Atari
4、 How much does DQN help?
用了一张表比较了在DQN中有没有应用固定参数、以及有没有使用经历重现(批方法)两个条件时在5款游戏中的表现,结果体现了这两个条件联合应用的优势:
5、Linear Least Squares Prediction
通过比较发现使用批方法能够找到最小平方差的解决方案,提高算法的稳定性,但是它需要多次迭代。我们可以设计一个价值函数的线性近似函数:
然后直接求解参数。求解思路是逆向思维,假设已经找到这个参数,那么他应该满足最小LS(w),通过把LS展开,可以直接得到w:
这种方法直接求解的时间复杂度是
使用Shermann-Morrison法求解复杂度是
n是特征数量,这意味着求解该问题的难度与设计的特征数量多少有关,而与状态空间大小无关,因此适合应用与那些特征较少的问题。
6、Linear Least Squares Prediction Algorithms
- 我们不知道真正的value
- 实际上,我们的“训练数据”必须使用 的噪声样本或偏差样本
- 在每种情况下,直接求解MC / TD / TD()的固定点
7、Convergence of Linear Least Squares Prediction Algorithms
8、Least Squares Policy Iteration
策略评估使用 最小平方差Q学习
策略改善使用:Greedy 搜索策略
9、Least Squares Action-Value Function Approximation
- 近似action-value 函数
- 使用特征的线性组合
- 最小化和之间的最小平方误差
- 使用policy 生成经验
-
包含<(state,action),value>对的
10、Least Squares Control
- 对于策略评估,我们希望有效利用所有经验
- 对于控制,我们也想改善政策
- 这种经验来自许多策略
- 因此,要评估,我们必须学习off-policy
-
我们使用与Q学习相同的想法:
11、Least Squares Q-Learning
考虑以下线性Q学习更新
12、LSTDQ algorithm: solve for total update = zero
13、Least Squares Policy Iteration Algorithm
- 以下伪代码使用LSTDQ进行策略评估
-
它反复评估不同策略的经验 D