一文读懂 深度强化学习算法 A3C (Actor

  • 时间:
  • 浏览:1
  • 来源:幸运飞艇_幸运飞艇官方

  Policy Gradient

  这里讨论的是标准的 reinforcement learning framework,有有另另3个 agent 与 环境进行交互,而且 满足马尔科夫属性。

  

  过去有没能来很多算法有利于能 基于 value-function 进行的,随便说说 取得了很大的进展,而且 你你这一法律妙招有如下有另另3个 局限性:  

  首先,类式法律妙招的目标在于找到 deterministic policy,而且 最优的策略通常有利于能 stochastic 的,以特定的概率选取不同的 action;

  对于 A3C 算法感觉个人老是 一知半解,现将其梳理一下,记录在此,也给想学习的小伙伴有另另3个 参考。

  4. https://github.com/ikostrikov/pytorch-a3c

  

  

  

  第二项,不知道们了使得 log 函数 增加的方向;

  actor:优化你你这一 policy,使得其表现的没能好;

  

  让.我都都知道,DRL 算法大致可有利于 有利于 分为如下这有几次类别:Value Based and Policy Based,其经典算法分别为:Q-learning 和 Policy Gradient Method

  We can run several agents in parallel, each with its own copy of the environment, and use their samples as they arrive.

  你你这一以后 异步优势actor-critic 算法Asynchronous advantage actor-critic , 即:A3C)。

  

  让.我都都定义 objective function $J(\pi)$ 如下:

  

  为了清楚起见,让.我都都先定义你这一符号:

  

  这里让.我都都可能比较模糊,结束了了了英语 英语 我也是比较晕,这里的 groundtruth 是为什会么会得到的???

  

  

  

  1. Policy Gradient Theorem (策略梯度定理)

  让.我都都尝试最大化你你这一函数,没能,对应的 loss 以后你你这一 负函数:

  reference paper:policy-gradient-methods-for-reinforcement-learning-with-function-approximation (NIPS 60 0, MIT press)

  

  随便说说 这里是根据 sampling 到的样本,而且 计算有另另3个 V(s) 之间的误差,看这有另另3个 value function 之间的差距。

  而让.我都都估计的 V(s) 应该是收敛的,没能,根据上述式子,让.我都都可有利于 有利于 计算该 error:

  3. Regularizaiton with Policy Entropy : 

  让.我都都有利于能 关注的仅仅是怎么才能 才能 改善其质量就行了。可能让.我都都知道你你这一 function 的 gradient,就变的很 trivial (专门查了词典,你你这一是:琐碎的,微过高 道的,的意思,恩,不需要谢)。

  运行一次得到的 sample 可有利于 有利于 给让.我都都提供有另另3个 Q(s, a) 函数的 unbiased estimation。让.我都都知道,你你这一以后 ,让.我都都仅仅有利于能 知道 V(s) 就可有利于 有利于 计算 A(s, a)。

  2. Value Loss:

  

  而让.我都都所要学习的策略 $\pi$,以后关于 state s 的函数,返回所有 actions 的概率。

  简单来讲,以后:actor 执行动作,而且 critic 进行评价,说你你这一动作的选取是好是坏。

  3. https://www.youtube.com/watch?v=KHZVXao4qXs

  

  让.我都都可有利于 有利于 将 value function 和 action-value function 联合的进行预测。最终的网络框架如下:

  

  基于 python+Keras+gym 的code 实现,可有利于 有利于 参考你你这一 GitHub 链接:https://github.com/jaara/AI-blog/blob/master/CartPole-A3C.py

  这里可有利于 有利于 参考 Policy Gradient 的原始paper:Policy Gradient Methods for Reinforcement Learning with Function Approximation

  在每个时刻 $t \in {0, 1, 2, ... }$ 的情形,动作,奖励 分别记为:st, at, rt。而环境的动态价值形式可有利于 有利于 通过 情形转移概率(state transition probability)来刻画。

2017-12-25  16:29:19  

一文拿下 淬硬层 强化学习算法 A3C (Actor-Critic Algorithm)

  根据 Policy Gradient Theorem 让.我都都可有利于 有利于 得到该函数的 gradient:

  以上是  A3C 的算法累积,下面从 coding 的淬硬层 来看待你你这一算法:

  实际的执行过程中,让.我都都可有利于 有利于 按照你你这一 distribution 来选取动作,可能 直接选取 概率最大的那个 action

  

  其中 Xi 是 X 的所有可能的取值,Pi 是对应每有另另3个 value 出先的概率。期望就可有利于 有利于 看作是 value Xi 与 权重 Pi 的加权平均。

  

  N-step return has its drawbacks. It’s higher variance because the value depends on a chain of actions which can lead into many different states. This might endanger the convergence. 

  将这两项乘起来,让.我都都发现:likelihood of actions that are better than average is increased, and likelihood of actions worse than average is decreased

  让.我都都知道,agent 的目标是最大化所能得到的奖励(reward),让.我都都用 reward 的期望来表达你你这一。在概率分布 P 当中,value X 的期望是:

  2. Another benefit is that this approach needs much less memory, because we don’t need to store the samples.

  The n-step return has an advantage that changes in the approximated function get propagated much more quickly. Let’s say that the agent experienced a transition with unexpected reward. In 1-step return scenario, the value function would only change slowly one step backwards with each iteration. In n-step return however, the change is propagated n steps backwards each iteration, thus much quicker. 

  在这其中,最重要的是 loss function 的定义:

  fully deterministic policy [1, 0, 0, 0] 的 entropy 是 0 ; 而 totally uniform policy[0.25, 0.25, 0.25, 0.25]的 entropy 对于3个value的分布,值是最大的。

  ======================================================

  ======================================================

  所涉及到的大致流程,可有利于 有利于 归纳为:

  model.py

  让.我都都就对于minibatch 中所有样本进行平均,来扫一遍你你这一期望值。最终的 loss 可有利于 有利于 记为:

  此时,让.我都都可有利于 有利于 定义有另另3个 新的 function A(s, a) ,你你这一函数称为 优势函数(advantage function):

  这里有有另另3个 有点硬要的事情是: if we had a pool of values X, ratio of which was given by P, and we randomly picked a number of these, we would expect the mean of them to be . And the mean would get closer to  as the number of samples rise. 

  让.我都都首先简要介绍你这一背景知识(Background):

  the truth value function V(s) 应该是满足 Bellman Equation 的:

  让.我都都发现你你这一函数的确很好的表达了,有另另3个 policy 有多好。而且 问题图片图片是没能估计,喜报是:we don't have to。

  

  这里,让.我都都有有另另3个 东西有利于能 优化,即: actor 以及 critic。

  

  下面分别对这有另另3个 累积进行介绍:

  为什会么会会要加你你这一项呢?让.我都都不需要在 agent 与 environment 进行互动的过程中,平衡 探索和利用,让.我都都想去以一定的几率来尝试你这一的 action,从而不至于采样得到的样本太过于集中。没能来很多,引入你你这一 entropy,来使得输出的分布,有利于更加的平衡。举个例子:

  

  第一项,是优势函数,即:选取该 action 的优势,当低于 average value 的以后 ,该项为 negative,当比 average 要好的以后 ,该项为 positive;是有另另3个 标量(scalar);

  

  Fortunately, running an episode with a policy π yields samples distributed exactly as we need. States encountered and actions taken are indeed an unbiased sample from the  and π(s) distributions. That’s great news. We can simply let our agent run in the environment and record the (s, a, r, s’) samples. When we gather enough of them, we use the formula above to find a good approximation of the gradient . We can then use any of the existing techniques based on gradient descend to improve our policy.

  

  此外,还有 action value function Q(s, a),你你这一和 value function 是息息相关的,即:

  让.我都都将 A(s,a) 看做是有另另3个 constant,而且 重新将上述函数改写为如下的形式:

  可能是 David Silver 的 YouTube 课程:https://www.youtube.com/watch?v=KHZVXao4qXs

  Advantages:

1. Better convergence properties (更好的收敛属性)

2. Effective in high-dimensional or continuous action spaces(在高维度和连续动作空间更加有效)

3. Can learn stochastic policies(可有利于 有利于 Stochastic 的策略)

  Disadvantages: 1. Typically converge to a local rather than global optimum(通常得到的有利于能 局部最优解)

  而且 ,为了得到更好的 policy,让.我都都有利于能 进行更新。没能,怎么才能 才能 来优化你你这一问题图片图片呢?让.我都都有利于能 你这一度量(metric)来衡量 policy 的好坏。

  而本文所涉及的 A3C 算法则是结合 Policy 和 Value Function 的产物,其中,基于 Policy 的法律妙招,其优缺点总结如下:

   ====>>   未完,待续 。。。

  通常让.我都都计算的 Q(s, a), V(s) or A(s, a) 函数的以后 ,让.我都都以后计算了 1-step 的 return。

  critic:尝试估计 value function,使其更加准确;

  1. Policy Loss:

  Parallel agents

    Policy Gradient Method 目标函数梯度的计算过程: 

  让.我都都为了使得输出的分布更加均衡,没能来很多要最大化你你这一 entropy,没能以后 minimize 你你这一 负的 entropy。

  ======================================================

  

  

  

  

  

  在你你这一情形下,让.我都都利用的是从 sample (s0, a0, r0, s1)获得的 即刻奖励(immediate return),而且 该函数下一步预测 value 给让.我都都提供了有另另3个 估计 approximation。而且 ,让.我都都可有利于 有利于 利用更多的步骤来提供另外有另另3个 估计:

  1. https://github.com/jaara/AI-blog/blob/master/CartPole-A3C.py

  可能上述公式是成立的,没能,$\theta$ 通常都可有利于 有利于 保证可有利于 有利于 收敛到局部最优策略。而你你这一文章就提供了上述梯度的有另另3个 无偏估计,这是利用 有另另3个 估计的满足特定属性的 value function,从 experience 中进行估计。

  main.py

  不需要认识清楚你你这一算法,有利于能 对 DRL 的算法有比较深刻的了解,推荐让.我都都先了解下 Deep Q-learning 和 Policy Gradient 算法。

  这里随便说说 从 目标函数 到你你这一梯度的变换,有点硬老是 ,让.我都都先跳过你你这一过程,就假设可能是原先子了。上方,我再给出比较完正的推导过程。

  

  

  

  

  你你这一是:通过策略 $\pi$ 平均所有起始情形所得到的总的 reward(total reward an agent can achieve under policy $\pi$ averaged over all starting states)。

  train.py 

  ======================================================

  本文将继续以 Pytorch 框架为基础,从代码层次上来看具体的实现,本文所用的 code,来自于:https://github.com/ikostrikov/pytorch-a3c

  Actor-Critic

  简单而言,你你这一期望内内外部的两项:

  代码的层次如下所示:

  你你这一 value function 是容易用 NN 来计算的,就像在 DQN 中估计 action-value function 一样。相比较而言,你你这一更简单,可能 每个 state 仅仅有有另另3个 value。

  其中, is the loss of the policy,  is the value error and  is a regularization term. These parts are multiplied by constants  and , which determine what part we stress more. 

  2. $\pi(a|s)$ 表示在情形 s 下,选取 action a 的概率;

  1. stochastic policy $\pi(s)$ 决定了 agent's action, 这由于,其输出暂且 single action,以后 distribution of probability over actions (动作的概率分布),sum 起来为 1. 

          Pytorch for A3C 

  让.我都都首没能计算的是优势函数 A(s, a),将其展开:

  其表达了在情形 s 下,选取动作 a 有多好。可能 action a 比 average 要好,没能,advantage function 以后 positive 的,而且 ,以后 negative 的。

  哪此东西来自于 the Policy Gradient Theorem :

  

  

  让.我都都再来定义 policy $\pi$ 的 value function V(s),将其看作是 期望的折扣回报 (expected discounted return),可有利于 有利于 看作是下面的迭代的定义:

  你你这一函数的意思是说:当前情形 s 所能获得的 return,是下有另另3个 情形 s‘ 所能获得 return 和 在情形转移过程中所得到 reward r 的加和

  让.我都都定有另另3个 函数 $J(\pi)$,表示 有另另3个 策略所能得到的折扣的奖赏,从初始情形 s0 出发得到的所有的平均:

  1. Different agents will likely experience different states and transitions, thus avoiding the correlation2.

  Reference:

  可能只用 单个 agent 进行样本的收集,没能让.我都都得到的样本就非常有可能是淬硬层 相关的,这会使得 machine learning 的model 出问题图片图片。可能 machine learning 学习的条件是:sample 满足独立同分布的性质。而且 有利于 是原先子淬硬层 相关的。在 DQN 中,让.我都都引入了 experience replay 来克服你你这一问题图片图片。而且 ,原先子以后 offline 的了,可能你是先 sampling,而且 将其存储起来,而且 再 update 你的参数。

  而策略梯度的法律妙招,则是从另外有另另3个 淬硬层 来看待你你这一问题图片图片。让.我都都知道,让.我都都的目标以后想学习有另另3个 ,从 state 到 action 的有另另3个 策略而已,没能,让.我都都有必要非得先学有另另3个 value function 吗?让.我都都可有利于 有利于 直接输入有另另3个 state,而且 经过 NN,输出action 的distribution 就行了嘛,而且 ,将 NN 中的参数,看做是可调节的 policy 的参数。让.我都都假设 policy 的实际执行的表现为 $\rho$,即:the averaged reward per step。让.我都都可有利于 有利于 直接对你你这一 $\rho$ 求偏导,而且 进行参数更新,就可有利于 有利于 进行学习了嘛:

  有有另另3个 很简便的法律妙招来计算你你这一函数的梯度:

  

   

  

  可能 n-step return:

  ====>> 所用到的各种重要的参数设置及其初始化:

  其次,有另另3个 任意的小改变,都可能会由于有另另3个 action 是否是会被选取。你你这一不连续的改变,可能被普遍认为是建立收敛精度的关键瓶颈。

  没能,问题图片图片来了,可有利于 有利于 online 的进行学习呢?而且 在你你这一过程中,仍然打破你你这一淬硬层 相关性呢?

  当让.我都都构建 DQN agent 的以后 ,让.我都都利用 NN 来估计的是 Q(s, a) 函数。这里,让.我都都采用不同的法律妙招来做,既然 policy $\pi$ 是 state $s$ 的函数,没能,让.我都都可有利于 有利于 直接根据 state 的输入 来估计策略的选取嘛。

  2. https://jaromiru.com/2017/03/26/lets-make-an-a3c-implementation/

  总而言之,让.我都都可有利于 有利于 借有利于现有的 deep learning 的框架来 minimize 你你这一哪此 total loss,以达到 优化网络参数的目的。

  让.我都都来看有几次核心的code:

  

  此外,还有有另另3个 概念也是非常重要的:N-step return 。

  

  这里,让.我都都 NN 的输入是 state s,输出是 an action probability distribution $\pi_\theta$,其示意图为:

  没能来很多,让.我都都定义 Lv 为 mean squared error (given all samples):

  从上方,可有利于 有利于 发现各个概念的符号表示及其意义。

  在 RL 的基本设置当中,有 agent,environment, action, state, reward 等基本元素。agent 会与 environment 进行互动,而产生轨迹,通过执行动作 action,使得 environment 指在情形的变化,s -> s' ;而且 environment 会给 agent 当前 动作选取以 reward(positive or negative)。通过不断的进行你你这一交互,使得积累没能来很多的 experience,而且 更新 policy,构成你你这一封闭的循环。为了简单起见,让.我都都仅仅考虑 deterministic environment,即:在情形 s 下,选取 action a 老是 会得到相同的 情形 s‘。