强化学习基础

写在前面

笔者水平有限,时间有限,不足之处,大家指正。
同时欢迎大家对本文进行贡献。
本文长期维护(LTS - Long Term Service)。
感谢&侵删!

总述

(本章为一些总结,可以说是结论,可跳过)。
单智能体的强化学习可以分为基于值函数的方法(value-based method)和基于策略的方法(policy-based method),其中

  • value-based的理论基础基本上是基于动态规划算法;
  • policy-based主要思路是优化目标函数的思想

两者在基本思想上有较大区别。此外,经常有文献提到一种结合两种算法的Actor Critic (AC)方法,其实AC方法可以归结到policy-based方法框架下,AC方法与动态规划算法并无直接关系。

Comment 1: 当然policy-based方法中也会用到值函数的概念,可以看借鉴了动态规划算法中的元素,但其根本思想与动态规划无关。

无论是动态规划算法还是优化算法均属于传统算法,应用这些算法的前提是对环境模型(Environment Model)全部已知且计算复杂度不高(或者说模型比较小),而强化学习是关注于环境模型未知且(或)计算复杂度高(空间上或时间上)的一些实际问题中,主要应用的解决方案如下:

  • 针对环境模型未知:RL利用采样的方式近似(sampling);
  • 针对计算复杂度高:RL利用采样(sampling)和函数拟合(function approximation)的方法近似。

注:RL中的模型与别的算法中的模型不同,RL中模型特别指环境模型,而我们最终需要求解的是最优策略 π ∗ \pi^* π,并非环境模型。按照其他算法的习惯,最优策略 π ∗ \pi^* π应该被称为模型。

注的注:在model-based RL中可能会对环境进行建模。

所以可以看出来,单智能体强化学习的实质性工作其实是在未知环境模型(model free)和计算复杂度高的情况下利用sampling和function approximation来逼近传统算法的效果。

那么深度强化学习(Deep RL )是怎么回事呢?仅仅是强化学习function approximation中利用神经网络作为近似函数。

观点1:
理论上弄懂强化学习和实际上可以跑出有效的强化学习代码还是两个方面,尤其是在model-free情况下利用神经网络拟合函数的时候,每一个参数的变化都会导致结果的变化。

符号说明

强化学习中符号滥用现象还是有点严重的,各个文献的符号不统一,本文中的符号力求清晰和统一,具体说明如下。

第一章 马尔可夫模型和动态规划

很多很多实际问题都可以被抽象出来,建模成马尔可夫随机过程模型(Markov Model),因此我们只需要求解了马尔可夫模型,原问题即可得到解决。

1.1 MDP模型

MDP模型大家应该很熟悉了,MDP引出的过程可以从马尔可夫链说起。
MDP引出的故事可以总结为:

  1. MC(Markov Chain);
  2. MRP (Markov Reward Process)
  3. MDP (Markov Decision Process)

(具体的定义不难,以后再来补上。)
求解的目标是找到一个最优的策略 π ∗ ( a ∣ s ) \pi^*(a|s) π(as),可以告诉我们在每一个状态执行哪一个动作,使得整个任务(MDP过程)的总体回报 G G G 的期望 E π [ G ] \mathbb{E}_\pi [G] Eπ[G] 最大。这套求解的流程可以总结为:
建立模型
将原问题建模成MDP模型,需要明确说明状态空间、动作空间、状态转移矩阵、回报函数等基本元素。
目标函数
J π = E π [ G ] . J_\pi=\mathbb{E}_\pi [G]. Jπ=Eπ[G].
模型任务
找到最优策略 π ∗ \pi^* π最大化目标函数,即:
π ∗ = arg ⁡ max ⁡ π E π [ G ] . \pi^*=\arg \max_{\pi} \mathbb{E}_\pi [G]. π=argπmaxEπ[G].

Comment 1: 为什么目标函数是总体回报的期望?因为MDP模型中的状态转移矩阵 P P P是一个概率矩阵,本身具有不确定性,所以一个MDP模型即便按照同一个策略进行状态转移最终的总体回报 G G G也会不同,另外,策略也有确定策略和随机策略(第三章Policy-based Method中会涉及到)两种,当策略为随机策略的时候,会引入另一种不确定性。所以我们的指标选取 G G G的期望。

1.2 动态规划

建立好模型之后,就要对模型进行求解。如何求解MDP模型呢?可以利用动态规划(DP,Dynamic Programming/Planning)的思想。
动态规划的详细介绍可以参考

https://www.zhihu.com/question/23995189

中第一个回答,该回答写的非常好,推荐大家看。这里提几点比较重要的方面,首先动态规划的应用的模型需要满足两个条件:

  1. 无后效性:无论是从哪个状态转移到现在的状态的,后续的任何事情与前面的状态无关;
  2. 最优子结构:子问题的最优解就是原问题中对应子问题的最优解。

其次动态规划之所以相对枚举法效率高,是因为动态规划将一系列子问题提前求解并保存起来,再求解新问题的时候涉及到以前求解过的子问题不必再次进行枚举,只需要利用存储的结果即可,实质上是利用前面的求解缩小了解空间的范围。
举一个经典的例子,最短路径问题:要求知道从S到T最短路径是多少,如下图:
经典最短路径问题
我们想知道从S到达T的最短路径的长度,可以从后向前考虑,先知道从C到T最短路径的长度f( C ),知道从D到T的最短路径长度f(D),当我们考虑从A到T的最短路径时,我们只需要考虑是到C更短还是到D更短,即
f ( A ) = m i n { 30 + f ( C ) , 10 + f ( D ) } = 10 + f ( D ) = 20. f(A)=min\{30+f(C),10+f(D)\}=10+f(D)=20. f(A)=min{30+f(C),10+f(D)}=10+f(D)=20.
在上面的过程中我们并没有再次考虑f©和f(D),因为之前我们考虑过并记录下来了,而且无论从哪种方式到C或者D都不影响f( C )或f(D)(无后效性),且在问题A到T最短考虑的两种方式中,f( C)和f(D)的解本身就是两种方式最优解的一部分(最优子结构)。

1.3 利用动态规划求解MDP

1.3.1 动态规划的思想

首先我们可以利用DP的思想进行分析,类似于上文中的f(D)、f( C)等,我们也可以对MDP中的每个状态 s s s 的每个动作 a a a 建立一个值函数 Q ( s , a ) Q(s,a) Q(s,a),即:
Q ( a 0 = a , s 0 = s ) = r s a + E π [ ] Q(a_0=a,s_0=s)=r_s^a+\mathbb{E}_\pi[] Q(a0=a,s0=s)=rsa+Eπ[]

1.3.2 策略迭代(Policy Iteration)

一种求解上一节中动态规划问题的方式是策略迭代,策略迭代的方式如下:
策略迭代
即首先对当前策略 π \pi π 进行策略评估,得出 V π ( s ) V_\pi(s) Vπ(s),然后采用贪心策略(或者 ϵ − g r e e d y \epsilon-greedy ϵgreedy)进行策略更新,如此迭代下去,可以证明最终策略和值函数均可以达到最优。

策略评估

什么是策略评估?就是固定当前策略 π \pi π(此时环境的状态转移模型 P π \mathcal{P}^\pi Pπ也固定了, P π \mathcal{P}^\pi Pπ也可以看成模型MDP下underling(潜在)的MC模型的状态转移矩阵 P \mathcal{P} P),求解 V π ( s ) V_\pi(s) Vπ(s)
第一种求解方法是对每一个状态列写贝尔曼期望方程,并进行排列组成矩阵形式的等式,求解矩阵方程即可求解。
当矩阵方程计算量比较大的时候,可以应用迭代的方式,即第二种求解方法。
策略评估对应上图中向上箭头的步骤

策略改进

当求得 V π ( s ) V_\pi(s) Vπ(s)之后,我们要进行策略的改进。假设我们这里采用的是 ϵ − g r e e d y \epsilon-greedy ϵgreedy策略,我们首先定义策略状态值函数 q π ( s , π ′ ( s ) ) q_\pi(s,\pi'(s)) qπ(s,π(s)),即

定义:策略状态值函数
策略状态值函数 q π ( s , π ′ ( s ) ) q_\pi(s,\pi'(s)) qπ(s,π(s))为在策略 π \pi π下的值函数按照策略 π ′ \pi' π计算状态 s s s的值函数的值,即:

q π ( s , π ′ ( s ) ) = ϵ m ∑ a ∈ A q π ( s , a ) + ( 1 − ϵ ) max ⁡ a ∈ A q π ( s , a ) . q_\pi(s,\pi'(s))=\frac{\epsilon}{m}\sum_{a\in\mathcal{A}}q_\pi(s,a)+(1-\epsilon)\max_{a\in\mathcal{A}}q_\pi(s,a). qπ(s,π(s))=mϵaAqπ(s,a)+(1ϵ)aAmaxqπ(s,a).
其中 m = ∣ A ∣ m=|\mathcal{A}| m=A是动作空间的大小。■

我们可以证明策略状态值函数大于状态值函数本身,即:
V π ( s ) ≤ q π ( s , π ′ ( s ) ) . V_\pi(s)\leq q_\pi(s,\pi'(s)). Vπ(s)qπ(s,π(s)).
证明:

1.3.3 值迭代(Value Iteration)

1.3. 压缩映射

第二章 Value-based 方法

2.1 DQN

2.2 DQN的变体

DQN有很多变体,这些变体通常是在面临某一种类情况时对原DQN做的改进,但是不是所有的变体在所有情况下都比原本的DQN好,我们需要知道每一种变体改进了什么方面,在哪一种情况下需要用哪种变体。

2.2.1 Double DQN

2.2.2 Dueling DQN

动机:在某些实际场景中并不需要知道每个状态每个动作的准确值函数,我们可以引入优势函数advantage function:
A ( s , a ) = Q ( s , a ) − V ( s ) A(s,a)=Q(s,a)-V(s) A(s,a)=Q(s,a)V(s)
然后将Q(s,a)分解成A和V两部分分别进行拟合,其中V表示了这个状态有多好,而A用于比较每个动作的相对好坏。
在这里插入图片描述
但当

2.2.3 Prioritized Experience Sampling

动机:经验回放其实最早在1992年就提出来了,并在2013年的DQN中应用,但是原有的随机抽取经验忽略了经验之间的重要程度,实际上如人脑中一定会有更为重要的记忆,所以可以设置一个经验的优先级,重要的经验优先利用,不重要的经验减少利用的概率。原文中的话表述如下:
Experience replay liberates online learning agents from processing transitions in the exact order they are experienced.
Prioritized replay further liberates agents from considering transitions with the same frequency that they are experienced.

推荐一篇讲解Prioritized Experience Sampling提出的文章的博文,参考文献链接:

https://zhuanlan.zhihu.com/p/38358183

利用TD-error区分优先级

第三章 优化基础

第四章 Policy-based 方法

第五章 Actor Critic算法

第六章 博弈论基础

第七章 多智能体系统介绍

第八章 多智能体强化学习

多智能体系统的分类:

  • Cooperative:完全合作,最大化一个共享的团队回报;
  • Competitive:完全竞争,每个智能体最大化自己的回报,相反的奖励,等价于博弈论中的零和博弈问题;
  • Mixed:混合问题,有共同的奖励,但也有自身的奖励,每个智能体最大化自身的rewards

8.1 Cooperative Settings

一个一般的模型来建模这种情况:decentralized partially observable Markov Decision Process (Dec-POMDP),即:

定义(Dec-POMDP):
一个非集中式部分观测马尔可夫模型(Dec-POMDP)是一个七元组 ( N , S , O i , A , R i , P , γ ) (\mathcal{N},\mathcal{S},\mathcal{O}^i,\mathcal{A},\mathcal{R}^i,\mathcal{P},\gamma) (N,S,Oi,A,Ri,P,γ)

在完全合作的情况下,每一个智能体的奖励相同。模型的目的是为了找到一个联合策略使得整体的回报最大。每个智能体 i i i的策略为 π i = p ( a ∣ τ ) \pi_i=p(a|\tau) πi=p(aτ),其中 τ \tau τ为智能体的历史信息。联合策略可以写为 π = < π 1 , π 2 , . . . π N > \pi=<\pi_1,\pi_2,...\pi_N> π=<π1,π2,...πN>
类似于单智能体的情况,我们可以写出值函数:
Q π t o t ( τ , a ) = E π [ ∑ t = 0 inf ⁡ γ t r t ∣ s 0 = s , a 0 = a ] . Q^{tot}_{\pi}(\tau,a)=\mathbb{E}_\pi[\sum_{t=0}^{\inf}\gamma^tr_t|s_0=s,a_0=a]. Qπtot(τ,a)=Eπ[t=0infγtrts0=s,a0=a].
注意值函数不是状态值函数,而是历史-动作值函数。最优的联合策略即:
π = arg max ⁡ a Q π t o t ( τ , a ) . \pi=\argmax_{a}Q_\pi^{tot}(\tau,a). π=aargmaxQπtot(τ,a).
将问题建模成Dec-POMDP之后,目前比较好的解决方式就是用MARL进行解决。
但是我们想象一下单智能体的发展历程,首先是对实际问题建模成MDP,其次利用动态规划或者设出策略进行优化,而强化学习只是在逼近这两种数学方法。那么扩展到多智能体,有以下几个解决思路:

  1. 完全分布式:每个智能体都有自己的网络(值网络或者策略网络),每个智能体都基于局部的观测和动作仿照单智能体进行学习。
    • 优点:可以扩展到很多智能体的情况,整体网络的参数规模与智能体的个数呈线性关系,即:
      ∑ i ∈ N ∣ θ i ∣ = O ( N ) \sum_{i\in\mathcal{N}}|\theta_i|=O(N) iNθi=O(N)
    • 缺点:第一点是对于每个智能体来说不能将其模型建模成MDP,因为每个智能体都需要与其他智能体进行交互所以环境是不稳定的,缺乏理论保证,很可能不收敛,这种情况下如果调出来了,算幸运;第二点是所有智能体都有一个共同的奖励,但是每个智能体对于奖励贡献多少不明确,奖励变好了或者变坏了并不能判断是哪个智能体的问题,credit assignment不明确(这种情况下可能使用mixed setting会好一些)。
  2. 完全集中式:将所有的智能体看成一个整体,
    • 优点:整体可以建模成MDP(或者POMDP),有理论保证;
    • 缺点:首先一个问题是计算复杂度太高了,状态空间和动作空间的大小都会随着智能体的个数成指数倍增长。即:
      ∣ S ∣ = O ( ∣ s ∣ N ) , ∣ A ∣ = O ( ∣ a ∣ N ) . |\mathcal{S}|=O(|s|^N),|\mathcal{A}|=O(|a|^N). S=O(sN),A=O(aN).
      对于小规模的多智能体问来说是可以的,但是大规模问题的明显复杂度太高;其次即使可以学到一个复杂的网络来表示联合策略或者值函数,但是在执行的情况下会需要实时收集所有智能体的信息,这样的话每一步都需要收集所有的信息也会很复杂。
  3. 集中式学习,分布式执行:最常用的一种方式,基于值函数的方法有值函数分解,基于策略方法有MADDPG等。
Value-based Method—值函数分解

在这里插入图片描述
总体思路是每个智能体都有自己的值网络,经过混合网络的组合可以生成总的值函数网络,在训练的时候利用总值函数网络进行训练,但是在执行的时候只需要利用每个智能体网络即可。
但有一个问题,这种分解模式需要满足个体-全局最大化准则(Individual-global maximization Principle,IGM principle),即:

定义(IGM principle):
IGM准则是说全局值函数得出的最优策略就是每个智能体各自值函数的出的最优策略的直接组合,即
arg max ⁡ a Q t o t ( τ , a ) \argmax_{a}Q_{tot}(\tau,a) aargmaxQtot(τ,a)

未完。。。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值