6. Actor-Critic算法
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了6. Actor-Critic算法相关的知识,希望对你有一定的参考价值。
参考技术A本文主要介绍如下几个内容:
首先我们还是回顾一下之前提到的REINFORCE算法:
在这个算法的第二步骤里面我们引入了“reward to go”这一项,该 表示了从当前的时间步t开始,所有的reward的期望之和。
我们可以把这个由casuality引出的期望称之为“true expected reward-to-go”, 之所以我们这里考虑的是期望,是因为我们在实际中每个trajectory采样出来都是不一样的,我们需要把这不同的采样结果进行最后的平均以求期望。
优势函数(Advantage function)
我们在policy gradient的方法中为了降低variance,也考虑过引入一个基线来减少梯度的方差。这里我们更进一步一点,我们使用 代替原来的"reward to go",并且使用值函数(V function)去代替原来的baseline,这样我们就有了新的估计值,即优势函数。
与原始版本的baseline相比,原来的估计是无偏估计,但是在单个采样估计中具有很高的方差(variance),现在使用了优势函数之后可以降低方差。他们的比较如下图:
三个函数的比较:Q, V and A
在模型拟合的阶段,我们需要去评估结果,这个时候就要考虑去拟合Q, V 还是A。他们之间是有密切关系的:
其中对于Q函数他是在已经确定了 的情况下,并且已经产生了 ,即我们可以写为:
既然他们是有关系的,那么我们在实际使用的时候只需要计算一个期望函数 .
对于如何去评估一个Policy是好是坏,我们从 的定义可以知道,强化学习的目标函数其实就是这个值关于初始状态 的期望值。
这里有两种Monte Carlo的方法来评估:
第一种是在一个sample里面累积 reward,第二种还考虑了多个sample的平均。
我们从上面的第一种简单得到 的方法中得到了训练数据,我们就可以把评估的问题转换成了一个监督学习的问题:
形式化理解为,我们用同一个函数去拟合了很多很多的样本。
上面使用的方法会有很高的方差,在实际中我们是用一种近似的方式去减少方差:
这里我们是直接使用了之前的V值( )去近似,然后得到了训练数据的样本 ,这种方式称之为bootstrap。
有了前面的基础,介绍了如何去拟合 ,计算优势函数我们就能够导出Actor-critic算法,
上面的actor-critic算法里第一步还需要采样一整个trajectory。想要变成每次只采样一个状态就需要先引入Discount factors的概念。
因为值函数V的定义是当前状态以后所有反馈值的和,在有限步长的任务中没有问题,但是如果是一个无限步长的任务,那么这个值有可能是无限大的。因此需要引入一个折损系数 ,它的意义在于让离当前状态比较近的反馈值更重要,而离得比较远的可能不那么看重.
上面举了个例子,在机器人做操作这种episodic tasks的时候是有限步长的就不需要discount factor,但是另外一种continuous任务,就不需要设定episodic所以这种情况加入discount factor就很重要。
加入了Dicount factor,我们对应的目标函数也变化:
这种情况下MC policy gradients有两种选择:
第一种是直接从当前时间t开始加系数 ,而第二种是从最开始t=1就开始加系数 。然后再通过利用causasity去掉 之前的反馈值。这样最终两种写法的系数还是有一些差别。
一般情况下两种方式有两种不同的解释和应用场景。第二种写法是对应着带有死亡状态的MDP形式。系数从第一步就开始加入,这就意味着这种写法更在意从头开始的动作,对于往后的动作给的关注更少。
而第一种写法是从时刻t开始加系数,也就是说它会一直在意从当前时刻开始的动作。这种形式一般用在一直连续运动的场景里。
第一种写法实际上不是一个正确的加了discount factor后的写法。它相当于是对平均反馈值加了一个系数来减小方差,它去除掉那些距离太远的反馈值的影响,因为可能太远了已经没有了意义。当然这样会是平均反馈的有偏估计。
第一种写法实际中更常用,也就是作为减小方差的方式。而第二种写法能够向我们解释在经典的场景里discount factor的意义。
加入了discount factors之后的actor-critic算法可以采用对每个状态进行采用的形式,这样就有了online形式的算法,两种算法对比如下
在实际实现actor-critic算法的时候可以选择两种结构。一种是让策略函数与值函数分别训练。这样做可能比较简单而且稳定,但是这样就不能共享一些提取特征的网络层。第二种是两种函数共享一部分网络,这样就能够共享前面提取特征的部分。
实际中如果实现一个online形式的算法,最好的做法并不是对每一个状态都做一次更新,而是得到足够多的样本里作为一个batch来更新。因为这样能够减小更新的方差。而实现这样的方式也有两种,一种是同步的一种是异步的。
我们把AC和PG对比一下,AC一般会因为有critic所以有更低的方差,但是如果critic不好那么他的bias会很大。PG是没有bias的,但是他的方差很高。把他们结合在一起就能产生比较好的unbias,低方差的算法。
之前用到作为baseline的函数一直都是V,实际上Q也能够作为baseline。只不过这样做实际上得到的不是一个advantage函数,在期望上得到一个期望为0的函数。因为减小了这部分的值,就能够减小对应部分的方差。
但是期望为0直接带入得不到目标函数的梯度值,因此计算梯度值的时候还需要把 以期望的形式修正回来,这样目标函数梯度值的期望与原来保持一致
目前我们有两种得到advantage函数的形式,一种 是bootstrap的,有更低的方差,但是有比较高的偏差。第二种是蒙特卡洛采样减去估计值的 ,这样做没有偏差,但是方差比较大。因此我们需要想办法把这两种结合起来。
我们可以使用n-step和Eligibility trace的方法来改善。
使用n-step的直觉如下图:
常见智能算法实现
常见智能算法实现
代码+论文下载地址:下载地址
谢菲尔德大学的matlab遗传算法工具箱
基于遗传算法和非线性规划的函数寻优算法
基于遗传算法的BP神经网络优化算法
基于遗传算法的TSP算法
基于遗传算法的LQR控制器优化设计
遗传算法工具箱详解及应用
多种群遗传算法的函数优化算法
基于量子遗传算法的函数寻优算法
基于遗传算法的多目标优化算法
基于粒子群算法的多目标搜索算法
基于多层编码遗传算法的车间调度算法
免疫优化算法在物流配送中心选址中的应用
粒子群算法的寻优算法
基于粒子群算法的PID控制器优化设计
基于混合粒子群算法的TSP搜索算法
基于动态粒子群算法的动态环境寻优算法
基于PSO工具箱的函数寻优算法
基于鱼群算法的函数寻优算法
基于模拟退火算法的TSP算法
基于遗传模拟退火算法的聚类算法
模拟退火算法工具箱及应用
蚁群算法的优化计算——旅行商问题(TSP)优化
基于蚁群算法的二维路径规划算法
基于蚁群算法的三维路径规划算法
有导师学习神经网络的回归拟合——基于近红外光谱的汽油辛烷值预测
有导师学习神经网络的分类——¥尾花种类识别
无导师学习神经网络的分类——矿井突水水源判别
支持向量机的分类——基于乳腺组织电阻抗特性的乳腺癌诊断
支持向量机的回归拟合——混凝土抗压强度预测
极限学习机的回归拟合及分类——对比实验研究
以上是关于6. Actor-Critic算法的主要内容,如果未能解决你的问题,请参考以下文章
Actor-critic强化学习方法应用于CartPole-v1
LIRD(Deep Reinforcement Learning for List-wise Recommendations)论文算法解读