当前位置:   article > 正文

强化学习笔记

强化学习笔记

概述

AI = RL + DL

强化学习的任务就是寻找function(observation), 使得reward最大;
在这里插入图片描述

场景1:围棋博弈
此种场景机器学习的难点是,大多数的action reward 是0;而只有少数的action是有reward的。那机器如何寻找最优action呢?机器采取的方式是通过调整决定action选择的function,使得reward期望max;

对于该场景,监督学习与强化学习处理的区别如下:

  • 监督学习
    1. learn from teacher,根据盘势选择落子位置;这样的特点限定了监督学习的应用范围,因为在有些场景即使teacher也很难给出最优的action,使得监督学习难以为继;或者说agent的水平上限也就是teacher的水平;
  • 强化学习
    1. agent与各种对手下围棋。在和某个对手对弈多轮后,最终结果或胜或负。此时agent根据结果来加强或调整action,某些下法是好的,而有些下法是不好的。从而提升对弈的能力。但是每场对弈中具体那些action是好的,那些action是坏的,没有监督信息,只能靠agent想办法推测。
    2. 要实现agent根据结果自己推测那些action是好或者坏,只能通过堆数据让agent从中找到蛛丝马迹,因此通常需要对弈上千万盘后,agent才能训得一个不错的能力;
    3. 如果人工对弈上千万盘显然是不可能的,因此通常是让机器与机器对弈,自动化的训练模型。但通常会让监督数据训练一个初步的版本,然后进入强化学习阶段进行自动化训练。

场景2: chat-bot
让两个robot对话训练聊天技能,但是如何评价他们的聊天水平呢?是否类人呢?不同于围棋的是,围棋有明确的规则判断输赢。对于聊天评价方式有两种,一种是通过人类设定的规则来打分;另外一种是通过GAN的方式打分评价;

综述,强化学习适合人类都不知道最优解的任务,比如围棋,游戏等;

强化学习的难点:

  1. reward delay:有些步骤不得分,但是很关键;比如下棋吃子和没有吃子的步骤,并不能说明吃子得分的步骤就是好的。存在牺牲眼前,争取长期利益的情形。
  2. exploration:action会影响接下来环境的state,因此action的探索能力如何训练。

强化学习的代表性方法:

  1. Learning an Actor: 得到一个做事情的actor;
  2. learning a critic: 得到一个评价做事情效果的critic;
  3. actor+critic: 则是综合二者;

A3C(Asynchronous Advantage Actor Critic):是一种值函数为中心和以策略为中心算法的结合体,它合并了以值函数为基础 (比如 Q learning) 和 以动作概率为基础 (比如 Policy Gradients) 的两类强化学习算法。需要注意这里的策略一般指的都是随机策略。

learing an actor

见图1,此处的actor(policy)就是透过reward找到一个function实现state到action的最优映射。

  1. function(actor) 的定义,比如neural network,输入environment state, 输出对应与输出层每个神经元的action,基于概率最大,选择目标action;此处为何不用查找表来映射呢?因为输入的图像image是穷举不完的,会导致查找表爆炸!

  2. 如何判决function的优劣:使actor π θ ( s ) \pi_{\theta}(s) πθ(s)进行一轮推理,得到总的reward R θ = ∑ t = 1 T r t R_{\theta} = \sum_{t = 1}^{T}r_t Rθ=t=1Trt,这里有一个问题是每轮推理的环境和actor都有随机性存在,因此这个reward是会变化的。因此这里通过评价多轮奖励的期望 R ˉ θ \bar{R}_\theta Rˉθ来进行评价而不是评价某一轮的reward R θ R_\theta Rθ,来隔离概率的影响。 R ˉ θ = ∑ τ R ( τ ) P ( τ / θ ) \bar{R}_{\theta}= \sum_{\tau}R(\tau)P(\tau/\theta) Rˉθ=τR(τ)P(τ/θ),其中 θ \theta θ表示选定的某种actor, τ \tau τ表示actor执行一轮的trajectory。 P ( τ / θ ) P(\tau/\theta) P(τ/θ)表示actor执行 τ \tau τ轨迹的概率, R ( τ ) R(\tau) R(τ)表示执行trajectory τ \tau τ的奖励。使用 π θ \pi_\theta πθ玩N轮推理后获得 { τ 1 , τ 2 , . . . . . . , τ n } \{\tau^1, \tau^2, ......,\tau^n\} {τ1,τ2,......,τn},即可获取到reward的期望 R ˉ θ \bar{R}_{\theta} Rˉθ

  3. 如何选择最好的policy,即: θ ∗ = a r g m a x θ R ˉ θ \theta^{*}=arg max_{\theta} \bar{R}_{\theta} θ=argmaxθRˉθ
    $$\bar{R}\theta = \sum{\tau}R(\tau)P(\tau|\theta) \
    \triangle\bar{R}\theta = \sum{\tau}R(\tau)\triangle P(\tau|\theta) \
    = \sum_{\tau}R(\tau)P(\tau|\theta)\frac{\triangle P(\tau|\theta)}{P(\tau|\theta)} \
    = \sum_{\tau}R(\tau)P(\tau|\theta)\triangle logP(\tau|\theta) \Leftarrow \frac{dlog(f(x))}{dx} = \frac{1}{f(x)}\frac{df(x)}{dx}\
    = \frac{1}{N}\sum_{n=1}{N}R(\taun)\triangle logP(\tau^n|\theta)\$$
    采样N次trajectory后,轨迹出现的频次已经包含了概率信息,即 P ( τ n ∣ θ ) P(\tau^n|\theta) P(τnθ),因此该项可以从上述公式中移除。

接下来任务就变成了如何计算 △ l o g P ( τ n ∣ θ ) \triangle logP(\tau^n|\theta) logP(τnθ):
对于trajectory τ : { s 1 , a 1 , r 1 , s 2 , a 2 , r 2 , . . . . . . , s T , a T , r T } \tau: \{ s_1, a_1, r_1, s_2, a_2, r_2, ......, s_T, a_T, r_T \} τ:{s1,a1,r1,s2,a2,r2,......,sT,aT,rT}
P ( τ ∣ θ ) = p ( s 1 ) p ( a 1 ∣ s 1 , θ ) p ( r 1 , s 2 ∣ s 1 , a 1 ) p ( a 2 ∣ s 2 , θ ) p ( r 2 , s 3 ∣ s 2 , a 2 ) . . . . . . = p ( s 1 ) ∏ t = 1 τ p ( a t ∣ s t , θ ) p ( r t , s t + 1 ∣ s t , a t ) l o g P ( τ ∣ θ ) = l o g p ( s 1 ) + ∑ t = 1 T l o g p ( a t ∣ s t , θ ) + l o g p ( r t , s t + 1 ∣ s t , a t ) P(\tau|\theta) = p(s_1)p(a_1|s_1,\theta)p(r_1, s_2|s_1, a_1)p(a_2|s_2, \theta)p(r2,s_3|s_2,a_2)......\\ =p(s_1)\prod_{t=1}^{\tau}p(a_t|s_t, \theta)p(r_t,s_{t+1}|s_t, a_t)\\ logP(\tau|\theta) = logp(s_1) + \sum_{t=1}^{T}logp(a_t|s_t, \theta)+logp(r_t,s_{t+1}|s_t, a_t) P(τθ)=p(s1)p(a1s1,θ)p(r1,s2s1,a1)p(a2s2,θ)p(r2,s3s2,a2)......=p(s1)t=1τp(atst,θ)p(rt,st+1st,at)logP(τθ)=logp(s1)+t=1Tlogp(atst,θ)+logp(rt,st+1st,at)

△ l o g P ( τ ∣ θ ) = ∑ t = 1 T △ l o g p ( a t ∣ s t , θ ) \triangle logP(\tau|\theta) = \sum_{t=1}^{T}\triangle logp(a_t|s_t, \theta) logP(τθ)=t=1Tlogp(atst,θ)

△ R ˉ θ = 1 N ∑ n = 1 N R ( τ n ) △ l o g P ( τ n ∣ θ ) = 1 N ∑ n = 1 N R ( τ n ) ∑ t = 1 T △ l o g p ( a t ∣ s t , θ ) = 1 N ∑ n = 1 N ∑ t = 1 T R ( τ n ) △ l o g p ( a t ∣ s t , θ ) \triangle\bar{R}_\theta = \frac{1}{N}\sum_{n=1}^{N}R(\tau^n)\triangle logP(\tau^n|\theta)\\ =\frac{1}{N}\sum_{n=1}^{N}R(\tau^n)\sum_{t=1}^{T}\triangle logp(a_t|s_t, \theta)\\ =\frac{1}{N}\sum_{n=1}^{N}\sum_{t=1}^{T}R(\tau^n)\triangle logp(a_t|s_t, \theta) Rˉθ=N1n=1NR(τn)logP(τnθ)=N1n=1NR(τn)t=1Tlogp(atst,θ)=N1n=1Nt=1TR(τn)logp(atst,θ)
如何理解上式呢?

  1. 某个trajectory t a u tau tau的reward R ( τ ) R(\tau) R(τ)为正时,就调节actor/policy的 θ \theta θ,使由状态 s t s_t st 执行动作 a t a_t at的概率最大。
  2. 某个trajectory t a u tau tau的reward R ( τ ) R(\tau) R(τ)为负时,就调节actor/policy的 θ \theta θ,使由状态 s t s_t st 执行动作 a t a_t at的概率最小。

需要特别指出这里reward是整个trajectory的而不是某个action。如果是某个action就会导致仅得分的action概率最大,不得分的动作概率最小,就会导致下棋时以吃子为第一优先级,而忽略全盘的输赢,显然是不合理的。

第二个问题此处 △ l o g p ( a t ∣ s t , θ ) = △ P ( a t ∣ s t , θ ) P ( a t ∣ s t , θ ) \triangle logp(a_t|s_t,\theta)=\frac{\triangle P(a_t|s_t,\theta)}{P(a_t|s_t,\theta)} logp(atst,θ)=P(atst,θ)P(atst,θ)起到什么作用?
比如在多个trajectory中我们都经过了状态s,而在该s执行某一动作a时的奖励如下:
R 1 ( a ∣ s ) = 3 , R 2 ( b ∣ s ) = 1 , R 3 ( b ∣ s ) = 1 , R 4 ( b ∣ s ) = 1 , R 5 ( b ∣ s ) = 1 R_1(a|s) = 3,R_2(b|s) = 1,R_3(b|s) = 1,R_4(b|s) = 1,R_5(b|s) = 1 R1(as)=3,R2(bs)=1,R3(bs)=1,R4(bs)=1,R5(bs)=1。此时虽然trajectory 1的奖励比较高,但是出现的概率很低,而执行action b反而概率很高,此时actor反而学习到执行b action的 θ \theta θ能够得到max的期望reward。显然这并不是我们希望actor学习的效果,我们希望actor此时在状态s时执行action a。因此通过 P ( a t ∣ s t , θ ) P(a_t|s_t,\theta) P(atst,θ)做分母,就能抑制学习到的 θ \theta θ偏向那些低质量的高概率的action。

第三个问题reward总是正的,如上图第一行,每个备选action均被采样到,因为权重是相对的,可以正常分配权值。而对于第二行,如果此时reward比较高的action a没有采样到,此时因为reward是正的,就会不合理的提高b和c的概率,而抑制真正高reward a的概率,这显然是不想看到。如果我们的reward有正有负,那对于低质量的action因为对应的负reward,就会在学习时抑制采用此action的概率,从而为未采样的高质量action预留概率。这里通过引入bias来保证reward有正有负,则公式形式变为:
△ R ˉ θ = 1 N ∑ n = 1 N ∑ t = 1 T ( R ( τ n ) − b ) △ l o g p ( a t ∣ s t , θ ) \triangle\bar{R}_\theta =\frac{1}{N}\sum_{n=1}^{N}\sum_{t=1}^{T}(R(\tau^n) -b)\triangle logp(a_t|s_t, \theta) Rˉθ=N1n=1Nt=1T(R(τn)b)logp(atst,θ)

policy/actor与classification任务的联系与区别

首先观察policy学习的式子:
△ R ˉ θ = 1 N ∑ n = 1 N ∑ t = 1 T R ( τ n ) △ l o g p ( a t ∣ s t , θ ) \triangle\bar{R}_\theta =\frac{1}{N}\sum_{n=1}^{N}\sum_{t=1}^{T}R(\tau^n)\triangle logp(a_t|s_t, \theta) Rˉθ=N1n=1Nt=1TR(τn)logp(atst,θ)

观察两种任务后可以发现,当R=1时,policy的强化学习任务就变成分类任务。或者说policy是权值为R的加权分类任务。

training a critic

critic 不直接决定执行那个action,而是用来评价在给定状态s的情况下actor π \pi π的优劣,其数学表达:
V π ( s ) V^{\pi}(s) Vπ(s)
上式表示actor π \pi π从状态s开始,一直到整个episode结束。这一过程奖励累加和的期望。

如何估计 V π ( s ) V^{\pi}(s) Vπ(s)

  • MC(Monte Carlo):通过蒙特卡洛采样,比如给定状态 s a s_a sa,得到从 s a s_a sa开始到episode结束的累计奖励 G a G_a Ga;经过n轮这样的采样后,将s作为输入,G作为输出的监督,实现critic(V网络)的训练;
  • TD(Temporal Difference):MC方法需要episode结束后才能获取一组数据,显然这是一个耗时费力的方式。因此为了规避这个缺陷,就有了通过相邻帧的delta量来训练这个V function的idea;
    即对于序列 . . . 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

评论: r是存在随机性的,而G是multi-step R的累加,因此相比之前G的方差远大于R;此外,TD是监督的delta量,因此V function的绝对量可能不是特别准确。MC方法只有episode结束才能更新critic,而TD则每执行一步就可以更新critic。

上边介绍的critic函数的参数只有state,并没有考虑action a,因此下边介绍一种critic的变形 Q π ( s , a ) Q^\pi(s, a) Qπ(s,a)
对于actor π \pi π,给定状态 s s s并执行action a,得到episode结束的累计奖励 G G G的期望值;

critic 实践:Q learning

Q learning的任务:给定 Q π ( s , a ) Q^\pi(s, a) Qπ(s,a),找到更优的新actor π ′ \pi^{\prime} π,即 Q π ′ ( s , a ) > Q π ( s , a ) Q^{\pi^{\prime}}(s,a) > Q^{\pi}(s,a) Qπ(s,a)>Qπ(s,a)。则:
π ′ = a r g m a x a Q π ( s , a ) \pi^{\prime}=arg max_{a}Q^{\pi}(s,a) π=argmaxaQπ(s,a)
可以很直观的看出,对于离散的action空间,通过穷举方式可以找到actor π \pi π reward最到的action,那么新的actor π ′ \pi^{\prime} π就会在该state下执行获取最大reward的action。显然穷举法并不适用action为连续空间的任务,这个问题下文会给出来解决方法。

那么接下来寻找最优actor的问题就变成了寻找最优Q function问题。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/人工智能uu/article/detail/783262
推荐阅读
相关标签
  

闽ICP备14008679号