EasyRL 强化学习笔记 3、4章节(表格型方法,策略梯度)

本文转载于EasyRL。我是在阅读过程中从中摘录了一些重点,强烈建议大家阅读原文哦!写的超级细,而且在下面留言很快就会有回复。

文章目录

  • 第三章 表格型方法
    • MDP
      • model-based
      • model-free
    • Q-table
    • Model-free Prediction
      • Monte-Carlo
      • Temporal Difference
      • Bootstrapping and Sampling for DP, MC and TD
    • Model-free Control
      • Sarsa: On-policy TD Control
        • n-step Sarsa:
      • Q-learning: Off-policy TD Control
    • On-policy vs. Off-policy
    • value-based vs. policy-based
    • DP vs. MC vs. TD
    • 总结
  • 使用Q-learning解决悬崖寻路问题
  • MC代码
  • TD 代码
  • 第四章 策略梯度
    • tips
      • Add a baseline:
      • assign suitable credit:
      • Advantage function:
    • REINFORCE: Monte Carlo Policy Gradient
  • 自己的思考:

第三章 表格型方法

MDP

  1. MDP四元组 < S , A , P , R > <S,A,P,R>(有时候也会加上 γ \gamma γ变成五元组)。
  2. RL是一个序列决策过程

model-based

  1. model-based(有模型) RL agent,它通过学习这个状态的转移
  2. 我们跟环境交互,只能走完整的一条通路。这里面产生了一系列的一个决策的过程,就是我们跟环境交互产生了一个经验。我们会使用 概率函数(probability function)奖励函数(reward function)来去描述环境。概率函数就是状态转移的概率,概率函数实际上反映的是环境的一个随机性。
  3. 如果知道这些状态转移概率和奖励函数的话,我们就说这个环境是已知的,因为我们是用这两个函数去描述环境的

model-free

EasyRL 强化学习笔记 3、4章节(表格型方法,策略梯度)_第1张图片

  1. model-free(免模型) RL agent,我们是处在一个未知的环境里的,也就是这一系列的决策的概率函数和奖励函数是未知的,这就是 model-based 跟 model-free 的一个最大的区别。
  2. agent 跟环境进行交互,采集到很多的轨迹数据,agent 从轨迹中获取信息来改进策略,从而获得更多的奖励。
  3. 可以用价值函数$V(s)$来代表这个状态的好坏。
  4. Q函数判断做何种action能拿到最大奖励。

Q-table

EasyRL 强化学习笔记 3、4章节(表格型方法,策略梯度)_第2张图片

  1. Q表格存储的是,在状态s时采取动作a,后续得到的价值(未来总收益)。行数为所有的状态数量,列数代表action数量。
  2. Q值并不是reward!我们一般会从当前状态开始,把后续有可能会收到所有收益加起来计算当前动作的 Q 的价值,让 Q 的价值可以真正地代表当前这个状态下,动作的真正的价值
  3. 对于持续型任务,我们一般引入衰减因子 γ \gamma γ,使得越往后的收益对当前Q值的影响越小。
  4. γ = 0 \gamma=0 γ=0代表只考虑单步收益(Q值=reward), γ = 1 \gamma=1 γ=1代表把后续所有收益都加起来
  5. 最开始这张 Q 表格会全部初始化为零,然后 agent 会不断地去和环境交互得到不同的轨迹,当交互的次数足够多的时候,我们就可以估算出每一个状态下,每个行动的平均总收益去更新这个 Q 表格。
  6. 强化(更新表格)就是我们可以用下一个状态的价值来更新当前状态的价值,其实就是强化学习里面 bootstrapping(自举) 的概念。在强化学习里面,你可以每走一步更新一下 Q 表格,然后用下一个状态的 Q 值来更新这个状态的 Q 值,这种单步更新的方法叫做时序差分。(还有蒙特卡洛方法)

百度了一下boostrapping:利用有限的样本资料经由多次重复抽样,重新建立起足以代表母体样本分布的新样本。有点“有放回抽样”的味道。
但是这个地方的boostrapping指的是:基于之前估计的量来估计一个量。

Model-free Prediction

Monte-Carlo

EasyRL 强化学习笔记 3、4章节(表格型方法,策略梯度)_第3张图片
蒙特卡罗(Monte-Carlo,MC)方法是基于采样的方法:让agent跟环境进行交互,可以得到很多轨迹以及对应的return(累计回报),将这些return取平均,就是当前state对应的价值。

大数定律:在实验次数足够多的情况下,频率就会非常接近概率。

  • MC 是用 经验平均回报(empirical mean return)的方法来估计。
  • MC 方法不需要 MDP 的转移函数奖励函数,并且不需要像动态规划那样用 bootstrapping 的方法。因为MC是一种model-free的方法!
  • MC 的局限性:只能用在有终止的 MDP 。

DP与MC的差异:

  • 动态规划也是常用的估计价值函数的方法。在动态规划里面,我们使用了 bootstrapping 的思想。
  • DP 就是用 Bellman expectation backup (1),就是通过上一时刻的值 v i − 1 ( s ′ ) v_{i-1}(s') vi1(s)更新当前时刻 v i ( s ) v_i(s) vi(s)这个值,不停迭代,最后可以收敛。Bellman expectation backup 就有两层加和,内部加和和外部加和,算了两次 expectation,得到了一个更新。
    v t + 1 (   s ) = ∑ a ∈ A π ( a ∣ s ) ( R ( s , a ) + γ ∑ s ′ ∈ S P ( s ′ ∣ s , a ) v t ( s ′ ) ) \mathrm{v}_{\mathrm{t}+1}(\mathrm{~s})=\sum_{\mathrm{a} \in \mathcal{A}} \pi(\mathrm{a} \mid \mathrm{s})\left(\mathrm{R}(\mathrm{s}, \mathrm{a})+\gamma \sum_{\mathrm{s}^{\prime} \in \mathcal{S}} \mathrm{P}\left(\mathrm{s}^{\prime} \mid \mathrm{s}, \mathrm{a}\right) \mathrm{v}_{\mathrm{t}}\left(\mathrm{s}^{\prime}\right)\right) vt+1( s)=aAπ(as)(R(s,a)+γsSP(ss,a)vt(s)) (1)

贝尔曼方程(Bellman Equation)也被称作动态规划方程(Dynamic Programming Equation),由理查·贝尔曼(Richard Bellman)发现。(由下一个时刻的值更新上一个时刻的值)

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

Temporal Difference

斯坦福大学做的一个动画

  1. 小栗子:每次摇铃后就给狗狗喂食物,久而久之,一摇铃狗狗就会流口水。巴普洛夫效应揭示的是中性刺激(铃声)无条件刺激(食物)紧紧挨着反复出现的时候,中性刺激也可以引起无条件刺激引起的唾液分泌,然后形成条件刺激。
  2. 这种中性刺激跟无条件刺激在时间上面的结合,我们就称之为强化。 (不断重复实验后,下一个状态的价值,会不断强化上一个状态的价值)
  • TD是介于MC与DP之间的方法。
  • 属于model-free,即不需要MDP的转移矩阵和奖励函数。
  • 可以从不完整的episode中学习,结合了bootstrapping的思想
    EasyRL 强化学习笔记 3、4章节(表格型方法,策略梯度)_第4张图片
  • 目的:对于某个给定的策略,在线(online)地算出它的价值函数,即一步一步地(step-by-step)算。用估计回报去更新上一时刻的值。
  • TD target(估计回报)由两部分组成:① 走了某一步后得到的实际奖励 ② γ \gamma γ V ( s t + 1 ) V(s_{t+1}) V(st+1)
    具体公式:
    v ( s ) = E [ G t ∣ s t = s ] = E [ R t + 1 + γ R t + 2 + γ 2 R t + 3 + … ∣ s t = s ] = E [ R t + 1 ∣ s t = s ] + γ E [ R t + 2 + γ R t + 3 + γ 2 R t + 4 + … ∣ s t = s ] = R ( s ) + γ E [ G t + 1 ∣ s t = s ] = R ( s ) + γ E [ v ( s t + 1 ) ∣ s t = s ] \begin{aligned} \mathrm{v}(\mathrm{s}) &=\mathbb{E}\left[\mathrm{G}_{\mathrm{t}} \mid \mathrm{s}_{\mathrm{t}}=\mathrm{s}\right] \\ &=\mathbb{E}\left[\mathrm{R}_{\mathrm{t}+1}+\gamma \mathrm{R}_{\mathrm{t}+2}+\gamma^{2} \mathrm{R}_{\mathrm{t}+3}+\ldots \mid \mathrm{s}_{\mathrm{t}}=\mathrm{s}\right] \\ &=\mathbb{E}\left[\mathrm{R}_{\mathrm{t}+1} \mid \mathrm{s}_{\mathrm{t}}=\mathrm{s}\right]+\gamma \mathbb{E}\left[\mathrm{R}_{\mathrm{t}+2}+\gamma \mathrm{R}_{\mathrm{t}+3}+\gamma^{2} \mathrm{R}_{\mathrm{t}+4}+\ldots \mid \mathrm{s}_{\mathrm{t}}=\mathrm{s}\right] \\ &=\mathrm{R}(\mathrm{s})+\gamma \mathbb{E}\left[\mathrm{G}_{\mathrm{t}+1} \mid \mathrm{s}_{\mathrm{t}}=\mathrm{s}\right] \\ &=\mathrm{R}(\mathrm{s})+\gamma \mathbb{E}\left[\mathrm{v}\left(\mathrm{s}_{\mathrm{t}+1}\right) \mid \mathrm{s}_{\mathrm{t}}=\mathrm{s}\right] \end{aligned} v(s)=E[Gtst=s]=E[Rt+1+γRt+2+γ2Rt+3+st=s]=E[Rt+1st=s]+γE[Rt+2+γRt+3+γ2Rt+4+st=s]=R(s)+γE[Gt+1st=s]=R(s)+γE[v(st+1)st=s]

MC vs TD:

  • MC中的 G t G_t Gt是实际得到的值(target),因为它把一条轨迹走完了(必须等到游戏结束才行)。TD可以在线学习,不用等到等轨迹结束就更新价值函数。
  • TD可以从不完整的序列中学习,MC不行。
  • TD可以在连续环境下学习,TD只能在有终止的情况下学习、
  • TD利用了马尔科夫性质,MC没有用到。

TD 是指在不清楚马尔可夫状态转移概率的情况下,以采样的方式得到不完整的状态序列,估计某状态在该状态序列完整后可能得到的收益,并通过不断地采样持续更新价值。相对来说更灵活、快速。

MC 则需要经历完整的状态序列后,再来更新状态的真实价值。

EasyRL 强化学习笔记 3、4章节(表格型方法,策略梯度)_第5张图片

  • 前面的例子是TD(0),即只走一步。我们可以调整step进行扩展。
  • 调整步数相当于是MC和TD之间的trade-off,n为正无穷时,变成了MC

Bootstrapping and Sampling for DP, MC and TD

  • Bootstrapping:更新时用到了估计
  1. MC 没用 bootstrapping,因为它是根据实际的 return 来更新。
  2. DP 用了 bootstrapping。
  3. TD 用了 bootstrapping。
  • Sampling:更新时通过采样得到一个期望
  1. MC 是纯 sampling 的方法。
  2. DP 没有用 sampling,它是直接用 Bellman expectation equation 来更新状态价值的。
  3. TD 用了 sampling。TD target 由两部分组成,一部分是 sampling,一部分是 bootstrapping。
    EasyRL 强化学习笔记 3、4章节(表格型方法,策略梯度)_第6张图片
    DP 是直接算 expectation,把它所有相关的状态都进行加和。
    EasyRL 强化学习笔记 3、4章节(表格型方法,策略梯度)_第7张图片
    MC 在当前状态下,采一个支路,在一个path 上进行更新,更新这个 path 上的所有状态。
    EasyRL 强化学习笔记 3、4章节(表格型方法,策略梯度)_第8张图片
    TD 是从当前状态开始,往前走了一步,关注的是非常局部的步骤。

Model-free Control

Q: 当我们不知道 MDP 模型情况下,如何优化价值函数,得到最佳的策略?

A: 我们可以把 policy iteration 进行一个广义的推广,使它能够兼容 MC 和 TD 的方法,即 ·Generalized Policy Iteration(GPI) with MC and TD。

Policy iteration 由两个步骤组成:

  1. 根据给定的当前的 policy π 来估计价值函数;
  2. 得到估计的价值函数后,通过 greedy 的方法来改进它的算法。

这两个步骤是一个互相迭代的过程。
EasyRL 强化学习笔记 3、4章节(表格型方法,策略梯度)_第9张图片

  • 算法核心:如何用 MC 方法来填 Q-table。
    EasyRL 强化学习笔记 3、4章节(表格型方法,策略梯度)_第10张图片
    ε \varepsilon ε greedy 探索的 MC 算法的伪代码。

与 MC 相比,TD 有如下几个优势:

  • 低方差。
  • 能够在线学习。
  • 能够从不完整的序列学习。

EasyRL 强化学习笔记 3、4章节(表格型方法,策略梯度)_第11张图片

偏差(bias):描述的是预测值(估计值)的期望与真实值之间的差距。偏差越大,越偏离真实数据,如上图第二行所示。
方差(variance):描述的是预测值的变化范围,离散程度,也就是离其期望值的距离。方差越大,数据的分布越分散,如上图右列所示。

Sarsa: On-policy TD Control

EasyRL 强化学习笔记 3、4章节(表格型方法,策略梯度)_第12张图片
将原本使用TD更新V的过程变成更新Q,图上讲的很明白了~

该算法由于每次更新值函数需要知道当前的状态(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 算法。它走了一步之后,拿到了 ( 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)之后,就可以做一次更新。

n-step Sarsa:

EasyRL 强化学习笔记 3、4章节(表格型方法,策略梯度)_第13张图片
刚刚那个是单步更新,还可以采用n步更新或者回合更新,即在执行 n 步之后再来更新价值和策略,这样就得到了n 步 Sarsa(n-step Sarsa)
q t ( n ) q_t^{(n)} qt(n)加上衰减因子 λ \lambda λ就变成了Sarsa( λ \lambda λ)。
Q ( S t , A t ) ← Q ( S t , A t ) + α ( q t λ − Q ( S t , A t ) ) \mathrm{Q}\left(\mathrm{S}_{\mathrm{t}}, \mathrm{A}_{\mathrm{t}}\right) \leftarrow \mathrm{Q}\left(\mathrm{S}_{\mathrm{t}}, \mathrm{A}_{\mathrm{t}}\right)+\alpha\left(\mathrm{q}_{\mathrm{t}}^{\lambda}-\mathrm{Q}\left(\mathrm{S}_{\mathrm{t}}, \mathrm{A}_{\mathrm{t}}\right)\right) Q(St,At)Q(St,At)+α(qtλQ(St,At))

Q-learning: Off-policy TD Control

Sarsa 是一种 on-policy 策略。Sarsa 优化的是它实际执行的策略,它直接拿下一步会执行的 action 来去优化 Q 表格,所以 on-policy 在学习的过程中,只存在一种策略,它用一种策略去做 action 的选取,也用一种策略去做优化。

  • 而 off-policy 在学习的过程中,有两种不同的策略:
  1. 第一个策略是我们需要去学习的策略,即target policy(目标策略),一般用 π \pi π 来表示,Target policy 就像是在后方指挥战术的一个军师,它可以根据自己的经验来学习最优的策略,不需要去和环境交互
  2. 另外一个策略是探索环境的策略,即behavior policy(行为策略),一般用 u u u 来表示。 μ μ μ 可以大胆地去探索到所有可能的轨迹,采集轨迹,采集数据,然后把采集到的数据喂给 target policy 去学习。而且喂给目标策略的数据中并不需要 A t + 1 A_{t+1} At+1,而 Sarsa 是要有 A t + 1 A_{t+1} At+1的。Behavior policy 像是一个战士,可以在环境里面探索所有的动作、轨迹和经验,然后把这些经验交给目标策略去学习。比如目标策略优化的时候,Q-learning 不会管你下一步去往哪里探索,它就只选收益最大的策略。

Off-policy 优点:

  1. 我们可以利用 exploratory policy 来学到一个最佳的策略,学习效率高;
  2. 可以让我们学习其他 agent 的行为,模仿学习,学习人或者其他 agent 产生的轨迹;
  3. 重用老的策略产生的轨迹。探索过程需要很多计算资源,这样的话,可以节省资源。

目标网络取能达到最大Q值的action,行为网络一般用 ε \varepsilon ε-greedy。
EasyRL 强化学习笔记 3、4章节(表格型方法,策略梯度)_第14张图片
Q-learning 是 off-policy 的时序差分学习方法,Sarsa 是 on-policy 的时序差分学习方法。
二者的更新公式都是一样的,只是target计算部分不太一样。Sarsa是Q-learning的改进。
在训练一个 episode 这个流程图当中,Q-learning 在 learn 之前它也不需要去拿到 next action A ′ A' A ,它只需要前面四个 ( S , A , R , S ′ ) (S,A,R,S') (S,A,R,S),这跟 Sarsa (需要知道下一个action,Q-learning根据s’找到max Q对应的action)很不一样。

On-policy vs. Off-policy

根本区别:生成样本的policy和参数更新时的policy是否相同。

  • on-policy:只使用了一个policy π \pi π,既要学习又要与环境交互。会比较胆小。
  • off-policy:有两种策略 target policy 和 behavior policy。
  • Q-learning是典型的off-policy算法,非常激进;Sarsa是典型的on-policy算法,会更保守。

value-based vs. policy-based

  1. 生成policy上的差异:前者确定,后者随机。action-value会收敛到对应的true value,通常会获得一个确定的策略;而policy-based不会收敛到一个确定的值,倾向于生成optimal stochastic policy。
  2. 动作空间是否连续,前者离散,后者连续。
  3. value-based,例如Q-learning,是通过求解最优值函数间接的求解最优策略;policy-based,例如REINFORCE,Monte-Carlo Policy Gradient,等方法直接将策略参数化,通过策略搜索,策略梯度或者进化方法来更新策略的参数以最大化回报。基于值函数的方法不易扩展到连续动作空间,并且当同时采用非线性近似、自举(bootstrapping)和离策略时会有收敛性问题。策略梯度具有良好的收敛性证明。

DP vs. MC vs. TD

  • 相同点:都用于进行值函数的描述与更新,并且所有方法都是基于对未来事件的展望来计算一个回溯值。

  • 不同点:

  1. 蒙特卡洛和TD算法隶属于model-free,而动态规划属于model-based;TD算法和蒙特卡洛的方法,因为都是基于model-free的方法,因而对于后续状态的获知也都是基于试验的方法;TD算法和动态规划的策略评估,都能基于当前状态的下一步预测情况来得到对于当前状态的值函数的更新。
  2. TD算法不需要等到实验结束后才能进行当前状态的值函数的计算与更新,而蒙特卡洛的方法需要试验交互,产生一整条的马尔科夫链并直到最终状态才能进行更新。TD算法和动态规划的策略评估不同之处为model-free和model-based ,动态规划可以凭借已知转移概率就能推断出来后续的状态情况,而TD只能借助试验才能知道。
  3. 蒙特卡洛方法和TD方法的不同在于,蒙特卡洛方法进行完整的采样来获取了长期的回报值,因而在价值估计上会有着更小的偏差,但是也正因为收集了完整的信息,所以价值的方差会更大,原因在于毕竟基于试验的采样得到,和真实的分布还是有差距,不充足的交互导致的较大方差。而TD算法与其相反,因为只考虑了前一步的回报值 其他都是基于之前的估计值,因而估计具有偏差大但方差较小
  4. 三者的联系:对于TD( λ \lambda λ)方法,如果 λ = 0 \lambda = 0 λ=0,那么此时等价于TD,即只考虑下一个状态;如果 λ = 1 \lambda = 1 λ=1,等价于MC,即考虑 T−1 个后续状态即到整个episode序列结束。

总结

在这里在这里

使用Q-learning解决悬崖寻路问题

代码链接在这里

  1. np.random.uniform(a,b) 其中a是下界,b是上界; 表示从一个均匀分布[a,b)中随机采样。
  2. np.random.choice(a)介于给出的数组a,随机选择一个值。
  3. self.Q_table = defaultdict(lambda: np.zeros(action_dim)) 初始化Q表,这里有点看不明白。更新self.Q_table[str(state)][action] += self.lr * (Q_target - Q_predict)
  4. next(iterable[, default])返回迭代器的下一个项目。

MC代码

  1. 维护一个Q_table,玩完一整个游戏后,利用one_ep_transition更新Q表格(计算average return)。
self.Q_table[state][action] = self.returns_sum[sa_pair] / self.returns_count[sa_pair]
  1. choose_action时,e-greed策略,随机选 or np.argmax(self.Q_table[state])

TD 代码

  1. 有actor actor_target和critic critic_target(怎么和DDPG一样了??)
  2. 训练时,刚开始是随机采样action,等采样到一定数量后再使用choose_action(self.actor(state)),所有训练数据都存在buffer中哦。
  3. 单步更新哦!也就是,玩一次就更新一次! 计算next_action(actor_target算的)时加入了noise,利用两个critic计算Q
    critic_loss = F.mse_loss(current_Q1, target_Q) + F.mse_loss(current_Q2, target_Q)

第四章 策略梯度

  1. RL中的环境和奖励我们无法控制,只能调整actor的策略,使其获得最大的奖励
  2. 策略policy就是一个网络,输入当前状态输出要采取的行为分布(每个行为的概率)。
    p θ ( τ ) = p ( s 1 ) p θ ( a 1 ∣ s 1 ) p ( s 2 ∣ s 1 , a 1 ) p θ ( a 2 ∣ s 2 ) p ( s 3 ∣ s 2 , a 2 ) ⋯ = p ( s 1 ) ∏ t = 1 T p θ ( a t ∣ s t ) p ( s t + 1 ∣ s t , a t ) \begin{aligned} \mathrm{p}_{\theta}(\tau) &=\mathrm{p}\left(\mathrm{s}_{1}\right) \mathrm{p}_{\theta}\left(\mathrm{a}_{1} \mid \mathrm{s}_{1}\right) \mathrm{p}\left(\mathrm{s}_{2} \mid \mathrm{s}_{1}, \mathrm{a}_{1}\right) \mathrm{p}_{\theta}\left(\mathrm{a}_{2} \mid \mathrm{s}_{2}\right) \mathrm{p}\left(\mathrm{s}_{3} \mid \mathrm{s}_{2}, \mathrm{a}_{2}\right) \cdots \\ &=\mathrm{p}\left(\mathrm{s}_{1}\right) \prod_{\mathrm{t}=1}^{\mathrm{T}} \mathrm{p}_{\theta}\left(\mathrm{a}_{\mathrm{t}} \mid \mathrm{s}_{\mathrm{t}}\right) \mathrm{p}\left(\mathrm{s}_{\mathrm{t}+1} \mid \mathrm{s}_{\mathrm{t}}, \mathrm{a}_{\mathrm{t}}\right) \end{aligned} pθ(τ)=p(s1)pθ(a1s1)p(s2s1,a1)pθ(a2s2)p(s3s2,a2)=p(s1)t=1Tpθ(atst)p(st+1st,at)
    轨迹出现的概率,取决于环境的行为 p ( s t + 1 ∣ s t , a t ) p(s_{t+1}|s_t,a_t) p(st+1st,at)(不可控的)和agent的行为 p θ ( a t ∣ s t ) p_{\theta}(a_t|s_t) pθ(atst)(可控的)。
  3. 奖励函数(reward function):根据s和a,给出r。 R ( τ ) R(\tau) R(τ)代表一个轨迹 τ \tau τ的奖励
  4. 一场游戏称作episodetrial,这场游戏的所有奖励total reward 我们称为return,我们的目标是通过调整参数,最大化R。
  5. 环境输出的s和演员输出的行为a串起来,称为trajectory(轨迹)
  6. 目的:最大化期望奖励;使用梯度上升;(就是根据reward function的公式,一步一步推出来的)
    EasyRL 强化学习笔记 3、4章节(表格型方法,策略梯度)_第15张图片
    ① 某一个轨迹 τ \tau τ出现的概率 * 这个 τ \tau τ的总奖励
    最大化期望奖励->梯度上升,需要对R取梯度,根据公式 噼里啪啦 就得到了最终更新公式。
    ③ 含义:增加 正奖励 对应的 action的概率。
    ④ 流程:每一轮游戏,都需要记录下 s s s, a a a, R ( τ ) R(\tau) R(τ)(由 r r r算出来的),然后进行更新。更新之后,需要重新收集数据…

tips

Add a baseline:

如果奖励多数都是正的,没有负的,那么模型会提升所有动作的概率
EasyRL 强化学习笔记 3、4章节(表格型方法,策略梯度)_第16张图片

  1. 仅仅通过正则化不能解决这个问题,因为总有一些action是没有采样到的,可是其他action的概率都上升了,它就落后了哦,但它有可能是好的action呀。因此,不要让reward一直是正的就好了呢!
  2. baseline取值:可以取平均 E [ R ( τ ) ] E[R(\tau)] E[R(τ)]

assign suitable credit:

给每一个动作合适的分数(credit)。
EasyRL 强化学习笔记 3、4章节(表格型方法,策略梯度)_第17张图片

  1. 假设整场游戏的结果是好的, 并代表这个游戏里面每一个行为都是对的。若是整场游戏结果不好, 但不代表游戏里面的所有行为都是错的。
  2. 给不同action前乘上不同权重。每一个动作的不同权重, 它反映了每一个动作到底是好还是不好。
  3. 做法:计算这个对的奖励的时候,不把整场游戏得到的奖励全部加起来,只计算从这一个动作执行以后所得到的奖励,并且加上Discounted Return。( γ = 0 \gamma=0 γ=0:只关心即时奖励; γ = 1 \gamma=1 γ=1:未来奖励和即时奖励一样)

Advantage function:

相当于综合上述tips
EasyRL 强化学习笔记 3、4章节(表格型方法,策略梯度)_第18张图片

  1. R − b R-b Rb可以称作优势函数(advantage function),含义是:在 s t s_t st执行 a t a_t at,相对于其他动作,有多好,相对优势(relative advantage)
  2. 可以通过network estimate算出来,这个network称为critic。

REINFORCE: Monte Carlo Policy Gradient

  • MC :算法完成一个回合之后,再拿这个回合的数据来去 learn 一下,做一次更新。
  • 一整个episode下来,能够计算每个步骤的未来总收益 G t G_t Gt
  • 区:时序差分TD 每个步骤都更新一下,使用Q-function近似表示未来总收益。
    EasyRL 强化学习笔记 3、4章节(表格型方法,策略梯度)_第19张图片
    REINFORCE:(基于策略梯度的强化学习的经典算法)
  1. 采用回合更新。
  2. 先拿到每个步骤的奖励,然后计算每个步骤的未来总收益 G t G_t Gt,代入公式,优化每个动作的输出。

自己的思考:

  1. model-free 和 model-based:二者区别在于是否知道“状态转移概率”,model-free不知道,只能在真实环境中等待。model-based可以通过建立environment。
  2. MDP和强化学习的关系,强化学习都要建模为MDP吗?MDP代表的是一类过程,RL是一个算法;是的,都要这样建模哦。
  3. IRS有没有不用强化学习的方法解决的呢? 目前都是哦
  4. 关于马尔科夫性质的理解?
  • 马尔科夫性:某一个过程未来的转移跟过去是无关,只由现在的状态决定。 意思就是说 S t + 1 S_{t+1} St+1仅与 S t S_{t} St有关,与 S t − 1 S_{t-1} St1…都无关。可是, S t S_{t} St S t − 1 S_{t-1} St1是有关的呀, S t − 1 S_{t-1} St1又和 S t − 2 S_{t-2} St2有关。那这样的话,KaTeX parse error: Expected '}', got 'EOF' at end of input: S_{t+1就与历史状态都有关了啊?
  • A:马尔科夫性指的是“转移概率”: P ( s t ∣ s t − 1 ) P(s_t|s_{t-1}) P(stst1)。当前的状态是与历史状态有关的,不过要得到当前状态 s t s_t st,只需要知道 s t − 1 s_{t-1} st1就够了。(状态转移概率具有马尔科夫性:系统下一时刻的状态仅由当前时刻的状态决定,不依赖于以往任何状态)
  1. MDP与RL的关系?
    A: MDP描述的是一个过程(process)RL是一个算法。目前来说,RL问题都会建模为MDP。
    在这里插入图片描述
  2. model-free与model-based:model-based 相当于对环境转移概率的建模(比如常见的environment simulator);例子:① model-free 比如我用Q-learning的思想,我只能估计你在状态S的预估值 V ( S ) V(S) V(S)是多少,但我不知道我给了一个动作 a a a后,环境会怎么变动。我们给一个动作 a a a后,我们要等,要等!环境给出一个真实的 S ′ S' S后,我们才能估计下一步 V ( S ′ ) V(S') V(S) ② model-based,我们建模了环境,特指:我们想象,在环境 S S S下,当我们做出动作 a a a后,它会(以多大概率)转移到状态 S 1 S_1 S1, S 2 S_2 S2, S 3 S_3 S3,我们在S1,2,3处都有 V ( S 1 ) V(S_1) V(S1), V ( S 2 ) V(S_2) V(S2), V ( S 3 ) V(S_3) V(S3),。于是这可以帮助我们更好的决策要不要做动作 a a a。(模拟出用户、生成用户的,都能叫model-based)

你可能感兴趣的:(强化学习,学习笔记,强化学习)