Value Function Learning

Temporal Differences

Sutton提出于1988年:
该论文从一个抽象的时序监督学习框架出发,考虑序列,这里是每一步的状态,是一个矢量,是最后的结果,是一个标量。考虑定义神经网络,这里是步对的估计。
在传统监督学习中,直接考虑误差函数为:
从而梯度为:
考虑学习率为,写成迭代形式:
这个方法的问题在于,我们必须等待整个trajectory结束,得到后,才能进行优化。
 
解决的方法是考虑恒等式:
带入得到:
这就意味着:
这就是算法。可以看到,它是一个增量更新。Sutton在论文中还提出了算法,考虑长程衰减:
因此有:
这就是时序差分的含义了,更新梯度时根据的是的差,在迭代过程中这个差会逐渐缩减至0,从而收敛。
在该增量公式启发下,我们考虑MDP框架,对应于,对应于,根据贝尔曼公式:
现在考虑从出发的采样是对的无偏估计:
因此考虑差分为:
并且考虑在表格情形下,是一个向量,因此是一个one-hot向量,更新时只更新这一个分量,增量公式改写为:
这样将收敛到上。这里我们称为目标,是用了监督学习的视角,这个标签是模型自举(bootstrapping)出的,一方面良好收敛以后,,另一方面,来源于真实采样和对未来的最佳估计。
 
但是,为了选择策略还需要计算,这需要环境信息,因此这种方法仍然是Model-Based.

SARSA

正确的思路是预测函数,这就是SARSA的思路。
由得到:
考虑从出发的采样得到的无偏估计
得到:
这样就会收敛到到。

Q-learning

考虑贪婪算法:
因此有:
因此更新公式为:
这就是Q-learning。有趣的是,历史上的Q-learning提出于1989年,而SARSA提出于1994年,这是因为Q-learning直接从Bellman最优公式出发,得到的就是greedy形式。
Q-learning和SARSA不同的是,它是off-policy的,不需要在训练时候采集数据,SARSA中的加权和决定了需要一直采集数据。

Function Approximation

大部分情况下,表格形式都是不成立的,这就是说,应该将其写成一个函数形式,例如线性函数:
因此梯度为:
从而得到函数近似的Sarsa和Q-learning:

DQN

如果我们把函数用神经网络呢,这就是Deep Q-learning Network的出发点:
或许直接的思路是,换成神经网络:
但实验上发现,当是非线性函数时,上述随机梯度下降的收敛性十分差。
我们遇到的问题首先是连续输入或输出之间的相关性问题,随机梯度下降要求样本之间是i.i.d的,一方面如果从一个trajectory上,梯度是服从这个trajectory的边缘分布的,而不是全局分布,因此梯度偏差极大。
另一方面,TD的训练过程中,target一直在持续变化,考虑一次更新,这里:
更新导致的target变化为:
得到:
当和高度相关时,梯度相似度(即表达式的内积)很大,target发生相当大的漂移。
并且,由于RL本身学习的是策略,学习过程中,策略逐渐漂移,导致trajectory漂移,训练分布也会漂移。
为此DQN提出了以下方法:

Experience Replay

为了解决数据相关性高的问题,我们必须考虑off-policy的策略,把经验存放起来,按照近似i.i.d的方法回放,这就是为什么我们选择Q-learning而不是SARSA。
我们储存,并且维护一个长度为的列表,即的矩阵,越短,代表数据越新,这是为了防止分布漂移做出的设计。为了打破相关性,随机采样一个mini-batch进行梯度下降。
论文中,mini-batch大小为.

Target Network

为了解决目标漂移问题,我们考虑在一定阶段内固定用于计算目标的神经网络,即:
并在一定迭代步数之后拷贝。论文中.

Q-Learning in Practice

DQN首先遇到的问题是Q值过高估计的问题,对于
动作和价值使用同一个网络,这会放大过高估计,因此一种思路是考虑用实时更新的网络进行动作提取,即:
更强的变体是随机初始化两个网络,然后取其中价值估计更小的,因为高估计比低估计的问题要严重得多。
进一步的考虑是使用步采样估计target:
这样更加准确,但是破坏了off-policy性质。
 
RL Practice1RL Practice3
Loading...