强化学习算法伪代码对比

在这里插入图片描述
在这里插入图片描述

基础公式

来源
累计回报:
在t时刻状态下选择行为所获得累计回报,其中每个R都是个随机变量。
在这里插入图片描述
状态价值函数:
状态s下的累计回报是多维随机变量,服从pi分布,因此使用期望累计回报表示该状态的价值。
在这里插入图片描述
其贝尔曼方程为:
在这里插入图片描述
状态-行为价值函数:
状态行为价值函数相比状态价值函数其区别在于行为已经选定。
在这里插入图片描述
其贝尔曼方程为:
在这里插入图片描述
状态价值与状态-行为价值联系:
状态-行为价值只是状态价值确定一个行为后的分支。
在这里插入图片描述
状态-行为价值选定行为后会得到reward,此外该行为下有多种可能的下一状态。
在这里插入图片描述
互相代入后得到:
在这里插入图片描述

在这里插入图片描述
最优价值函数:
在这里插入图片描述
在价值函数更新时目标值构建有所不同:
在这里插入图片描述
在这里插入图片描述
因为A已经确定,回报因此确定:
在这里插入图片描述
在这里插入图片描述
Value-Based解决方案:
动态规划方法(DP)使用了上述的推导,使用bootstrapping(利用后继状态的价值估计当前价值),不过动态规划方法需要知道模型的状态转移概率P,因此需要模型可知。
在这里插入图片描述
但模型未知时可考虑蒙特卡罗方法(MC)利用经验平均估计期望的值函数。即原本的状态价值是累计回报的期望,可以使用多次实验的累计回报均值来代表。不过因为G是实验的累计回报,需要实验结束(回合更新)后才能学习。
在这里插入图片描述
时序差分方法(TD)综合二者优点(单步更新+无模型)。使用R+rV(目标值)代替G。
在这里插入图片描述
三种方法的区分可以以下公式分析,对于DP算法,其更新的目标值在公式(3)中,因为状态转移概率P已知,所以可以求解出期望。不过v(st+1)v(s_{t+1})使用的是旧的价值函数的估计;而MC算法,其更新的目标值在公式(1)中,因为状态转移概率P未知,无法求解期望,所以使用采样Return值的均值来代替期望值,且需要一次episode结束后才能计算Return值。而TD算法利用二者优点,利用采样均值来代替期望,同时利用旧的价值函数和单次回报来构建目标值。
在这里插入图片描述
前面三种方法都是基于值函数的,迭代计算的是值函数,然后根据值函数优化策略。最终得到贪婪策略(选择当前状态下最大状态-行为价值对应的动作):
在这里插入图片描述
Policy-Based解决方案:
策略搜索是直接对策略进行参数化建模π(a|s),寻找最优参数使得累计回报最大。其学习目标是:
在这里插入图片描述
使用log-derivative技巧对目标函数求导:
在这里插入图片描述
REINFORCE方法基于MC使用经验平均替代期望求解目标函数的梯度。
在这里插入图片描述
在策略梯度方法中参数的更新需要确定步长,如果步长不正确,那模型越学习越差。TRPO方法(Trust region policy optimization)将新策略的回报函数拆分成旧策略的回报函数+其他项。从而保证回报函数的单调不减。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
AC解决方案:
policy-gradient类的方法直接对策略建模,因为梯度求导公式存在R(累计回报),需要回合制更新。而观察导数公式会发现常量R其实类似于一个梯度放大缩小的系数。actor-critic方法中actor【行为策略】是policy-gradient策略,而critic【评估策略】则是利用价值函数对R进行替代,从而可以单步更新。
梯度公式中的R可以采用以下形式:
在这里插入图片描述
式中1-3只是回报的不同累计形式,因为使用的是轨迹的累计回报,因此计算的策略梯度是无偏的,但是多步的累计会导致方差较大。
式中4-5是使用价值函数来替代R,优点是方差小,但由于使用价值逼近函数,存在一定偏差。而当采用4-5时,此时称为AC类算法。结构图如下所示:
在这里插入图片描述

Value-Based方案伪代码

Q-learning:
在这里插入图片描述
1、在迭代模型时Q-learning算法目标值的计算是选取下一状态最大的动作价值。
2、下一状态的动作选取使用的是e-greedy算法,因此产生数据的策略(e-greedy)【行为策略】和迭代模型的价值函数(贪心:选取最大动作价值)【评估策略】不同,属于off-policy。
3、由于价值的目标值计算选取的是最大动作价值,因此价值更新的目标方向其实是朝着最优qq^*的,与agent的行为策略无关。

SARSA(State Action Reward State Action):
在这里插入图片描述
1、在迭代模型时Q-learning算法目标值的计算是选取e-greedy算法产生的下一状态的动作价值,且该动作会作为下一动作的选取动作。
2、下一状态的动作选取使用的是e-greedy算法,因此产生数据的策略(e-greedy)和迭代模型的价值函数(e-greedy)相同,属于on-policy。
3、由于前后策略一致,当q值收敛时,策略也会收敛。
NIPS 2013版DQN:
在这里插入图片描述
1、使用DNN来逼近Q-learning的table式价值函数,解决状态和动作的连续、高维输入问题。
2、使用经验回放训练模型来避免序列的相关性且获得batch信息,并在一定程度上保持训练数据的静态分布。
Nature 2015版DQN:
在这里插入图片描述
1、在计算y时使用target网络,保证在一定时间内Q值的稳定。避免不断更新带来的y和q的强相关性。
Double-DQN
在这里插入图片描述
1、Nature DQN的y计算存在一个问题,y中的a是使用target net网络计算出来的。这会导致y的高估(因为取target net中最优行为),因此使用原net来计算a,target net只用来计算q值。
Prioritised replay
在这里插入图片描述
1、经验回放在学习时,如果样本的奖励十分少就会导致稀疏问题,学习速度非常慢。Prioritised replay使用TD-error对样本赋权(error越大,样本越要学习),并使用SumTree结构从分布中采样。
Dueling Network
在这里插入图片描述
在这里插入图片描述
1、同以前的DQN相比,Dueling Network将状态-动作价值Q(s,a)拆分成状态价值Q(s)+优势函数A(s,a) ,优势函数A的含义就是采取动作a所带来的附加价值。

Policy-Based方案伪代码

TRPO(Trust Region Policy Optimization):
在这里插入图片描述REINFORCE:
在这里插入图片描述
1、非单步更新,需要知道完整的episode才能计算出vt。
2、注意关于动作的概率,如果是离散型很容易得到,对于连续动作,一般假设动作服从高斯分布,模型输出均值和方差,然后采样得到动作。这属于随机性策略,由于是从分布中采样得到动作,具有一定的探索性。
3、on-policy方式

PPO(Proximal Policy Optimization):
在这里插入图片描述

AC方案伪代码

A3C(Asynchronous Advantage Actor-Critic):
在这里插入图片描述
1、使用多个子agent学习,利用子agent来更新主agent参数,避免训练数据的相关性。
DPG(Deterministic Policy Gradient)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
目标函数为:J(θ)=1mj=1mQ(si,ai,w)J(θ)=-\frac{1}{m}∑_{j=1}^mQ(s_i,a_i,w),求导公式使用了链式法则。

1、随机性策略目标是对状态s和行为a的期望,这需要对动作空间进行大量的探索。DPG思想就是不输出行为的分布,直接输出行为(确定性策略)。直接输出行为,那如何优化策略网络?思考下在value-based网络中如何将q值转成策略的:选取状态的最大q值。那可以利用q值网络来间接优化策略网络。
2、value-based方法是根据q值网络选取价值最大行为的策略,现在我们的行为产生是由确定性策略模型产生的,那么相应的该策略产生的行为所对应的q值也是最大的,也就是q = DQN(s,a)最大。
3、、随机策略将探索和改进集成到一个策略中,确定性策略的优点:不需要探索动作空间,需要采样的数据少,算法效率高。强化学习进阶 第八讲 确定性策略方法
DDPG(Deep Deterministic Policy Gradient)
在这里插入图片描述
在这里插入图片描述
1、Deterministic指的是确定性策略。以前的随机策略在面对连续动作或者高维离散动作时需要较大的计算量来计算所有动作的概率或价值。而确定性策略则直接选择概率最大的动作,简化掉了动作的分布。
2、看懂DDPG的critic部分,首先需理解Double-DQN,主要在于y的计算上。y的两个因素a和q的计算在DDPG中分别使用target policy网络和target value网络计算。从而保证y值得稳定性。
3、看懂DDPG的actor部分,需要明白其目标函数J(θ)=1mj=1mQ(si,ai,w)J(θ)=-\frac{1}{m}∑_{j=1}^mQ(s_i,a_i,w),也就是想要在s状态下选择动作a,那么a的Q值就要尽可能的大。再对目标函数采用链式法则求导(对行为a,对参数theta)即可优化actor模型。

其他

几个比较经典的强化学习算法,以及在NLP中的应用
深度强化学习落地方法论
reward设计:
请问:强化学习中对于reward奖励值设定,对算法有什么影响,有没有相关的论文或者资料?
强化学习奖励函数塑形简介(The reward shaping of RL)
强化学习中reward稀疏和无法获取问题解决方案

trick:
强化学习领域有哪些巧妙的想法?
深度强化学习落地方法论(7)—— 训练篇

疑问

强化学习中,对于连续的动作,value-based是无能为力的?
强化学习,DPG是首次处理连续动作空间的论文吗,PG本身还只是输出动作而不是连续动作对吧?
深度强化学习(六):连续动作空间的问题

策略迭代算法包括策略评估和策略改进两个步骤。
策略评估:给定策略,通过数值迭代算法不断计算该策略下的值函数,直至收敛。
策略改进:利用收敛的值函数和贪婪策略得到新的策略;

几个概念:
对于REINFORCE方法,链接
1、如果采用均值方差的方式则为随机性策略,如果对输出分布采样,则为on-policy的方法;如果行为策略和评估策略不同则为off-policy的方法(需要重要性权重)。
2、如果采用输出行为值的方式则为确定性策略,由于确定性策略无法采样,因此需要用off-policy的方法解决探索问题。
3、上述两种方法前一种可以添加AC结构,后一种由于使用到q值网络,必须是AC结构。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章