实际上就是机器学习中的监督学习,而且主要是回归器
本文主要考虑, 线性回归和神经网络, 这两类方法是一个针对状态可导的近似函数.
同时, 强化学习应用的场景其数据通常是非静态、非独立均匀分布的,因为一个状态数据是可能是持续流入的,而且下一个状态通常与前一个状态是高度相关的. 因此,我们需要一个适用于非静态、非独立均匀分布的数据的训练方法来得到近似函数.
就是Stochastic (Online) gradient descent方法.
假定J(w)是一个关于参数w的可微函数,定义J(w)的梯度如下
这里J(w)就是监督学习中的代价函数(cost function), 回归问题中最最常见的就是均方差(mean square error)
目标是调整w使代价函数J(w)最小.
每次调整w时, 是朝着负梯度的方向, 调整量
$\alpha$ 为步长, 是个超参
目标:找到参数向量w,最小化近似函数 $\hat{v}(S,w)$ 与实际函数 $v_{\pi}(S)$ 的均方差
梯度下降能够找到局部最小值
随机梯度下降实际上是对梯度的一个采样
Expected update is equal to full gradient update.
期望的更新量等于全部的梯度更新总量
用一个特征向量(Feature Vector, Not Eigen Vector)表示一个状态,每一个状态是由以w表示的不同强度的特征来线性组合得到
可以通过对特征的线性求和来近似价值函数, (最基本的线性回归, 没有L1,L2正则)
目标函数(代价函数)定义为均方差
参数更新
参数更新量 = 步长 × 预测误差 × 特征值
“查表”方法其实可以看作一个特殊的线性价值函数近似方法,每一个状态看成一个特征,个体具体处在某一个状态时,该状态特征取1,其余取0 (one-hot encoding)
在前面的讨论中,用到机器学习中的监督学习,而监督学习中是需要知道被近似函数的真实值的. 然后用近似函数的估计值和真实值对比, 计算代价, 然后调整近似函数来减少代价.
在增强学习中只有即时奖励, 没有监督数据. 我们要找到能替代 $v_{\pi}(S)$ 的目标值作为监督数据,以便来使用监督学习的算法学习到近似函数的参数。
对于MC算法,目标值就是返回(Return $G_t$), $G_t$ 是$v_{\pi}(S)$ 的无偏估计, 我们用其作为监督数据来进行学习.
对于TD(0),目标值就是TD目标,
这里有一个有趣的问题, 在TD Target中包含有 $\gamma \hat{v}(S_{t+1},w)$ 也包含参数w, 在讲座中是把整个TD Target作为固定值,所以求梯度时不包含 $\nabla_w \gamma \hat{v}(S_{t+1},w)$ .
如果不作为固定值, 则正确的(负)梯度应该是 $\nabla_w (-\gamma\hat{v}(S_{t+1},w)+\hat{v}(S_t,w))$. 直觉上好像是需要作为固定值的, 应该不可以动态的调整监督学习的目标值. 和EM算法有点类似,需要固定住一个目标, 然后更新w. 讲座中在第48分钟也谈到这个问题. 并且说到实践中有人尝试过同时更新目标值,会导致得到错误的答案.
对于TD(λ),目标值是λ返回
我觉得这里最好把 $G_t^\lambda$ 作为固定值
收获 $G_t$ 是真实价值 $V_{\pi}(S_t)$ 的有噪声、无偏采样,可以把它看成是监督学习的标签数据带入机器学习算法进行学习,这样(监督学习)训练数据集可以是
如果使用线性蒙特卡洛策略迭代,那么每次参数的修正值则为
TD目标值是真实价值的有噪声、有偏采样。此时的训练数据集是,
如果使用线性TD(0)学习,则有
TD(λ)目标值是真实价值的有噪声、有偏采样。此时的训练数据集
线性TD(λ)学习,前向视图
线性TD(λ)学习,后向视图
通过累积求和,可以得到前向后向视图是一致的
在继续学习之前,首先自我考虑下如何做控制算法
线性函数来近似状态行为价值函数
看图
结论, 总的来说 $\lambda=1$ 的时候通常算法表现是很差的,TD(0)是比MC好得多的方法,这说明了Bootstrap的重要性;不同的任务对应的最优 $\lambda$ 值是不太容易确定的.
开放性问题, $\lambda$ 可以学习到吗?
看图
把一段时期内的经历存储起来,然后再重新过一遍,更新参数。这种算法实现起来不是很难,
只要重复:
经历重现时指将系统探索环境得到的数据储存起来,然后随机采样样本更新深度神经网络的参数.
经历存储的方式.
重现的方式.
通过随机采样的方式从经历数据集D中采样得到过去的经历.用来更新Q价值函数近似网络.
这样做的动机深度神经网络作为有监督学习模型,要求数据满足独立同分布. Q Learning算法得到的样本前后的有关联的. 这种关联在增强学习中是需要的,而在监督学习中会在一段时间产生大量相似的(重复的)样本,这是有害的. Experience Replay方法通过存储-采样的方法将这个关联性打破了.
在TD Error的计算过程中, 目标值(下面采用最小均方差代价函数的红色字体部分)经常随DNN变动.
目标函数的不稳定会导致很难训练模型. 解决的方法是,
其他的技术, 在2015年nature的paper上还有用到两个技术
Paper上的列出的算法
讲座里举了一个应用DQN玩Atari类游戏的例子,算法直接对屏幕进行拍照,将最近4帧的屏幕图像送入一个卷积神经网络,最终输出针对游戏手柄的18个按钮精细方位的Q(s,a)值算法直接获取游戏屏幕的图像信息,对应的近似函数类型好像是第三类,奖励信息根据当时屏幕显示的分数确定。这种设计在50中Atari类游戏中测试,表现很好。具体可以参考原讲义图表。
此外用了一张表比较了在DQN中有没有应用固定参数、以及有没有使用经历重现(批方法)两个条件时在5款游戏中的表现,结果体现了这两个条件联合应用的优势:
用梯度下降的方法能够找到最小平方差的解决方案,提高算法的稳定性,但是它需要多次迭代, 当采用线性模型的近似,可以尝试直接求解的方法,一步找到最优解.
线性价值函数近似
当采用最小均方差为代价函数时(凸函数),可以直接求解, 也就是Zero forcing的方法.
在最优解处,期望的更新应当为0,也就是代价函数在最优解处梯度为0
一般来说,矩阵求逆的计算量是比较大的, 这种方法直接求解的时间复杂度是 O($N^3$) ,使用Shermann-Morrison法求解复杂度是 O($N^2$) ,n是特征数量,这意味着求解该问题的难度与设计的特征数量多少有关,而与状态空间大小无关,因此适合应用与那些特征较少的问题。
将这种方法分别应用于MC, TD, 和TD()学习方法,就分别得到LSMC, LSTD, 和LSTD(λ). 我们是不知道真实的 $v_t^\pi$, 对不同的学习方法,我们的训练数据,一定就是有噪或有偏的$v_t^\pi$采样样本.
于是得到下列w直接计算的更新公式
收敛性
在本小节,我们探讨
为了
所以采用Q-Learning的方式进行off-policy学习
最后的例子是一个水平随机行走的例子,这个例子比之前的随机行走要复杂,状态空间扩展为50个,但可以仅分为两类:状态10和41是两个好的状态,获得奖励1;其他状态均获得奖励0。最优策略是:当个体处在1-9这9个状态时采取向右移步的行为,用R(1-9)表示,在其他状态时的最有行为分别是:L(10-25),R(26-41),和L(42-50)。
算法使用的特征是:针对每一个行为(左或右)设计10个均匀分布的高斯分布状态特征. 这里涉及到离散状态的特征构造,类似于带kernel的线性回归, 特征构造方法如Coarse Coding, Tile Coding, RBF(也就是本例采用的方法)
结果图解释了LSPI算法能在少数几次迭代过后就找到了每个状态的状态价值函数,也就最优策略。红、蓝色分别代表左右不同的行为对应的价值