ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

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

2021-06-17 16:52:40  阅读:298  来源: 互联网

标签:tau pi 李宏毅 Actor 2020 Policy theta 强化 Reward


李宏毅老师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=1T​rt​

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} st​和st+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)=argmaxa​Qπ(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θ​(at​∣st​)代表的就是Actor,会取决于Policy π \pi π 就是带有参数 θ \theta θ 的神经网络,是我们能够控制的;
而 p ( s t + 1 ∣ s t , a t ) p(s_{t+1}|s_t,a_t) p(st+1​∣st​,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+1​∣st​,at​)是不可微的,当成常量即可,故仅剩 p ( a t n ∣ s t n ) p(a_t^n|s_t^n) p(atn​∣stn​)

也就是说,如果在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 stn​,atn​的情况下整场游戏的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θ​≈N1​n=1∑N​t=1∑Tn​​(R(τn)−b)∗∂logpθ​(atn​∣stn​)

其中b就叫做baseline,通过不断计算 R ( τ ) R(\tau) R(τ)的平均值当作b来用,这样就能保证代表Reward的部分是有正有负的
b ≈ E [ R ( τ ) ] b \approx E[R(\tau)] b≈E[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∗γ(2−2)+3∗γ(3−2)+4∗γ(4−2)
影响力衰减,虽然第二回合的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θ​(at​∣st​)出现的几率越大越好,但是也不能太大,因为我们是有前提假设的,那就是 θ 和 θ k \theta和\theta_{k} θ和θk​的行为差异差太多。因此当 P θ ( a t ∣ s t ) P_{\theta}(a_t|s_t) Pθ​(at​∣st​)已经增长到 1 + ϵ 1+\epsilon 1+ϵ倍的 P θ k ( a t ∣ s t ) P_{\theta^k}(a_t|s_t) Pθk​(at​∣st​)时就不能再增长了。同理,在A为负值时, P θ ( a t ∣ s t ) P_{\theta}(a_t|s_t) Pθ​(at​∣st​)也不能减小到 1 − ϵ 1-\epsilon 1−ϵ倍的 P θ k ( a t ∣ s t ) P_{\theta^k}(a_t|s_t) Pθk​(at​∣st​)
在这里插入图片描述

 

标签:tau,pi,李宏毅,Actor,2020,Policy,theta,强化,Reward
来源: https://blog.51cto.com/u_15273918/2917728

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有