在强化学习(五):Sarsa算法与Q-Learning的学习中,我们都是假设状态是有限的,而且数量也不多,就像例程中都是使用格子世界,每个格子代表一个状态。
但是,现在让我们来假设我们在下围棋,每下一个子就是一种状态,那么这些状态就非常多了,如果在程序中要用一个表格来表示状态与状态对应的值函数的话,那么内存就远远不够用了。
另外,当状态不是离散的时候,就无法用表格来表示了。所以,我们需要另外的方法来表示状态与状态对应的值函数。这就引出了今天要讲的内容:价值函数的逼近(近似)。
价值函数的逼近
价值函数的逼近其实就是用一个函数来估计值函数(estimate value function with function approximation)。这个函数的输入就是状态s,输出就是状态s对应的值。
w表示引入的参数。
近似函数具体可以使用线性组合,神经网络以及其他方法。有了近似函数,不仅可以解决上面的两个问题,同时也是做了一种归纳,可以概括出没有遇到过的状态。
具体来说,根据输入和输出的不同,有三种不同的近似方法:
接下来,你能想到的问题就是:s和a的形式是什么,一个向量吗?如果是监督学习来学习出参数w,那么我们需要label,也就是真正的v值,但是我们如何得到真正的v值呢?
Gradient Descent
在解释上面的问题之前,我们先来看看什么是梯度,梯度下降能够用来干嘛。显然,我们想要得到w,一般就是利用神经网络或者线性回归,而这两个都需要依赖梯度下降来更新参数。
对一个函数 J(w)