深度强化学习笔记(三)表格型的方法

表格型的方法Tabular Methods

地址:https://datawhalechina.github.io/easy-rl/
本章我们通过最简单的表格型的方法(tabular methods)来讲解如何使用 value-based 方法去求解强化学习。

MDP

在这里插入图片描述
强化学习的三个重要的要素:状态、动作和奖励。强化学习智能体跟环境是一步一步交互的,就是我先观察一下状态,然后再输入动作。再观察一下状态,再输出动作,拿到这些 reward 。它是一个跟时间相关的序列决策的问题。

举个例子,在 t-1时刻,我看到了熊对我招手,那我下意识的可能输出的动作就是赶紧跑路。熊看到了有人跑了,可能就觉得发现猎物,开始发动攻击。而在 t 时刻的话,我如果选择装死的动作,可能熊咬了咬我,摔了几下就发现就觉得挺无趣的,可能会走开。这个时候,我再跑路的话可能就跑路成功了,就是这样子的一个序列决策的过程。
当然在输出每一个动作之前,你可以选择不同的动作。比如说在 tt 时刻,我选择跑路的时候,熊已经追上来了,如果说 tt 时刻,我没有选择装死,而我是选择跑路的话,这个时候熊已经追上了,那这个时候,其实我有两种情况转移到不同的状态去,就我有一定的概率可以逃跑成功,也有很大的概率我会逃跑失败。那我们就用状态转移概率 [ s t + 1 , r t ∣ s t , a t ] [s_{t+1}, r_{t} | s_{t}, a_{t}] [st+1,rtst,at] 来表述说在 s t s_t st 的状态选择了 a t a_t at 的动作的时候,转移到 s t + 1 s_{t+1} st+1,而且拿到 r t r_t rt 的概率是多少。

这样子的一个状态转移概率是具有马尔可夫性质的(系统下一时刻的状态仅由当前时刻的状态决定,不依赖于以往任何状态)。因为这个状态转移概率,它是下一时刻的状态是取决于当前的状态,它和之前的 s t − 1 s_{t-1} st1 s t − 2 s_{t-2} st2 都没有什么关系。然后再加上这个过程也取决于智能体跟环境交互的这个 a t a_t at ,所以有一个决策的一个过程在里面。我们就称这样的一个过程为马尔可夫决策过程(Markov Decision Process, MDP)。

MDP 就是序列决策这样一个经典的表达方式。MDP 也是强化学习里面一个非常基本的学习框架。状态、动作、状态转移概率和奖励 ( S , A , P , R ) (S,A,P,R) (S,A,P,R),这四个合集就构成了强化学习 MDP 的四元组,后面也可能会再加个衰减因子构成五元组。

Model-based

在这里插入图片描述
如上图所示,我们把这些可能的动作和可能的状态转移的关系画成一个树状图。它们之间的关系就是从 s t s_t st a t a_t at ,再到 s t + 1 s_t+1 st+1,再到 a t + 1 a_t+1 at+1 ,再到 s t + 2 s_t+2 st+2 这样子的一个过程。

我们去跟环境交互,只能走完整的一条通路。这里面产生了一系列的一个决策的过程,就是我们跟环境交互产生了一个经验。我们会使用 P 函数(probability function)和 R 函数(reward function)来去描述环境。P 函数就是状态转移的概率,P 函数实际上反映的是环境的一个随机性。

当我们知道 P 函数和 R 函数时,我们就说这个 MDP 是已知的,可以通过 policy iteration 和 value iteration 来找最佳的策略。

比如,在熊发怒的情况下,我如果选择装死,假设熊看到人装死就一定会走的话,我们就称在这里面的状态转移概率就是 100%。但如果说在熊发怒的情况下,我选择跑路而导致可能跑成功以及跑失败,出现这两种情况。那我们就可以用概率去表达一下说转移到其中一种情况的概率大概 10%,另外一种情况的概率大概是 90% 会跑失败。

**如果知道这些状态转移概率和奖励函数的话,我们就说这个环境是已知的,因为我们是用这两个函数去描述环境的。**如果是已知的话,我们其实可以用动态规划去计算说,如果要逃脱熊,那么能够逃脱熊概率最大的最优策略是什么。很多强化学习的经典算法都是 model-free 的,就是环境是未知的。

Model-free
在这里插入图片描述
因为现实世界中人类第一次遇到熊之前,我们根本不知道能不能跑得过熊,所以刚刚那个 10%、90% 的概率也就是虚构出来的概率。熊到底在什么时候会往什么方向去转变的话,我们经常是不知道的。

我们是处在一个未知的环境里的,也就是这一系列的决策的 P 函数和 R 函数是未知的,这就是 model-based 跟 model-free 的一个最大的区别。

强化学习就是可以用来解决用完全未知的和随机的环境。强化学习要像人类一样去学习,人类学习的话就是一条路一条路地去尝试一下,先走一条路,看看结果到底是什么。多试几次,只要能活命的。我们可以慢慢地了解哪个状态会更好,

  • 我们用价值函数 V(s) 来代表这个状态是好的还是坏的。
  • 用 Q 函数来判断说在什么状态下做什么动作能够拿到最大奖励,用 Q 函数来表示这个状态-动作值。

Q-table

在这里插入图片描述
接下来介绍下 Q 函数。在多次尝试和熊打交道之后,人类就可以对熊的不同的状态去做出判断,我们可以用状态动作价值来表达说在某个状态下,为什么动作 1 会比动作 2 好,因为动作 1 的价值比动作 2 要高,这个价值就叫 Q 函数。

**如果 Q 表格是一张已经训练好的表格的话,那这一张表格就像是一本生活手册。**我们就知道在熊发怒的时候,装死的价值会高一点。在熊离开的时候,我们可能偷偷逃跑的会比较容易获救。

这张表格里面 Q 函数的意义就是我选择了这个动作之后,最后面能不能成功,就是我需要去计算在这个状态下,我选择了这个动作,后续能够一共拿到多少总收益。如果可以预估未来的总收益的大小,我们当然知道在当前的这个状态下选择哪个动作,价值更高。我选择某个动作是因为我未来可以拿到的那个价值会更高一点。所以强化学习的目标导向性很强,环境给出的 reward 是一个非常重要的反馈,它就是根据环境的 reward 来去做选择。

在这里插入图片描述
Q: 为什么可以用未来的总收益来评价当前这个动作是好是坏?

A: 举个例子,假设一辆车在路上,当前是红灯,我们直接走的收益就很低,因为违反交通规则,这就是当前的单步收益。可是如果我们这是一辆救护车,我们正在运送病人,把病人快速送达医院的收益非常的高,而且越快你的收益越大。在这种情况下,我们很可能应该要闯红灯,因为未来的远期收益太高了。这也是为什么强化学习需要去学习远期的收益,因为在现实世界中奖励往往是延迟的。所以我们一般会从当前状态开始,把后续有可能会收到所有收益加起来计算当前动作的 Q 的价值,让 Q 的价值可以真正地代表当前这个状态下,动作的真正的价值。
在这里插入图片描述
但有的时候把目光放得太长远不好,因为如果事情很快就结束的话,你考虑到最后一步的收益无可厚非。如果是一个持续的没有尽头的任务,即持续式任务(Continuing Task),你把未来的收益全部相加,作为当前的状态价值就很不合理。

股票的例子就很典型了,我们要关注的是累积的收益。可是如果说十年之后才有一次大涨大跌,你显然不会把十年后的收益也作为当前动作的考虑因素。那我们会怎么办呢,有句俗话说得好,对远一点的东西,我们就当做近视,就不需要看得太清楚,我们可以引入这个衰减因子 γ \gamma γ 来去计算这个未来总收益, γ ∈ [ 0 , 1 ] \gamma∈[0,1] γ[0,1],越往后 γ n \gamma^n γn 就会越小,也就是说越后面的收益对当前价值的影响就会越小。

在这里插入图片描述
举个例子来看看计算出来的是什么效果。这是一个悬崖问题,这个问题是需要智能体从出发点 S 出发,到达目的地 G,同时避免掉进悬崖(cliff),掉进悬崖的话就会有 -100 分的惩罚,但游戏不会结束,它会被直接拖回起点,游戏继续。为了到达目的地,我们可以沿着蓝线和红线走。
在这里插入图片描述
在这个环境当中,我们怎么去计算状态动作价值(未来的总收益)。

  • 如果 γ = 0 \gamma = 0 γ=0, 假设我走一条路,并从这个状态出发,在这里选择是向上,这里选择向右。如果 γ = 0 \gamma = 0 γ=0,用这个公式去计算的话,它相当于考虑的就是一个单步的收益。我们可以认为它是一个目光短浅的计算的方法。
  • 如果 γ = 1 \gamma = 1 γ=1,那就等于是说把后续所有的收益都全部加起来。在这里悬崖问题,你每走一步都会拿到一个 -1 分的 reward,只有到了终点之后,它才会停止。如果 γ = 1 \gamma = 1 γ=1的话,我们用这个公式去计算,就这里是 -1。然后这里的话,未来的总收益就是 − 1 + − 1 = − 2 -1+-1=-2 1+1=2
  • 如果 \gamma = 0.6γ=0.6,就是目光没有放得那么的长远,计算出来是这个样子的。利用 G t = R t + 1 + γ G t + 1 G_{t}=R_{t+1}+\gamma G_{t+1} Gt=Rt+1+γGt+1​ 这个公式从后往前推。
    在这里插入图片描述
    这里的计算是我们选择了一条路,计算出这条路径上每一个状态动作的价值。我们可以看一下右下角这个图,如果说我走的不是红色的路,而是蓝色的路,那我算出来的 Q 值可能是这样。那我们就知道,当小乌龟在 -12 这个点的时候,往右边走是 -11,往上走是 -15,它自然就知道往右走的价值更大,小乌龟就会往右走。

在这里插入图片描述
类似于上图,最后我们要求解的就是一张 Q 表格,

  • 它的行数是所有的状态数量,一般可以用坐标来表示表示格子的状态,也可以用 1、2、3、4、5、6、7 来表示不同的位置。
  • Q 表格的列表示上下左右四个动作。

最开始这张 Q 表格会全部初始化为零,然后 agent 会不断地去和环境交互得到不同的轨迹,当交互的次数足够多的时候,我们就可以估算出每一个状态下,每个行动的平均总收益去更新这个 Q 表格。怎么去更新 Q 表格就是接下来要引入的强化概念。

强化就是我们可以用下一个状态的价值来更新当前状态的价值,其实就是强化学习里面 bootstrapping 的概念。在强化学习里面,你可以每走一步更新一下 Q 表格,然后用下一个状态的 Q 值来更新这个状态的 Q 值,这种单步更新的方法叫做时序差分。

Model-free Prediction

在没法获取 MDP 的模型情况下,我们可以通过以下两种方法来估计某个给定策略的价值:

  • Monte Carlo policy evaluation
  • Temporal Difference(TD) learning

Monte-Carlo Policy Evaluation

在这里插入图片描述

  • 蒙特卡罗(Monte-Carlo,MC)方法是基于采样的方法,我们让 agent 跟环境进行交互,就会得到很多轨迹。每个轨迹都有对应的return: G t = R t + 1 + γ R t + 2 + γ 2 R t + 3 + … G_{t}=R_{t+1}+\gamma R_{t+2}+\gamma^{2} R_{t+3}+\ldots Gt=Rt+1+γRt+2+γ2Rt+3+
  • 我们把每个轨迹的 return 进行平均,就可以知道某一个策略下面对应状态的价值。
  • MC 是用 经验平均回报(empirical mean return) 的方法来估计。
  • MC 方法不需要 MDP 的转移函数和奖励函数,并且不需要像动态规划那样用 bootstrapping 的方法。
  • MC 的局限性:只能用在有终止的 MDP 。
    在这里插入图片描述
    在这里插入图片描述
    我们可以把 Monte-Carlo 更新的方法写成 incremental MC 的方法:
  • 我们采集数据,得到一个新的轨迹。
  • 对于这个轨迹,我们采用增量的方法进行更新,如下式所示:

N ( S t ) ← N ( S t ) + 1 N\left(S_{t}\right) \leftarrow N\left(S_{t}\right)+1 N(St)N(St)+1
KaTeX parse error: Expected '\right', got 'EOF' at end of input: …ft(S_{t}\right)

v ( S t ) ← v ( S t ) + 1 N ( S t ) ( G t − v ( S t ) ) v(S_{t} )←v(S_{t} )+ \frac 1 {N(S_{t})} (G_{t} −v(S_{t} )) v(St)v(St)+N(St)1(Gtv(St))
​ 我们可以直接把 1 N ( S t ) \frac 1 {N(S_{t})} N(St)1 变成 α \alpha α (学习率), α \alpha α代表着更新的速率有多快,我们可以进行设置。
在这里插入图片描述
我们再来看一下 DP 和 MC 方法的差异。

动态规划也是常用的估计价值函数的方法。在动态规划里面,我们使用了 bootstrapping 的思想。bootstrapping 的意思就是我们基于之前估计的量来估计一个量。

DP 就是用 Bellman expectation backup,就是通过上一时刻的值 v i − 1 ( s ′ ) v_{i-1}(s') vi1(s)来更新当前时刻 v i ( s ) v_i(s) vi(s)这个值,不停迭代,最后可以收敛。Bellman expectation backup 就有两层加和,内部加和和外部加和,算了两次 expectation,得到了一个更新。
在这里插入图片描述
MC 是通过 empirical mean return (实际得到的收益)来更新它,对应树上面蓝色的轨迹,我们得到是一个实际的轨迹,实际的轨迹上的状态已经是决定的,采取的行为都是决定的。MC 得到的是一条轨迹,这条轨迹表现出来就是这个蓝色的从起始到最后终止状态的轨迹。现在只是更新这个轨迹上的所有状态,跟这个轨迹没有关系的状态都没有更新。
在这里插入图片描述

  • MC 可以在不知道环境的情况下 work,而 DP 是 model-based。
  • MC 只需要更新一条轨迹的状态,而 DP 则是需要更新所有的状态。状态数量很多的时候(比如一百万个,两百万个),DP
    这样去迭代的话,速度是非常慢的。这也是 sample-based 的方法 MC 相对于 DP 的优势。

Temporal Difference

在这里插入图片描述
为了让大家更好地理解时序差分(Temporal Difference,TD)这种更新方法,这边给出它的物理意义
我们先理解一下巴普洛夫的条件反射实验,这个实验讲的是小狗会对盆里面的食物无条件产生刺激,分泌唾液。一开始小狗对于铃声这种中性刺激是没有反应的,可是我们把这个铃声和食物结合起来,每次先给它响一下铃,再给它喂食物,多次重复之后,当铃声响起的时候,小狗也会开始流口水。盆里的肉可以认为是强化学习里面那个延迟的 reward,声音的刺激可以认为是有 reward 的那个状态之前的一个状态。多次重复实验之后,最后的这个 reward 会强化小狗对于这个声音的条件反射,它会让小狗知道这个声音代表着有食物,这个声音对于小狗来说也就有了价值,它听到这个声音也会流口水。
在这里插入图片描述
巴普洛夫效应揭示的是中性刺激(铃声)跟无条件刺激(食物)紧紧挨着反复出现的时候,条件刺激也可以引起无条件刺激引起的唾液分泌,然后形成这个条件刺激。

这种中性刺激跟无条件刺激在时间上面的结合,我们就称之为强化。 强化的次数越多,条件反射就会越巩固。小狗本来不觉得铃声有价值的,经过强化之后,小狗就会慢慢地意识到铃声也是有价值的,它可能带来食物。更重要是一种条件反射巩固之后,我们再用另外一种新的刺激和条件反射去结合,还可以形成第二级条件反射,同样地还可以形成第三级条件反射。

在人的身上是可以建立多级的条件反射的,举个例子,比如说一般我们遇到熊都是这样一个顺序:看到树上有熊爪,然后看到熊之后,突然熊发怒,扑过来了。经历这个过程之后,我们可能最开始看到熊才会瑟瑟发抖,后面就是看到树上有熊爪就已经有害怕的感觉了。也就说在不断的重复试验之后,下一个状态的价值,它是可以不断地去强化影响上一个状态的价值的。

下面开始正式介绍 TD 方法。

  • TD 是介于 MC 和 DP 之间的方法。
  • TD 是 model-free 的,不需要 MDP 的转移矩阵和奖励函数。
  • TD 可以从不完整的 episode 中学习,结合了 bootstrapping 的思想。
    在这里插入图片描述
    上图是 TD 算法的框架。

(1) 目的:对于某个给定的策略,在线(online)地算出它的价值函数,即一步一步地(step-by-step)算。
(2) 估计回报 R t + 1 + γ v ( S t + 1 ) R_{t+1} +γv(St+1) Rt+1+γv(St+1) 被称为 TD target,TD target 是带衰减的未来收益的总和。TD target 由两部分组成:
- 走了某一步后得到的实际奖励: R t + 1 R_{t+1} Rt+1
- 我们利用了 bootstrapping 的方法,通过之前的估计来估计 v ( S t + 1 ) v(S_{t+1}) v(St+1),然后加了一个折扣系数,即 γ v ( S t + 1 ) \gamma v(S_{t+1}) γv(St+1),具体过程如下式所示:
在这里插入图片描述

Chapter3 表格型方法

1 Keywords

  • P函数和R函数: P函数反应的是状态转移的概率,即反应的环境的随机性,R函数就是Reward function。但是我们通常处于一个未知的环境(即P函数和R函数是未知的)。
  • Q表格型表示方法: 表示形式是一种表格形式,其中横坐标为 action(agent)的行为,纵坐标是环境的state,其对应着每一个时刻agent和环境的情况,并通过对应的reward反馈去做选择。一般情况下,Q表格是一个已经训练好的表格,不过,我们也可以每进行一步,就更新一下Q表格,然后用下一个状态的Q值来更新这个状态的Q值(即时序差分方法)。
  • 时序差分(Temporal Difference): 一种Q函数(Q值)的更新方式,也就是可以拿下一步的 Q 值 Q ( S t + 1 , A t + 1 ) Q(S_{t+_1},A_{t+1}) Q(St+1,At+1) 来更新我这一步的 Q 值 Q ( S t , A t ) Q(S_t,A_t) Q(St,At) 。完整的计算公式如下: Q ( S t , A t ) ← Q ( S t , A t ) + α [ R t + 1 + γ Q ( S t + 1 , A t + 1 ) − Q ( S t , A t ) ] Q(S_t,A_t) \larr Q(S_t,A_t) + \alpha [R_{t+1}+\gamma Q(S_{t+1},A_{t+1})-Q(S_t,A_t)] Q(St,At)Q(St,At)+α[Rt+1+γQ(St+1,At+1)Q(St,At)]
  • SARSA算法: 一种更新前一时刻状态的单步更新的强化学习算法,也是一种on-policy策略。该算法由于每次更新值函数需要知道前一步的状态(state),前一步的动作(action)、奖励(reward)、当前状态(state)、将要执行的动作(action),即 ( S t , A t , R t + 1 , S t + 1 , A t + 1 ) (S_{t}, A_{t}, R_{t+1}, S_{t+1}, A_{t+1}) (St,At,Rt+1,St+1,At+1)这几个值,所以被称为SARSA算法。agent每进行一次循环,都会用 ( S t , A t , R t + 1 , S t + 1 , A t + 1 ) (S_{t}, A_{t}, R_{t+1}, S_{t+1}, A_{t+1}) (St,At,Rt+1,St+1,At+1) 对于前一步的Q值(函数)进行一次更新。

2 Questions

(1) 构成强化学习MDP的四元组有哪些变量?

答:状态、动作、状态转移概率和奖励,分别对应 ( S , A , P , R ) (S,A,P,R) (S,A,P,R),后面有可能会加上个衰减因子构成五元组。

(2) 基于以上的描述所构成的强化学习的“学习”流程。

答:强化学习要像人类一样去学习了,人类学习的话就是一条路一条路的去尝试一下,先走一条路,我看看结果到底是什么。多试几次,只要能一直走下去的,我们其实可以慢慢的了解哪个状态会更好。我们用价值函数 V ( s ) V(s) V(s) 来代表这个状态是好的还是坏的。然后用这个 Q 函数来判断说在什么状态下做什么动作能够拿到最大奖励,我们用 Q 函数来表示这个状态-动作值。

(3) 基于SARSA算法的agent的学习过程。

答:我们现在有环境,有agent。每交互一次以后,我们的agent会向环境输出action,接着环境会反馈给agent当前时刻的state和reward。那么agent此时会实现两个方法:

  1. 使用已经训练好的Q表格,对应环境反馈的state和reward选取对应的action进行输出。
  2. 我们已经拥有了 ( S t , A t , R t + 1 , S t + 1 , A t + 1 ) (S_{t}, A_{t}, R_{t+1}, S_{t+1}, A_{t+1}) (St,At,Rt+1,St+1,At+1) 这几个值,并直接使用 A t + 1 A_{t+1} At+1去更新我们的Q表格。

(4) Q-learning和Sarsa的区别?
答:Sarsa算法是Q-learning算法的改进。(这句话出自「神经网络与深度学习」的第 342 页)(可参考SARSA「on-line q-learning using connectionist systems」的 abstract 部分)

  1. 首先,Q-learning 是 off-policy 的时序差分学习方法,Sarsa 是 on-policy 的时序差分学习方法。
  2. 其次,Sarsa 在更新 Q 表格的时候,它用到的 A’ 。我要获取下一个 Q 值的时候,A’ 是下一个 step 一定会执行的 action 。这个 action 有可能是 ε-greddy 方法 sample 出来的值,也有可能是 max Q 对应的 action,也有可能是随机动作。但是就是它实实在在执行了的那个动作。
  3. 但是 Q-learning 在更新 Q 表格的时候,它用到这个的 Q 值$ Q(S’,a’)$对应的那个 action ,它不一定是下一个 step 会执行的实际的 action,因为你下一个实际会执行的那个 action 可能会探索。Q-learning 默认的 action 不是通过 behavior policy 来选取的,它是默认 A’ 为最优策略选的动作,所以 Q-learning 在学习的时候,不需要传入 A’,即 a t + 1 a_{t+1} at+1 的值。
  4. 更新公式的对比(区别只在target计算这一部分):
    Sarsa的公式: R t + 1 + γ Q ( S t + 1 , A t + 1 ) R_{t+1}+\gamma Q(S_{t+1}, A_{t+1}) Rt+1+γQ(St+1,At+1)
    Q-learning的公式: R t + 1 + γ max ⁡ a Q ( S t + 1 , a ) R_{t+1}+\gamma \underset{a}{\max} Q\left(S_{t+1}, a\right) Rt+1+γamaxQ(St+1,a)

Sarsa 实际上都是用自己的策略产生了 S,A,R,S’,A’ 这一条轨迹。然后拿着 Q ( S t + 1 , A t + 1 ) Q(S_{t+1},A_{t+1}) Q(St+1,At+1) 去更新原本的 Q 值 Q ( S t , A t ) Q 值 Q(S_t,A_t) QQ(St,At)。 但是 Q-learning 并不需要知道,我实际上选择哪一个 action ,它默认下一个动作就是 Q 最大的那个动作。所以基于此,Sarsa的action通常会更加“保守”、“胆小”,而对应的Q-Learning的action会更加“莽撞”、“激进”。

(5) On-policy和 off-policy 的区别?
答:Sarsa 就是一个典型的 on-policy 策略,它只用一个 π ,为了兼顾探索和利用,所以它训练的时候会显得有点胆小怕事。它在解决悬崖问题的时候,会尽可能地离悬崖边上远远的,确保说哪怕自己不小心探索了一点了,也还是在安全区域内不不至于跳进悬崖。

Q-learning 是一个比较典型的 off-policy 的策略,它有目标策略 target policy,一般用 π 来表示。然后还有行为策略 behavior policy,用 μ 来表示。它分离了目标策略跟行为策略。Q-learning 就可以大胆地用 behavior policy 去探索得到的经验轨迹来去优化我的目标策略。这样子我更有可能去探索到最优的策略。

比较 Q-learning 和 Sarsa 的更新公式可以发现,Sarsa 并没有选取最大值的 max 操作。因此,Q-learning 是一个非常激进的算法,希望每一步都获得最大的利益;而 Sarsa 则相对非常保守,会选择一条相对安全的迭代路线。

(6) value-based和policy-based的区别是什么?
答:

  1. 生成policy上的差异:前者随机,后者确定。Value-Base中的 action-value估计值最终会收敛到对应的true values(通常是不同的有限数,可以转化为0到1之间的概率),因此通常会获得一个确定的策略(deterministic policy);而Policy-Based不会收敛到一个确定性的值,另外他们会趋向于生成optimal stochastic policy。如果optimal policy是deterministic的,那么optimal action对应的性能函数将远大于suboptimal actions对应的性能函数,性能函数的大小代表了概率的大小。
  2. 动作空间是否连续,前者离散,后者连续。Value-Base,对于连续动作空间问题,虽然可以将动作空间离散化处理,但离散间距的选取不易确定。过大的离散间距会导致算法取不到最优action,会在这附近徘徊,过小的离散间距会使得action的维度增大,会和高维度动作空间一样导致维度灾难,影响算法的速度;而Policy-Based适用于连续的动作空间,在连续的动作空间中,可以不用计算每个动作的概率,而是通过Gaussian distribution (正态分布)选择action。
  3. value-based,例如Q-learning,是通过求解最优值函数间接的求解最优策略;policy-based,例如REINFORCE,Monte-Carlo Policy Gradient,等方法直接将策略参数化,通过策略搜索,策略梯度或者进化方法来更新策略的参数以最大化回报。基于值函数的方法不易扩展到连续动作空间,并且当同时采用非线性近似、自举和离策略时会有收敛性问题。策略梯度具有良好的收敛性证明。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值