《深入浅出强化学习原理入门》学习笔记(七)DQN
DQN采用的是Qleaning的基本框架,对Qlearning的修改主要体现在以下三个方面。
(1)DQN利用 深度卷积神经网络逼近值函数。
(2)DQN利用了 经验回放训练强化学习的学习过程。
(3)DQN采用 设置独立目标网络的方法来单独处理时间差分算法中的TD偏差。
本篇按照Qleaning框架、值函数逼近方法、卷积神经网络、经验回放、设置独立目标网络的顺序依次介绍。
其中,DQN的提出最大的贡献是,把认知科学的成果应用到了深度神经网络的训练之中,即经验回放和设置独立目标网络。
1、Qleaning框架
Qleaning框架中最重要的两个概念是异策略和时间差分。
异策略是指,行动策略(产生数据的策略)采用ε-greedy策略,目标策略(评估和改进策略)采用贪婪策略(每个状态取值函数最大的动作)。
时间差分方法是指,利用时间差分目标更新当前行为值函数。Qleaning的时间差分目标为
2、值函数逼近
之前介绍了很多强化学习方法,对于模型已知的系统基于动态规划的方法,对于模型未知的系统基于蒙特卡罗的方法或时间差分的方法。
这些方法的基本步骤都是评估值函数,再利用值函数改善当前的策略。都有一个基本前提,状态空间和动作空间是离散的,值函数其实是状态和行为值得表格,值函数的更新本质为表的迭代更新。所以之前讲过的强化学习算法又称表格型强化学习。
如果状态空间维数很大或者为连续空间,需要采用值函数逼近的办法表示值函数,并利用策略迭代和值迭代构建强化学习算法。
值函数逼近分为参数化逼近和非参数化逼近,其中参数化逼近又可以分为线性参数化逼近和非线性参数化逼近。
详细介绍一下参数化逼近。
当逼近的值函数结构确定时(如线性逼近时选定了基函数,非线性逼近时选定了神经网络的结构),那么值函数的逼近就等价于参数的逼近。 值函数的更新也就等价于参数的更新。需要利用试验数据来更新参数值。
从6.1-6.3的更新过程可以看出,值函数更新的过程就是向着目标函数的逼近。对于表格型强化学习,更新值函数,只有当前St处的值函数该表,其他地方的值函数不变。采用值函数逼近方法改变值函数时,因为更新的是参数,任意状态处的值函数都会改变。
值函数的更新可分为增量式学习方法和批学习方法。
增量式学习:随机梯度下降法
基于梯度的蒙特卡罗值函数评估
增量式学习:半梯度算法
要更新的参数不仅出现在要估计的值函数中,还出现在目标值函数中,但是只考虑对估计值函数的影响,忽略对目标值函数的影响,这种方法称为不完全的梯度法(半梯度算法)。
基于半梯度的TD值函数评估
基于半梯度的Sarsa算法