目录
1.值函数的引入以及目标函数的构建
迄今为止,我们已经学习了表格型强化学习方法,但是我们知道表格型方法的适应性并不好,如果遇到了一个连续型的问题,那么表格型方法无法给出全部状态的表格,就算给出了表格形式,但是因为表格过于庞大,也不具有实际操作的意义。因此,面对连续型的问题中,我们必须采用一种新的方法来解决,从而我们引入了值函数逼近的方法,我们设
,参数为w的函数作为最终状态下,状态值函数和动作值函数的近似值,那么在连续型的问题当中,我们所要求的便是参数w的值。
我们回顾之前所讲的方法,对当前状态的价值是由获得的即时奖励与后续的价值联合体现出来的,也即
(1)
值函数的更新是朝着最终的值函数方法,进行一个步长的更新,对于不同的算法,如MC,TD等,不同的就是在于
的选取。那么我们在上面已经给出了最终值函数的近似值,我们将他们带入,从而就有了基于近似价值函数的更新方法:
(2)
到达最终状态时有,此时,值函数不再进行更新,达到最优值。但是我们的数据是采样得到的,从而要找到一个这样的w,满足等式非常困难,因此我们定义一个目标函数J(w)来衡量在采样过程中,各个状态近似函数的收敛情况。
(3)
当只有一个时刻t时,我们把它叫做损失(loss),
如果我们将其中的目标价值进行替换,就可以得到TD(0),MC,TD()的目标函数J(w).显然,我们构造出目标函数的用意是因为当目标函数取最小值时,近似函数与最有值函数最接近,从而我们的问题转换为求J(w)的最小值.因为我们的采样次数较多,根据大数定律,平均值可以用期望值来替代,由于目标价值有多种表达方式,我们用
或者
来表示,从而J(w)改写为
(4)
(5)
我们现在给出了表达式,要求J(w)的最小值,我们自然的想到求导数,得驻点,从而计算出最小值,一般情况下,按照下面的方法:
①给定初始条件,通常参数w会是一个向量。
②对参数向量w进行求导,从而计算出梯度
③取步长(较小的步长 ),增量
,更新参数
④重复步骤②③,直到参数w小于某一个数值或者更新次数达到某一个数值
2.常用的近似价值函数
常见的近似价值有线性函数,神经网络,决策树等,我们主要学习线性函数和神经网络和卷积神经网络。
2.1 线性函数
在线性近似中,它是将价值函数表示成特征的线性组合,也即
(6) ,其中的
表示特征
的权重。
我们可以将(6)代入到(4),可以得到线性近似价值函数的目标函数
,相应地,我们可以得到梯度
,
增量,再根据第1部分最后一段的采用梯度更新的方法,逼近最优值函数。
2.2 神经网络
神经网络是一种非线性近似,它的基本单元是一个可以进行非线性变化的神经元,通过多个这种结构的神经元,组成一个网络,称为神经网络。一个非线性的神经元结构如下:
在神经网络中,就是多个这样子的神经元组成,除去输入层与输出层,中间都成为隐藏层,隐藏层越多,网络越深,结构如下:
在神经网络中的每一个神经元都有权重参数w和偏置项b,每一条链接都有一个权值,位于后一层的每一个神经元会将前一层的所有神经元的输出作为输入,再乘以自己的权值
并加上自己的偏置项b作为自己的输出,层层往后推,最后到达输出层,这个过程就称为是前向传播(forward propagation),通过设计一个合理的目标函数,求出梯度,从输出层往输入层逐层往前更新权值参数w,这种过程为后向传播(post propagation)。我们之前对于目标函数的设定是期望值
与真实值
之间的差距,在神经网络中常见的目标函数有两种,一种是均方差:
(7)
另一种是交叉熵:
(8)
(7)(8)式中的M表示进行一次参数更新时,对应样本的数量。一般来说,均方差目标函数的主要应用于输出大于1的情况,而交叉熵则主要用于输出在0-1之间的情况。
2.3 卷积神经网络
卷积神经网络也是神经网络中的一种,因此关于神经节点的输出计算,节点结构,目标函数等都是一样的,两者的主要区别在于网络中的架构以及部分参数的设置上,卷积神经网络也有很多层,主体部分是中间层(隐藏层),每个中间层由许多的通道组成,每一个通道里面有许多的神经元,但是这些神经元只与上一层中部分神经元进行连接,接受他们的输出信号。
2.3.1 卷积核(kernal)
在卷积神经网络中又被称为过滤器,它常常用于检测图形中具有某些特征的区域,他需要使用一定数量的参数来进行定义,这些参数就称为卷积核的参数,当使用卷积核进行过滤操作的过程就称为卷积操作。通过卷积操作以后,只会保留卷积核感兴趣的部分,所以一般会使原图片缩小,如果需要保持原图片的大小,可以在元数据的左右添加一些无用的0。假设元数据的大小为n,卷积核为f,元数据左右各拓展x个元素(补充无用元素),卷积核每次步长为s,那么经过卷积操作之后的数据大小n'为:
(9)
2.3.2 池化(pooling)
池化通常有两种操作,一种是最大池化(max pooliing),另一种是平均池化(average pooling),池化过程中同样存在左右各拓展元素x,步长s,核f。并且池化之后的数据大小同样可以使用公式(9)计算得出。最大池化是指在核f中,选择最大的元素作为本次池化的输出,而平均池化,则是将核f中所有的元素进行求平均,再将平均值作为池化的输出。