深度强化学习cs294 Lecture7: Value Function Methods
回忆上节课所讲的内容,关于actor-critic算法的讲解。将policy gradient方法中目标函数梯度的计算进行一些替换,加入了bootstrapping减小方差,定义了无限步长形势下的问题描述让算法支持在线形式等等。
Value-based Methods
这节课要讲的是不基于策略梯度的方式,而直接利用值函数,也就是critic的部分,来得到最终的策略。首先回忆advantage的定义,指的是当前动作比平均动作好的多少,而如果选择advantage函数最大的动作,这个动作肯定等于或好于任何其它动作,无论当前采用的策略是什么。也就是说这样做能得到比较好的策略。
基于每次都能得到更好的策略的想法,我们可以得到一个简单的策略,那就是policy Iteration策略。一共两步,第一步评估advantage函数,第二步基于advantage函数改进策略。
但是由于advantage函数需要由
计算得到,因此我们需要先计算
。
先假设状态空间和动作空间都是比较小且是离散形式的,因此就可以将
函数当做是一个表格来进行维护。从一个初始值开始,利用自举的形式进行不断地更新。
假如我们的策略是确定性的且每次只选择最优的一个动作,那么就可以将其简写为上图最下方的等式。而这个计算的过程也叫作policy evaluation。
这个计算过程利用了动态规划的思想,而且实际上我们可以把这两个步骤合二为一,直接跳过策略的部分来计算状态值函数。
想要做到这样的效果要先引入状态动作值函数
。同样把这个函数实现为一个表格的形式,每个状态动作对都对应一个值。这里直接可以通过采用最大的
值动作来确定策略,因此也就可以直接把当前状态下最大的
当做状态s下V值的下一个估计值。于是就得到了一个比policy iteration更简单的动态规划算法:
在计算的过程中不考虑策略的存在,而最后能够直接根据值函数得到策略。这个算法叫做value iteration。
那么如何能够更好的表示状态值函数
呢?之前讲的都是表示为表格的形式,但是在复杂的问题里这样的形式不太可能,因为维度灾难的问题。也就是状态需要表示为一个表格可能太大了无法储存。因此可以使用参数化的表示,比如利用一个神经网络来表示这个值函数:
而这个神经网络需要训练来得到逼近实际表示的最优参数,利用最小均方误差作为目标函数进行优化。
但是在计算过程中,我们需要知道环境中状态转移的概率分布。比如在fitted value iteration的过程中的max步骤以及求期望的步骤都需要。而且max步骤还需要得到在同一个状态采取不同动作a的结果来选取最优结果。这是很难做到的。但是如果我们选择使用
函数来替代
就能够避免这个问题。
使用
之后,max步骤可以直接根据结果得到最优的动作a。而期望部分需要转移概率分布的时候,可以使用采样结果来代替。
这个算法能够像actor-critic算法一样适应off-policy的形式。而且只使用了一个网络结构,不需要高方差的策略梯度。不过这个算法对于非线性函数逼近的形式不能够保证收敛性。
Q-Learning
我们可以写出
值形式的value iteration算法,其中采样时候使用的策略可以使用任意的策略,因为算法是可以off-policy的。而且中间的迭代过程可以多次:
那么为什么这个算法是off-policy的呢?可以看目标值更新的那个等式,发现实际上在确定了
以后,后一项与使用的策略没有关系。也就是这个更新结果并不依赖于正在优化的策略。
而这个形势下的算法究竟在优化一个什么目标呢?实际上优化的目标叫做bellman error。
加入bellman error为0,那么Q函数就是最优的,而根据此时Q函数选取的动作也是最优策略。在表格形式下,这个迭代算法能够保证最终得到最优的策略,但是使用了值函数逼近的时候,这个收敛性往往无法保证。
我们同样可以把Q-learning实现为online形式的:
虽然是online形式的,但是由于算法支持off-policy,因此选择动作
时候有很多种策略,比如最简单的使用确定性的最优动作。但实际上这在学习的时候不是一个好选择,因为可能就不会得到更好的explore的结果。还有epsilon-greedy和boltzmann exploration两种常用的选择:
其中Boltzmann法里e的指数里可以再加一个系数当做温度。
复习一下当前所讲的内容:
Value Function Learning Theory
下面讲解一下基于值函数方法的学习理论的内容。比如value iteration算法是否能够收敛?收敛的话结果又是如何的?
首先定义一个符号
,它的作用如图。这个符号的实际作用实际上就是对所有的值函数V进行一次迭代,也就是value iteration的过程。而这里存在一个最优的
,在经过操作符
作用之后与原结果相等。它总是存在的且对应着最优的策略。下面讨论如何才能到达这个点。
我们能够证明,对于value iteration来说这个最优点是可以达到的,因为这个作用符是收缩的。也就是下图所示,在无限维范数意义上能让两个点的映射后的结果更接近:
也就是说,可以在无限维范数的概念上不断接近最优结果
。因此最优结果是能够达到的。
但是这是对于表格形式的value iteration来说的,对于函数逼近形式下的结果,还需要在原有的基础上多加一个操作符
。这个操作符的作用是将值函数映射到函数逼近使用的参数能够表示的平面上去,对应的是L2范数最小的映射点。
因此实际上使用了函数逼近的情况下,更新过程里有两个操作符
。
这个将结果V映射到函数能表示的空间里的操作符
也是contraction的,但是是在L2范数的意义上。但是两个操作符联合起来的作用效果却让结果不能保证任何意义上的contraction。也就导致
不一定能够真的向着最优的
移动。
也就是说使用了值函数逼近方法的value iteration一般是不收敛的。
这个结果对于使用
函数的形式是相同的:
实际上,即使是online形式的Q-learning也是这样。即使它使用了类似梯度下降的方法,但这不能够保证结果的收敛。因为实际上使用的并不是梯度下降,因为使用的结果根本不是一个目标函数的梯度(max的部分以及后面跟系数有关的部分都无法求梯度)。
还有一个推论,那就是在actor-critic中,使用了函数逼近形式的算法,同样也不能够保证最终结果是收敛的。
总结一下: