强化学习-->Deep Reinforcement Learning

时间:2022-09-12 13:21:05

因为逐渐有人将强化学习应用到 NLP 的任务上,有必要了解一些强化学习基础知识,本篇博文总结自台大教授李宏毅关于深度学习的公开课内容。

强化学习-->Deep Reinforcement Learning

我们可以以上图来理解强化学习过程,我们机器人 agent 通过 observation 了解到环境的 State ,采取一些 Action ,并且改变当前的环境,然后环境会反馈正向或负向的 reward agent

举例来说,让机器人玩电玩游戏:

强化学习-->Deep Reinforcement Learning

上图中 agent 每次动作以后都可能随机的改变了环境,并且接受到一个 reward ,由此观察改变后的环境,做出相应的动作。

强化学习-->Deep Reinforcement Learning

我们希望 agent 多玩几个回合,并且希望在每个回合中最大化的 total reward  

强化学习难点:

  • Reward delay
    例如上面所举得例子里,只有在开火时,才能获得 Reward agent 学习的最后结果是会疯狂的开火,往左移或往右移,他觉得无所必要,但实际上移动对最后的 total Reward 至关重要。还比如在下围棋时,短期的牺牲可能或换来最后的胜利。

  • agent 的行为,也即是 action 会影响后续他看到的环境。

Asynchronous Advantage Actor-Critic (A3C)

强化学习-->Deep Reinforcement Learning

Policy-based Approach(Learning an Actor)

强化学习-->Deep Reinforcement Learning

如果我们把 neural network 当做上面所讲的 actor ,那么:

  • 模型的输入:即其观察到的环境(向量、矩阵等)
  • 模型的输出:每一类动作在最后一层以一个神经元表示,对应其输出的概率

强化学习-->Deep Reinforcement Learning

需要注意的是:在做 policy gredient 时,是 stochastic 式的,也就是说其 output 是一个机率,我们是一定的概率选取该动作,而不是一定选取。

那么如何决定这个 action 的好坏呢?

我们假定 actor 的模型为 πθ(s) ,这个 s 就是 agent 所看到的环境, θ 表示神经网络的参数。

我们拿这个 actor 实际上去玩这个游戏:

强化学习-->Deep Reinforcement Learning

如上图所示: agent 玩完一个回合 后,可以得到一个 total Reward ,而由上面的描述可知,这个 total reward 才是我们需要 maximize 对象。

因为游戏的随机性,即使每个回合都采用一样的 actor ,在这里就是 agent 模型一样,不同回合得到的 Rθ 很有可能不一样,我们记: R¯θ 为该 actor 的期望值,即使不同的回合,该 actor 的期望值是相同的,这个期望值就衡量了 actor 的好坏,好的期望值这个 actor 就比较好。

那么这个期望值 Rθ 如何得到呢?

假设一轮游戏所有经过表示为 τ ,则:

  • τ={s1,α1,r1,s2,α2,r2,s3,α3,r3,...,sT,αT,rT}
  • R(τ)=Tn=1rn
  • 某一种 τ 出现的概率与 actor (模型)有关,即该 τ 过程出现的概率为 P(τ|θ)

由上面的分析可知,某一个 actor 一轮回合下来得到的 reward 的期望值:

R¯θ=τR(τ)p(τ|θ)

但是我们无法遍历所有的 τ ,故只能采取抽样的方式,我们让这个 actor N 场游戏,获得 N 个不同的游戏过程,即 {τ1,τ2,....,τN} ,可以理解为从 p(τ|θ) sample N 次。即:

R¯θ=τR(τ)p(τ|θ)1Nn=1NR(τn)

那么现在已经找到了 R¯θ ,我们希望找到了一个 θ ,能 maxθR¯θ ,也就是 θ=argmaxθR¯θ ,我们可以利用 Gradient ascent 来不断逼近:

  • start with θ0
  • θ1θ0+ηR¯θ0
  • θ2θ1+ηR¯θ1
  • ………

那么 R¯θ 怎么求呢?

强化学习-->Deep Reinforcement Learning

可以实际的推导一下 R¯θ

强化学习-->Deep Reinforcement Learning

其中:

强化学习-->Deep Reinforcement Learning

强化学习-->Deep Reinforcement Learning

则:

强化学习-->Deep Reinforcement Learning

可以直观的理解上面 R¯θ 结果:

  • R(τn) )(注意这里是一个回合的 reward ) 为正的时候,我们希望调整 θ ,增大 p(αnt|snt) ,使其在时间 t 更大可能选择 αnt
  • R(τn) 为正的时候,我们希望调整 θ ,减小 p(αnt|snt) ,使其在时间 t 更小可能选择 αnt

上面的求 R¯θ 过程就是 policy Gradient

Critic

给定一个 actor π ,用 Critic 来衡量 actor 好或者不好,记做 Vπ(s) ,这里 s 就是当前的环境状态。 Vπ(s) 就是当观察到 s 后,到一轮游戏结束,我们所能得到的 reward 的期望值有多大。以此来更新 actor (即其中的参数)

强化学习-->Deep Reinforcement Learning

那么如何得到 Vπ(s) 呢?

Monte-Carlo

critic 观察 π 玩游戏,举例来说:

  • 当看到环境 sa 后,直到一轮回合结束,所积累的 reward Ga ,那么 Vpi(sa)=Ga
  • 当看到环境 sb 后,直到一轮回合结束,所积累的 reward Gb ,那么 Vpi(sb)=Gb

Temporal-Difference

强化学习-->Deep Reinforcement Learning

MC VS TD

强化学习-->Deep Reinforcement Learning

不同的方法,其 Vπ(s) 值不一样,选哪个方法视具体情况而言。

Actor-Critic

强化学习-->Deep Reinforcement Learning

我们在上面讲到了 actor 与环境互动时,会得到一个 reward 的反馈,如上面在求 R¯θ 时:

强化学习-->Deep Reinforcement Learning

如上图所示,可以直接把 R(/taun) 看做 critic

Advantage Actor-Critic

对于 actor π(s) critic Vπ(s) 可以共享一些参数,如下图所示:

强化学习-->Deep Reinforcement Learning