目录

Abstract

Part one: Basic knowledge

Policy

Environment Dynamics

Policy

Policy Approximation

Policy Approximation in discrete action space and continuous action space

Aim

Policy Gradient Method

Policy Gradient Theorem

Part Two: Algorithms in Vanilla Policy Gradient

REINFORCE (with baseline)  采用轨迹定义的目标函数进行推导

对于概率分配的策略​:

对于决定性的策略 ​

REINFORCE (with baseline)  采用policy gradient theorem进行推导

两种REINFORCE算法的联系

On-policy Actor-Critic Methods

Advantage Actor-Critic

A2C (Advantage Actor-Critic)

A3C   Asynchronous  Advantage Actor-Critic

Entropy Regularization (增加探索)

GAE  Generalized Advantage Estimation(在n-step 基础上优化)

(cite: article, reviews: deep reinforcement learning Vitay.J  4.23 )

Off-policy Actor-Critic Methods

Importance sampling

Retrace (待补充)

Self-Limitation Learning (待补充)

Deterministic Policy Gradient 确定性策略梯度

出现的原因(DQN和actor-critic的缺点)

DPG  Deterministic Policy Gradient

DDPG

D4PG  Distributed Distributional DDPG (待补充)

Reference


Abstract

本文会总结深度强化学习中基于策略学习的各种方法,从优化的角度说明REINFORCE(Monte Carlo based policy gradient)和参数空间Vanilla policy gradient的各种Actor Critic Methods.

(本文会在每部分展示引用到的blog链接和论文)

分布空间的natural policy gradient, trust region policy optimization, 以及PPO等算法会在下一文章中说明。


Part one: Basic knowledge

Policy

Environment Dynamics

强化学习中我们默认环境符合markov decision process(马尔可夫决策链,MDP),也就是说 未来的状态只取决于当前的状态和将采取的下一个动作。数学语言描述:存在人们未知的,能够完成对环境的描述。可以是决定性的deterministic,也可以是概率性的probabilistic;可以不随时间变化time-invariant,也可以随着时间变化time-variant。 但一般来说,我们认为是不随时间发生变化,或者变化很小。

Comment:  一般是环境决定的,人们难以改变,甚至大部分情况下机器人和人类难以察觉和知晓。因为出现了model-base methods,想要对  进行预测和建模,从而在不采取下一步行动前,能够提前进行预测,预测接下来的结果,从而达到对动作的优化。可以减少采取行动造成的成本,但是准确的模型很多时候是难以建立的。如何应用不完全准确的模型进行动作优化,比较关键。

Policy

策略实现在不同的状态进行不同的动作,也就是在固定的state将进行决定性的action;但是有时候在partial observed condition或者环境随时间变化的情况下,状态下只进行一个特定的动作不是最优解,因此有时可以使用概率密度分布得到在特定的state下,不同的action的概率密度分布 ()

Policy Approximation

在离散型问题中我们可以使用链表存储每一个状态下进行的动作,或者每一对状态和动作的概率,在这种情况下每次对策略的优化都是对每个点进行独立优化的。但是在连续的状态和动作空间下,我们需要无法对每个点都进行精确描述。 最简单的方式就是将连续空间离散化,从而转化为离散空间的强化学习问题。但是过于细密的离散空间需要的存储空间过多,而且有些问题难以转化为离散空间。比如对于将图像数据作为直接输入,离散化便难以解决。

因此另一种方式就是用有限的参数去模拟policy。因为在state连续的情况下,policy一般可以看作连续可微分的,因此我们常用参数向量对policy进行描述,可以是线性函数,也可以是非线性函数(包括neural network)。我们常用进行描述,下标表示我们可以改变参数向量从而改变策略。而在这种情况下,当我们改变参数时,我们将影响整个策略的值。而且在参数空间中改变参数时有可能很小的参数改变将对结果有很大的影响,因此在对参数进行优化时需要非常小心。

Policy Approximation in discrete action space and continuous action space

离散的动作空间:

我们在一个状态下,对每一个动作输出,然后采用soft max方法得到每一个动作在状态下的概率:

因为后续会经常用到,所以soft max操作是比较有好处的。

连续的动作空间:

连续动作空间下,我们只能使用概率密度来描述每一个动作,而且我们也需要采用 概率分布模型来模拟动作的概率密度。一般我们采用高斯分布,通过均值和方差来对概率密度进行描述。如果动作空间存在上限与下限,可以使用clip限制上限与下限。(另外可以使用Beta-dsitributions避免设置上限与下限) 这样子我们只需要使用参数向量模拟,如果在一个状态下我们要对多个动作进行选择的话,我们可以有几种选择:

对所有动作的方差设置成相同的定值 ; 对不同动作的方差设置成不同的定值;对不同动作的方差设置成可以学习的值(独立);设置协方差(不同动作空间动作不独立)


Aim

强化学习的目标是实现整个过程的奖励之和最大(对于不结束的过程,可以看作平均到每个步骤的奖励最大),因此强化学习实际是求解值最大的优化问题。

首先,我们先描述整个过程的轨迹。假设我们进行这样一个轨迹,那么我们根据我们的策略和环境动态得到轨迹出现的可能性。

那么,对于特定的,我们便可以得到对应的奖励:

在该策略下进行很多次实验,最后将结果取平均,就可以得到对应的期望值。

因此,我们在策略基强化学习中的目标便是得到:


Policy Gradient Method

最直接的方式就是使用Monte Carlo sampling,根据下述采样方法得到对应参数下的奖励之和,然后改变参数,找到最大值。

其中表示整个轨迹的return,不是上述的reward,表示整个过程的奖励之和。

但是Monte Carlo sampling 为了得到较为准确的值,需要进行大量的采样,而且整个数据集的方差会很大。同时这样的方法无法用于 不结束的任务。

因此,人们常用policy gradient来对参数进行优化。将参数看作连续空间上的自变量,将看作因变量,找到使得最大的参数。所以我们要计算

这就是使得变化最大的方向,也就是优化参数的方向。

当然,在强化学习中我们的数据不是提前已知的(在监督学习中是提前已知的),也是在训练的过程中同时产生的(online learning),然后我们根据我们生成的数据对参数进行改变,实现参数的更新。需要注意的是,我们改变参数之后,之前的数据都不对应目前的参数,因此需要舍弃之前所有的数据,需要重新生成可用的数据。(这种情况下数据的运用率会比较低,因此后续会有算法对此进行优化)

另外,在强化学习中,我们都是批次学习(batch-learning),每次更新都是朝着 所使用数据的最优方向,但是所用数据都数量较小,无法完全反映真实的梯度,因此我们每次更新都朝着该方向走很小的一步。


Policy Gradient Theorem

(Book: Reinforcement learning: an introduction 13.2 P325)

另外,除了上述采用轨迹的定义,我们还可以从 value function 角度进行定义:

其中,表示起始状态的分布概率,表示状态s的value function。

此时还可以同样展开,多出来的是:

所以每次展开都会多出来中间一项:(假设展开的轨迹是 

每次改变的都是k的长度。

因此最后会形成k=0~infinity的序列

表示 从s为起始状态开始,到结束状态为止,中间出现x状态的概率之和

此时,policy graident theorem实际上已经给出了 参数更新的基本公式。


Part Two: Algorithms in Vanilla Policy Gradient

REINFORCE (with baseline)  采用轨迹定义的目标函数进行推导

(Blog  Policy gradient methods - Scholarpedia)

( Sergey Levine, UCB, video   https://www.youtube.com/watch?v=XGmd3wcyDg8&list=PLkFD6_40KJIxJMR-j5A1mkxK26gh_qg37&index=4 )

course : CS 285 (berkeley.edu)

其中,是轨迹对应的奖励之和(return)。

其中,

对于概率分配的策略:

我们将对所有的动作分配一定的概率(因为拟合的方程是连续的,因此不会出现1,0的概率)。此时没有任何关系,因此

当然,我们有时会使用来代替

然后我们进行采样,就可以得到每次的参数梯度。(REINFORCE算法)

但是我们根据上式可以看出,不管每个轨迹的奖励之和是否够好,都会向着该方向移动。只不过奖励之和大的将移动的步幅大一些。实际上更好的方式是 奖励之和大于平均值,那么正向移动;奖励之和小于平均值,逆向移动。而且可以减少移动的步幅,减小方差。

因为,所以 baseline不对结果造成偏差,但是能够有效的减少方差,增强结果的稳定性。

最简单的方式: 

还有更好的方式: 可以通过选择b,来减少方差。

Diagram:

Initialize policy parameter 

Loop forever (for each episode):

Generate an episode: ,following 

Calculate the return 

Calculate the sum 

Calculate the gradient:

update the baseline R by the average of 

对于决定性的策略 

此时 就和模型有关,需要知道模型。


REINFORCE (with baseline)  采用policy gradient theorem进行推导

在这种情况下,REINFORCE 算法将会在 一个 sampling 中对参数进行多次更新,而不是像上述 多个sampling进行一次更新。

同理,可以加入baseline用于减少方差。

(Book: Reinforcement learning: an introduction 13.4 P329)

可以选择,使用value function来作为baseline,物理意义就是:如果高于,说明该动作能够带来高于平均值的奖励,应当采取正方向迭代;如果低于,说明该动作带来了低于平均值的奖励,应该进行反向迭代。因为也是未知的,因此需要采用参数进行拟合,在更新过程中也更新

两种REINFORCE算法的联系

对于轨迹推导出的算法:

根据causality principle (每一个 都只会对之后时间t:T的奖励产生影响,而不会对之前的结果产生影响),因此 对于 t 时刻的 return  应该是 

因此上式可以写作:

此时,上式说明可以不按照整个轨迹进行更新,而根据每一个状态转换进行更新,从而成为了


On-policy Actor-Critic Methods

我们可以一方面拟合 ,另一方面拟合。然后使用来对策略进行更新。

Advantage Actor-Critic

为baseline,使用Advantage对策略进行更新。

展现了每个action在该状态下相比其他动作的好坏程度。

1. 当 使用(return)替代的时候,这是蒙特卡洛优化。 (REINFORCE)

2. 当 使用替代的时候,这是TD优化

因为蒙特拉洛方法高方差,而且学习较慢,bootstrapping能够更好的用于更新value function,并且能够代替return进行策略参数的更新。

虽然REINFORCE中也使用value function进行自身参数的更新,但是并未用于策略的更新,因此不认为属于actor-critic methods。

3. 当 使用 n步迭代时,这是 n-step advantage优化。蒙特卡洛优化sampling的方差较大(因为不同episode的差别较大),而TD优化不稳定(因为评价的误差), n-step优化能够进行折中。但是因为n-step是也是on-policy method,因此每次迭代后,之前的数据都无法使用。

A2C (Advantage Actor-Critic)

对于上述的actor-critic来说,每次online-learning都要将已经生成的数据丢弃掉,然后生成新的数据来训练。此时如果是一个agent进行训练, 然后将所得到的数据用来更新策略。此时的数据都是连续的,存在关联。但是在neural network学习中我们需要打断这样的联系,不然结果会比较差。比如DQN等算法中因为是off-policy,可以使用experience replay将生成的数据存储,然后随机抽取进行学习,也是打算了数据之间的联系。在actor-critic中 可以同时生成几个agent,从不同的(随机的)初始状态开始,使用相同的策略进行探索,然后将探索的数据传输到一个全局中心,在全局中心将这些无关的数据用于neural network 学习,最后对策略进行更新,然后更新所有agents中的策略,然后进行学习。 这样子就实现了neural network 训练过程中的数据无关联。

(在A2C中 不同的agent之间的学习都是并行的,会存在有的结束快,有些结束慢的情况,结束快的需要等待结束慢的,因此不同agent之间需要保持相同的policy,保持同步。)

A3C   Asynchronous  Advantage Actor-Critic

上述A2C因为不同agent之间需要采用完全相同的策略,因为会存在相互等待的情况,降低学习的效率。A3C则是对此在A2C上进行优化,采用非同步式。不同agent之间将数据传出给全局中心,全局中心根据数据定时进行更新。率先完成episode的agent可以直接从全局中心得到策略,进行下一个episode,而不用等待其他的agent。虽然这样子会造成不同的agent之间不采用完全相同的策略,不完全符合on-policy学习,但是当学习步长较小时,不同policy之间的差别较小,生成的数据集都是可以公用的。因此结果还是好于A2C的。(这种情况也就说明了 我们采用数据时可以不完全使用一个polcy生成的,只要是足够相似的policy生成的数据,都可以进行更新。)

Entropy Regularization (增加探索)

我们可以使用下式来查看目前策略的熵值,策略越随机,熵值越大,探索越高;策略越稳定,熵值越小,探索会减少。前期我们可以使用较高的熵值比例来增加探索,后期减少探索比例,实现更稳定的策略。

GAE  Generalized Advantage Estimation(在n-step 基础上优化)

(cite: article, reviews: deep reinforcement learning Vitay.J  4.23 )

n-step是为了权衡 高方差(MC)和不稳定(TD),而GAE在这个基础上显示出更强的灵活性。

也就是说 n-step的 就是n步的相邻步之间的预测误差之和。对于TD-0来说,只计算一步的误差,偏差较大,可以看作是,是、;对于MC来说,计算所有步之间的误差,因此方差较大,可以看作是。我们应该选择合适的n,从而实现两者的平衡。

而在GAE中我们不选择特定的n值,而是选择将进行从远到近进行加权平均,得到

时,,此时成为了TD优化。

时,,此时成为了蒙特卡洛优化。

因此我们调节就可以改变我们选用的

另外,代表了我们对于远处的奖励的重视程度,时,则表示了我们认为近处的奖励和远处的奖励看作相同的;越小,则我们认为远处的奖励没有近处的奖励重要。 一般我们设置

此时,我们的梯度公式就变成了:


Off-policy Actor-Critic Methods

on-policy每次想要得到足够的经验(一般的经验,和好的经验)都需要进行很多的探索,尤其是参数空间维度很高,或者是奖励很稀疏的时候。我们感兴趣的动作空间可能跟我们每次得到的动作空间交集较小,此时就难以对策略进行有效的提升,即使是进行很多的探索。如果我们能将on-policy转变成off-policy,那么我们可以使用更多的数据来对我们的策略进行提升,比如随机生成的数据,或者专家的数据等等。

在off-policy中,我们一方面使用behavior policy(行为策略)来决策我们的行动,生成我们需要的数据;另一方面,我们也使用 target policy(目标策略)来使用数据对目标策略进行更新,得到更好的目标策略。

在policy gradient methods中因为对于每一个动作的概率不会为零,因此也就是说 行为策略和目标策略在每一个状态上的动作空间都是相同的。而实际上目标策略运用 行为策略的数据,也是转化为自己策略的数据,然后进行更新,因此行为策略和目标策略相似度越大,数据的参考性也就越大;但是如果相似度较小,但是是更好的动作状态,也是可以给目标策略很好的参考。

一般如果选择行为策略:

1.可以选择专家知识或者人类的示教,这样子得到的行为策略和最优的动作空间有一定的交集,给出的数据奖励较高,能够给目标策略更好的参考;另外强化学习因为设置的奖励较为简单,通过简单的奖励实现对于复杂动作空间的控制,可能会出现我们意料之外的动作,比如反人类的步态等等。通过人类的示教等生成行为策略,会避免很多的反人类行为,能够更好的让目标策略学到更符合我们期望的动作集。

2. 从目标策略中生成行为策略。然后可以加入其他的条件,比如增加探索等等。

Importance sampling

最简单的方式:

或者采用policy gradient method:

Retrace (待补充)

Self-Limitation Learning (待补充)

Deterministic Policy Gradient 确定性策略梯度

出现的原因(DQN和actor-critic的缺点)

DQN的更新没有策略梯度的更新稳定,无法在连续动作空间中使用

actor-critic对应的策略梯度大部分时候还是on-policy的,必须实时进行数据的更新,效率较低;另外由于策略梯度的随机性,我们必须生成很多的数据才能够对这个变化进行抵消(sample complexity 较差)[sample complexity指机器学习中为了拟合目标函数,而需要使用的样本的数量]

DPG  Deterministic Policy Gradient

DPG中不是随机的策略,而是确定性策略,也就是说。DPG像DQN一样,在每一个状态中都只会进行一个动作,而不是对所有的动作都会分配概率。

另外,DPG仍然是策略梯度,符合策略梯度的分析逻辑(aim-policy gradient)。

在每一个中,都是要朝着使得最大的方向;此时我们不知道的只是初始状态的的分布概率,而这个分布概率则可以根据采样得到。

因为DPG每次都是朝着Q更大的方向进行更新,生成的数据是可以一直使用的,因此DPG是off-policy。

DDPG

为了能够对进行评估,我们在使用神经网络时需要借鉴DQN的操作:

使用经验池,打断数据中的关联性,同时存储过去的数据,方便后续使用;

使用目标网络,可以用于稳定学习过程:但不像DQN中每过一个固定周期再进行更新,而是采用实时更新(但是相对于行为策略网络,会有延迟)

,其中

另外,为了能够进行有效探索,我们在输出的动作中添加一定的噪音,其中Ornstein-Uhlenbeck process的效果最好。

D4PG  Distributed Distributional DDPG (待补充)

Reference

OPEN AI:

Welcome to Spinning Up in Deep RL! — Spinning Up documentation

对应的GitHub source:

GitHub - openai/spinningup: An educational resource to help anyone learn deep reinforcement learning.

Policy gradient Method of Deep Reinforcement learning (Part One)相关推荐

  1. 深度强化学习 Deep Reinforcement Learning 学习整理

    这学期的一门机器学习课程中突发奇想,既然卷积神经网络可以识别一副图片,解决分类问题,那如果用神经网络去控制'自动驾驶',在一个虚拟的环境中不停的给网络输入车周围环境的图片,让它去选择前后左右中的一个操 ...

  2. 深度学习(19): Deep Reinforcement learning(Policy gradientinteract with environment)

    Deep Reinforcement learning AL=DL+RL Machine 观察到环境的状态,做出一些行为对环境产生影响,环境根据machine的改变给予一个reward.正向的acti ...

  3. 深度强化学习综述论文 A Brief Survey of Deep Reinforcement Learning

    A Brief Survey of Deep Reinforcement Learning 深度强化学习的简要概述 作者: Kai Arulkumaran, Marc Peter Deisenroth ...

  4. 深度强化学习—— 译 Deep Reinforcement Learning(part 0: 目录、简介、背景)

    深度强化学习--概述 翻译说明 综述 1 简介 2 背景 2.1 人工智能 2.2 机器学习 2.3 深度学习 2.4 强化学习 2.4.1 Problem Setup 2.4.2 值函数 2.4.3 ...

  5. DDPG:CONTINUOUS CONTROL WITH DEEP REINFORCEMENT LEARNING

    CONTINOUS CONTROL WITH DEEP REINFORCEMENT LEARNING 论文地址 https://arxiv.org/abs/1509.02971 个人翻译,并不权威 T ...

  6. 18 Issues in Current Deep Reinforcement Learning from ZhiHu

    深度强化学习的18个关键问题 from: https://zhuanlan.zhihu.com/p/32153603 85 人赞了该文章 深度强化学习的问题在哪里?未来怎么走?哪些方面可以突破? 这两 ...

  7. Deep Reinforcement Learning: Pong from Pixels翻译和简单理解

    原文链接: http://karpathy.github.io/2016/05/31/rl/ 文章目录 原文链接: 前言 Policy-Gradient结构流程图 Deep Reinforcement ...

  8. 【论文笔记】Deep Reinforcement Learning Control of Hand-Eye Coordination with a Software Retina

    目录 Abstract Keywords 1. INTRODUCTION 2. BACKGROUND A. Software Retina B. Deep Reinforcement Learning ...

  9. 代码实现 Human-level control through deep reinforcement learning

    代码实现 Human-level control through deep reinforcement learning 提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 前言 使用D ...

最新文章

  1. 从近两年的CVPR会议来看,目标检测的研究方向是怎么样的?
  2. 笔记本上使用Archlinux[转]
  3. 形容等待时间长的句子_雅思听力该如何准确辨别句子结构?学会结构精听,雅思8分轻松get!...
  4. java 子类tostring,JAVA中Object类的toString()方法,objecttostring
  5. 液晶屏和计算机组成,液晶显示屏结构是什么 液晶显示屏结构介绍【图文】
  6. 第六周作业----测试自动化工具
  7. C语言TCP客户端获取时间
  8. php 中抽象类的作用,解释PHP中的抽象类。
  9. java ee eclipse环境_Eclipse JavaEE 开发环境配置(JDK、Tomcat、Maven)
  10. beanstalkd最佳实践-编程开发
  11. 将java对象转换成json字符串_将java对象转换成json字符串
  12. PJSIP添加G729编码
  13. DreamweaverCS6破解安装
  14. 海湾gst5000协议号_海湾GST5000控制器说明书(DEMO)预案.doc
  15. 【数字化转型的另类视角也许更务实】
  16. VXE-TABLE V4 表格表尾合并
  17. ImportError: /home/yang/anaconda3/envs/sar/bin/../lib/libgio-2.0.so.0: undefined symbol: g_unix_get_
  18. SetDlgItemText
  19. Spring Cloud 入门教程(二): 配置管理
  20. ISP—去马赛克和颜色空间变换对图像噪声的影响

热门文章

  1. 安装win10时关闭计算机,Win10怎么关闭“安装更新并关机”选项
  2. 导轮式机器人_一种轮式机器人及其导向轮总成的制作方法
  3. c#手写web内网网站映射,穿透服务器(一)
  4. 澳大利亚发现世界首批杂交鲨鱼
  5. 面向对象系统分析与设计,让你真正了解什么是面向对象(傻瓜式讲解)
  6. 论文参考文献引用小技巧
  7. 云服务器 ECS 建站教程:搭建Joomla基础管理平台
  8. 021 Spark Streaming
  9. 学美工设计需要会哪些软件?零基础怎么入门学UI设计?
  10. 受不了了,被00后卷的想辞职了