强化学习RL总结篇(李宏毅老师2020强化学习1-5)

李宏毅老师2020强化学习——总结篇(1-5)

李宏毅老师2020强化学习课程(课件)主页:
http://speech.ee.ntu.edu.tw/~tlkagk/courses_MLDS18.html
其中的Deep Reinforcement Learning部分
视频链接地址:
https://www.bilibili.com/video/BV1UE411G78S


注!!!:本总结篇仅供大家快速了解这门课,每一篇都会是笔者听后总结,这门强化学习的课程无论是数学原理还是方法讲的都非常清晰!强烈建议详细学习的读者还是请自行一一观看学习。

以下顺序均严格参照视频顺序,无缺无改

1 Scratching the surface

1.1 Scenario of RL

Agent + Environment,Agent会通过观察Environment得到Observation(State),并做出一个Action,Environment会根据Action返给Agent一个Reward,上述将会是一个连续的过程。

1.2 Difficulties

Reward delay 比如在飞行射击游戏中,只有”开火“杀掉敌人才得分,那很有可能RL只学到不断开火,而忽视了左右移动对开火得分的重要性。虽然这些左右移动action不会得到任何得分,但是它可以帮助模型在未来取得更高的分数。

Agent’s actions affect the subsequent,Agent的行为会影响它之后看到的东西。所以Agent要学会Exploration探索没做过的行为

1.3 Outline

跳过马尔科夫决策过程(Markov Decision Process,MDP)和Deep Q-Learning,将直接进入A3C的讲解。

有两种方法:

  1. Value-based : Learning a Critic
  2. Policy-based :Learning an Actor
  3. A3c: Actor + Critic

1.4 Policy-based

首先,有这样的概念
Observation = Function input
Action = Function output
Reward来找出最好的fuction

其次有这样三个步骤

  1. 用Neural network 作为 Actor,输入当前的observation,输出就是当前可以采取的action(可以是多分类,以几率采取action)
  2. 决定一个function的好坏。也就是决定一个Actor的好坏。如果仅用当前的function去玩完整个游戏得到的Reward作为评估,这样会有很大的随机性,因为我们采取action就是几率采取,且游戏本身就有随机性,故我们用期望值作为评估。用function去玩n场游戏,用Reward的均值去近似期望值
  3. 选一个最好的function。用Gradint Ascent梯度上升找到可以得到最好Reward的function

这里的数学公式讲解请参见原视频,公式讲的非常清晰

2 Policy Gradient

由有监督的多分类类比到强化学习的”损失函数“,并通过reward来作为权重切分数据集。

3 Learning to Interact with Environments

让机器和环境做互动,机器所采取的行为会影响未来发生的事请,会影响接下来的Input

Observation:原本的外界信息
State:Observation的摘要

3.1 Reinforcement Learning

Actor、Env、Reward的意义

Trajectory = { s 1 , a 1 , s 2 , a 2 , . . . , s T , a T } \{s_1,a_1,s_2,a_2,...,s_T,a_T\} {s1,a1,s2,a2,...,sT,aT}

R = ∑ t = 1 T r t R = \sum_{t=1}^T{r_t} R=t=1Trt

3.1.1 Actor

Input: pixels
Output: action
Self: Neural network

如果发现不能微分,就用policy gradient 硬train一发

3.1.2 Critic

State value function V π ( s ) V^{\pi}(s) Vπ(s):给出一个actor π \pi π,在这个前提下看到一个state s,接下来一直到游戏结束所能获得的reward的总和的期望值。

How to estimate V π ( s ) V^{\pi}(s) Vπ(s)
Monte-Carlo based approach

Monte-Carlo based approach 蒙特卡洛法,相当于看着actor π \pi π玩游戏。

通俗而言就是,在actor π \pi π 的基础上,如果看到 s t a t e a state_a statea可以计算得到统计的reward值为 G a G_a Ga,目标就是根据 s t a t e a state_a statea预测reward值的回归预测,希望这个预测值和统计值 G a G_a Ga越接近越好。

Temporal-difference approach

Temporal-difference approach,通过预测 s t 和 s t + 1 s_t和s_{t+1} stst+1 V π ( s ) V^{\pi}(s) Vπ(s),虽然并不知道这个 V π ( s ) V^{\pi}(s) Vπ(s)具体是多少,但是知道两者之差是 r t + 1 r_{t+1} rt+1,期望两者差异越接近 r t + 1 r_{t+1} rt+1越好

对于这样的一段
. . . , s t , a t , r t , s t + 1 ...,s_t,a_t,r_t,s_{t+1} ...,st,at,rt,st+1

V π ( s t ) = V π ( s t + 1 ) + r t V^{\pi}(s_t) = V^{\pi}(s_{t+1}) + r_t Vπ(st)=Vπ(st+1)+rt

这样就可以一边玩一边优化参数了

Another Critic

State value function Q π ( s , a ) Q^{\pi}(s,a) Qπ(s,a):在给出actor π \pi π的基础上,在看到observation s 和 采取action a之后能获得的Reward

可以用function Q π ( s , a ) Q^{\pi}(s,a) Qπ(s,a) 找出一个比较好的Actor,这一招就叫Q-Learning

π ′ ( s ) = a r g m a x a Q π ( s , a ) \pi'(s) = argmax_{a}Q^{\pi}(s,a) π(s)=argmaxaQπ(s,a)

DQN

DQN的tip:见论文Rainbow,七种方法

3.1.3 Actor + Critic

Actor-Critic : Actor不再跟环境的Reward学,因为环境Reward的随机性和变化太大,只跟Critic学。这个方法就叫 Actor-Critic。

其中效果比较好的一种就叫 Advantage Actor-Critic,这也就是A3C中前两个A

第三个A就是Asynchronous:类似于分布式训练
在这里插入图片描述

Pathwise Derivative Policy Gradient

当action a无法穷举时,可以考虑训练一个Actor,给它一个state s,输出的a就是让function Q π ( s , a ) Q^{\pi}(s,a) Qπ(s,a)的值最大的a

3.2 Inverse Reinforcement Learning

Inverse Reinforcement Learning 是 Imitation Learning的一种,只有Env和Actor,没有Reward。有的是 τ 1 ^ , τ 2 ^ , . . . . , τ N ^ {\hat{\tau_1},\hat{\tau_2},....,\hat{\tau_N}} τ1^,τ2^,....,τN^,如果是游戏这个就是”一个专家“把这个游戏玩了N遍得到的。

这种技术就是为了解决现实场景中没有Reward的任务。

原则:老师永远是对的

通俗而言(本质):
 1有个Expert π ^ \hat{\pi} π^它有N笔游戏记录 τ 1 ^ , τ 2 ^ , . . . . , τ N ^ {\hat{\tau_1},\hat{\tau_2},....,\hat{\tau_N}} τ1^,τ2^,....,τN^
 2初始化一个actor π \pi π,它也有N笔游戏记录 τ 1 , τ 2 , . . . . , τ N {{\tau_1},{\tau_2},....,{\tau_N}} τ1,τ2,....,τN
 3定义一个Reward Function,让Expert的N笔游戏记录永远赢过actor
 4让actor去学,使得根据当前这个Reward Function,可以得到最好的分数
 5当actor做的比较好之后,这个Reward Function又变了,但Expert分数永远大于actor分数
 重复上述过程3、4、5

这个过程其实和GAN是一模一样的。

4 Proximal Policy Optimization(PPO)

defalut reinforcement learning algorithm at OpenAI

Policy Gradient的进阶版:PPO

4.1 Policy Gradient

Basic Components: Actor + Env + Reward Function
其中Env、Reward是不能被控制,是事先给定的;能调的只有Actor

Policy π \pi π 就是带有参数 θ \theta θ 的神经网络,它的输入是机器现在看到的东西通常用vector或matrix代替即observation,输出就是当前机器要采取什么行为,actor。

4.1.1 p θ ( τ ) p_{\theta}(\tau) pθ(τ)

在这里插入图片描述
上式 p θ ( a t ∣ s t ) p_{\theta}(a_t|s_t) pθ(atst)代表的就是Actor,会取决于Policy π \pi π 就是带有参数 θ \theta θ 的神经网络,是我们能够控制的;
p ( s t + 1 ∣ s t , a t ) p(s_{t+1}|s_t,a_t) p(st+1st,at)代表的就是Env,是我们无法控制的,通常是写定好的规则等

4.1.2 R τ ‾ \overline{R_{\tau}} Rτ

在这里插入图片描述
上图的Actor和Reward都是带有概率的,因此往往用 R ( τ ) R(\tau) R(τ)的期望值 R τ ‾ \overline{R_{\tau}} Rτ代替 R ( τ ) R(\tau) R(τ),这个期望就是穷举所有的Trajectory τ \tau τ,并对每个 τ \tau τ出现的几率乘以获得的Reward作为这个 τ \tau τ R ( τ ) R(\tau) R(τ)

4.1.3 Policy Gradient

而我们要做的就是最大化 R τ ‾ \overline{R_{\tau}} Rτ,该怎么做呢?用Policy Gradient
在这里插入图片描述
上图的数学推导式并不困难,请仔细心中推导一遍。结合这里的 p θ ( τ ) p_{\theta}(\tau) pθ(τ)就是4.1.1讲过的,在 p θ ( τ ) p_{\theta}(\tau) pθ(τ) p ( s t + 1 ∣ s t , a t ) p(s_{t+1}|s_t,a_t) p(st+1st,at)是不可微的,当成常量即可,故仅剩 p ( a t n ∣ s t n ) p(a_t^n|s_t^n) p(atnstn)

也就是说,如果在Sample的样本中,在 s t i − > a t i s_t^i->a_t^i sti>ati的情况下过的的 R ( τ ) R(\tau) R(τ)是正的,就要增大 s t i − > a t i s_t^i->a_t^i sti>ati出现的几率;反之如果 R ( τ ) R(\tau) R(τ)是负的,就要减小 s t i − > a t i s_t^i->a_t^i sti>ati出现的几率

在这里插入图片描述
在实作中,就是通过上图右侧的公式进行模型训练,不过需要先收集左侧的数据才能进行右侧公式的参数更新。在参数更新可以获得更好的Reward时,再更新模型,此时又要收集左侧新情况的数据,再进行右侧的更新,重复这个过程。

上述过程可以被简化为下图
在这里插入图片描述
假如我们实作目标的Action就是left、right、fire,那么对于state s t n s_{t}^n stn可以训练一个三分类器。假设我们Sample的数据中有在state s t n s_{t}^n stn出现的情况下fire的数据,那么就希望这个分类器可以在输入 s t n s_{t}^n stn的情况预测fire。与普通的分类任务不同的是,还要考虑 R ( τ n ) R(\tau^n) R(τn) s t n , a t n s_{t}^n,a_t^n stnatn的情况下整场游戏的Reward作为分类器的权重。

下述tip都是为了解决Sample次数不够多,不足以代替整体时实际用到的技巧。

tip1: Add a Baseline

∂ R ‾ θ ≈ 1 N ∑ n = 1 N ∑ t = 1 T n ( R ( τ n ) − b ) ∗ ∂ log ⁡ p θ ( a t n ∣ s t n ) \partial \overline{R}_{\theta} \approx \frac{1}{N}\sum_{n=1}^N\sum_{t=1}^{T_n}(R(\tau^{n})-b) * \partial \log p_{\theta}(a_{t}^n|s_t^n) RθN1n=1Nt=1Tn(R(τn)b)logpθ(atnstn)

其中b就叫做baseline,通过不断计算 R ( τ ) R(\tau) R(τ)的平均值当作b来用,这样就能保证代表Reward的部分是有正有负的
b ≈ E [ R ( τ ) ] b \approx E[R(\tau)] bE[R(τ)]

tip2:Assign Suitable Credit

在这里插入图片描述

将每个 ( s , a ) (s,a) (s,a)的情况下获得Reward R ( τ n ) R(\tau^n) R(τn)不再是整场游戏的Reward,而是在 ( s , a ) (s,a) (s,a)之后到游戏结束获得的Reward

更进一步,把比较未来的做discount,因为在实际情况下时间拖得越长,影响力就越小。故还可以将上述Reward再考虑时间
在这里插入图片描述
其中 γ < 1 \gamma<1 γ<1,如果这个 t ′ t' t是越之后的timestamp,它前面就乘上越多次的 γ \gamma γ

通俗而言,比如我们在第一、二、三、四回合依次获得了1,2,3,4分。
那么在第二回合到结束的Reward就是 2 ∗ γ ( 2 − 2 ) + 3 ∗ γ ( 3 − 2 ) + 4 ∗ γ ( 4 − 2 ) 2 * \gamma^{(2-2)} + 3 * \gamma^{(3-2)} + 4 * \gamma^{(4-2)} 2γ(22)+3γ(32)+4γ(42)
影响力衰减,虽然第二回合的Reward是之后所有Reward的总和,但是离它越远跟它的关系就越小。

在这里插入图片描述
这就是Advantage Function,它表示了假设我们在某一个state s t s_t st执行某一个action a t a_t at相较于其他可能的action,它有多好,是一种相对的好。

这个 a t a_t at可以是被critic神经网络得到。

5 From on-policy to off-policy

上述讲的都是on-policy 的,其实还有一种更实际的方法off-policy
在这里插入图片描述
Off-policy的方法是希望我们能通过来自 θ ′ \theta' θ的样本去训练 θ \theta θ。在此引入一个重要的概念:Importance Sampling,它的要求就是

E x   p [ f ( x ) ] = E x   p [ f ( x ) p ( x ) q ( x ) ] E_{x~p}[f(x)] = E_{x~p}[f(x)\frac{p(x)}{q(x)}] Ex p[f(x)]=Ex p[f(x)q(x)p(x)]

在这里插入图片描述
在满足这个基础上,就可以用 θ ′ \theta' θ的样本去训练 θ \theta θ,其目标函数的变化如下
在这里插入图片描述

PPO和TRPO的区别在于,TRPO将 K L ( θ , θ ′ ) KL(\theta,\theta') KL(θ,θ)作为限制进行训练,而PPO是将 K L ( θ , θ ′ ) KL(\theta,\theta') KL(θ,θ)加入到目标函数进行训练,PPO的训练更简单。

这里的KL表示同一个state时两个参数下action的distribution的差异,不是参数上的距离,而是action上的距离。
在这里插入图片描述

PPO算法如下
在这里插入图片描述

第二种PPO的算法相当于设置了上下限: 1 − ϵ 到 1 + ϵ 1-\epsilon到1+\epsilon 1ϵ1+ϵ,在A期望函数是正值时,我们是希望 P θ ( a t ∣ s t ) P_{\theta}(a_t|s_t) Pθ(atst)出现的几率越大越好,但是也不能太大,因为我们是有前提假设的,那就是 θ 和 θ k \theta和\theta_{k} θθk的行为差异差太多。因此当 P θ ( a t ∣ s t ) P_{\theta}(a_t|s_t) Pθ(atst)已经增长到 1 + ϵ 1+\epsilon 1+ϵ倍的 P θ k ( a t ∣ s t ) P_{\theta^k}(a_t|s_t) Pθk(atst)时就不能再增长了。同理,在A为负值时, P θ ( a t ∣ s t ) P_{\theta}(a_t|s_t) Pθ(atst)也不能减小到 1 − ϵ 1-\epsilon 1ϵ倍的 P θ k ( a t ∣ s t ) P_{\theta^k}(a_t|s_t) Pθk(atst)
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿芒Aris

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值