4. 强化学习之——值函数近似
课程纲要
值函数近似简介
值函数近似用于prediction【给定策略函数给定它的价值】
值函数近似用于control
DQN简介
为什么要有值函数近似
之前的课程提到的 RL 问题:像 Cliff Walk 等,都只有几千或者几百种状态,可以用 V值的向量或者 Q-Table 的方式表达出来
而其它大规模的 MDP 问题:像 Go【10**170】 等状态空间十分十分巨大,宇宙中的原子数量也只有 10**80 那么多,那么我们就没有那么大的存储空间,而且状态太多了学习起来很慢很慢
在这种大规模的强化学习问题中,如何去估计价值函数是个困难的问题,怎样把model-free的方法用上去
因此在面对大规模 MDP 问题时,要避免用 table 去表征,而是采用带参数的函数近似的方式去近似估计 V Q π:
好处是 ——(1)可以泛化到我们没见过的状态(2)可以用 MC 或者 TD 方法 update 那个 w 参数
不同的函数设计方式思路:
函数近似方法用于 prediction
线性近似;神经网络;决策树;最近邻;
我们更关注于可微分的第一个线性方法和第二个神经网络方法
复习梯度下降方法:
假设我们获得了实际的价值函数时,就可以用梯度下降方法更新 w 参数:【这里有个问题,我都有V了为什么还要估计V】
线性模型值函数近似:
当我们知道实际的价值函数时:
当我们是处于一种 model-free 的情况下时:可以采用之前的model-free prediction的方法
具体来讲就是:
蒙特卡罗 MC 预测用于值函数逼近的具体算法:
时域差分 TD 预测用于值函数逼近的具体算法:
其中semi-gradient 的表现形式与流程可以看作:
在有实际的状态动作值函数的情况下运用梯度下降法进行Q函数逼近:
线性状态动作值函数近似:
函数近似方法用于 control
和前面一样,我们没有获得真正的 groundtruth 的 Q 函数,那么对于 MC,Sarsa 和 Q-Learning 来说:
考虑值函数逼近在控制上的收敛问题:
补充:强化学习的死亡三角【强化学习不确定不稳定的因素】
(1)function approximation:近似V或者Q时引入了误差
(2)bootstrapping:TD基于之前来估计当前,引入噪声;MC用了实际的return,而且是无偏的,所以稍微好一点
(3)off-policy training:我们使用了异策略,两个策略的差异因素
控制算法的收敛性问题总结:
前面我们说的都是单步的优化,现在有了 batch 的优化:
最小均方差 prediction & control:
当这个数据集合太大一次优化不完时,我们可以通过采样的方式进行:【其实就是随机梯度下降然后进行迭代】
非线性函数拟合值函数
线性的函数逼近只有在我们定义了好的 feature 之后才能比较好的 work,而非线性函数的拟合具有更好的能力,神经网络是一种很强的非线性拟合的函数
DQN 是2015年发表于 Nature 上的
出现的问题以及解决方法:
问题1:样本之间具有相关性——>解决方法:经验重放,用两个网络
问题2:不稳定的目标——>解决方法:fixed targets
解决问题之后的结果:
DQN 的一些python demo