0.强化学习概述+policy based+value based

目录

深度强化学习目录

简述

深度强化学习(Deep Reinforcement Learning)分为深度和强化两个部分。深度学习的好处是更深,更抽象的学习;而强化学习则是通过与环境产生互动来采取行动。下面主要对强化学习作出概述。

强化学习

强化学习主要由两个主体、四个部分组成。

两个主体

0.强化学习概述+policy based+value based_第1张图片

Agent:代理人,即采取行动的个体,如玩家。
Environment:环境,能对行动产生反馈,如游戏规则。

四个部分


Action space : A 
State space : S
Reward: R 
Policy: P
  1. A:动作空间,即Agent采取行动的所有动作空间。如对于贪吃蛇游戏,就是上下左右的离散操作空间;而对于驾驶类游戏,则是向左向右和液氮加速等的连续空间。
  2. S:状态空间,对于Agent采取行动后的反馈状态。贪吃蛇的身体长度位置、卡丁车的速度位置等,都是State。
  3. R:奖励,实数值,顾名思义,就是奖赏或惩罚。
  4. P:策略,即Agent在状态 s ∈ S s\in S sS下会采取什么行动 a ∈ A a\in A aA。有时候会用Actor表示策略,这两者在语义上等价。

深度强化学习,就是在环境E下,由Agent根据状态S采取动作A,为了获得最大奖励R而不断训练生成策略P的过程。

稍进一步

在以上的描述中我们可以看出,我们研究的重点在于策略P。而生成策略P的方法大致可以分成两种,即基于策略的(Policy-based)和基于值的(Value-based)。
0.强化学习概述+policy based+value based_第2张图片
如图所示,这两种方法并非完全互斥,可以共同使用。
我知道乍一看这两个名词会感到不明所以,下面我会用我的语言大致介绍下这两个是什么东西。而在此之前,我需要先介绍一下相关符号。

符号

  • π \pi π:函数符号,表示策略(Policy)函数,参数常为环境返回的状态,输出为一个具体的动作,可知 a = π ( s ) ∈ A a =\pi (s) \in A a=π(s)A
  • r r r:采取动作a后获得的即时奖励。
  • G G G:累积奖赏, G t G_t Gt表示从时刻t开始到游戏结束的累积奖赏。
    G t = ∑ T = t ∞ r t G_t=\sum_{T=t}^{\infty}{r_t} Gt=T=trt
  • Q π ( s , a ) Q_\pi (s,a) Qπ(s,a):状态-动作值函数(state-action value function),有时也简称动作值函数。即在t时刻,状态s下,采取动作a,使用策略 π \pi π预计获得的累积奖赏的期望值
    Q π ( s , a ) = E [ G t ∣ S t = s , A t = a ] Q_\pi (s,a)=\mathbb{E}[G_t\vert S_t = s,A_t = a] Qπ(s,a)=E[GtSt=s,At=a]
  • V π ( s ) V_\pi (s) Vπ(s):状态值函数(state value function),即在t时刻,状态s下使用策略 π \pi π预计获得的累积奖赏的期望值
    V π ( s ) = E [ G t ∣ S t = s ] V_\pi (s)=\mathbb{E}[G_t\vert S_t = s] Vπ(s)=E[GtSt=s]

Value-based(基于值)

先讲Value-based。
我们已经定义了两个value function,分别是 V π ( s ) V_\pi (s) Vπ(s) Q π ( s , a ) Q_\pi (s,a) Qπ(s,a)。Value-based方法就是根据这两个函数,求出最大化奖赏的策略 π \pi π。即: π ∗ = a r g max ⁡ π V π ( s ) \pi_*=arg \max_\pi V_\pi (s) π=argπmaxVπ(s)
或者: π ∗ = a r g max ⁡ π Q π ( s , a ) \pi_*=arg \max_\pi Q_\pi (s,a) π=argπmaxQπ(s,a)
也就是说,遍历所有的状态和动作,找到最大化值函数QV的策略。具体如何操作?有以下的方法:

  1. Dynamic Programming:动态规划
  2. Monte-Carlo Methods:蒙特卡洛算法
  3. Temporal-Difference Learning:时间差分学习
    这里着重展开的是第三种,时间差分学习包括Q-learning,DQN,Sarsa,具体的优化方法我会在之后的学习中展开讨论。

总之,基于值的方法,就是基于值函数来学习策略的方法。

Policy-based(基于策略)

Value-based的所有方法,最终都是通过值函数来学习的,这些值函数可能和动作或状态有关。而Policy-based的方法则是用梯度的方法直接学习策略。
在V-B(Value-based,下同)的方法中,策略是 π ( s ) \pi(s) π(s),只和状态相关,我们通过值函数的反馈修改策略,再根据性的策略来计算值函数。
在P-B(Policy-based,下同)的方法中,策略是 π ( s ∣ a , θ ) \pi(s\vert a,\theta) π(sa,θ),添加了一组参数 θ \theta θ。我们的目的就不再是基于VQ函数去间接地优化 π ( s ) \pi(s) π(s),而是通过优化参数 θ \theta θ直接对策略 π θ \pi_\theta πθ进行优化。
而众所周知,想要优化学习目标,必须要有一个Loss function,下面我们介绍两种空间中的损失函数。

离散空间

离散状态下的Loss函数为:
J ( θ ) = V π θ ( S 1 ) = E [ V 1 ] J(\theta)=V_{\pi_\theta}(S_1)=\mathbb{E}[V_1] J(θ)=Vπθ(S1)=E[V1]其中 S 1 S_1 S1代表的是初始状态,而 V 1 V_1 V1则是从初始状态开始到结束能得到的所有累积奖赏。换言之,Loss函数由于在每一盘游戏中都是固定 θ \theta θ的,因此只看看到初始的状态 S 1 S_1 S1,他就能知道在这组参数下的策略能获得多少奖励。但由于一些游戏对行动的采取并非确定性的,而是添加一些随机性(比如同样的state和action,游戏自身会生成一些噪音来阻碍出现相同的结果),因此这里的loss function是期望值。
我们要做的事情,就是通过学习这组参数 θ \theta θ,来最大化这个 J ( θ ) J(\theta) J(θ),这就是基于策略的方法所要做的事情。

连续空间

而对于连续空间的Loss函数,有: J ( θ ) = ∑ s ∈ S d π θ ( s ) V π θ ( s ) = ∑ s ∈ S ( d π θ ( s ) ∑ a ∈ A π ( a ∣ s , θ ) Q π ( s , a ) ) J(\theta)=\sum_{s\in S}d_{\pi_\theta}(s)V_{\pi_\theta}(s)=\sum_{s\in S}(d_{\pi_\theta}(s)\sum_{a\in A}{\pi(a\vert s,\theta)Q_{\pi}(s,a)}) J(θ)=sSdπθ(s)Vπθ(s)=sS(dπθ(s)aAπ(as,θ)Qπ(s,a))
其中 d π θ ( s ) d_{\pi_\theta}(s) dπθ(s)是马尔科夫链中关于 π ( θ ) \pi(\theta) π(θ)的一个稳定分布(stationary distribution)。有关稳定分布的概念比较麻烦,这里就简单地理解为 J ( θ ) J(\theta) J(θ)是各种状态下V值的期望值就行。
那么具体怎么实现呢?比较多的是采用policy gradient方法,这里就不展开了。

再形象一点

V-B方法是对每一个状态下的行为进行打分,像是在训练一个裁判员(critic),根据这个裁判员对状态行为的评分,选择最高分,从而达到优化的结果。
P-B方法则不去管什么状态动作的评分,专心于优化自身。P-B方法就像是一个演员(actor),他只要把自己的参数学习好,自然就知道了什么状态下该选择什么动作。

P-B和V-B的总结

实际的训练中,P-B方法也会运用到 V ( s ) V(s) V(s)或者 Q ( s , a ) Q(s,a) Q(s,a),但在真正选择动作的时候却不依赖于这两个函数,这就是P-B方法和V-B方法的区别。
那么有没有一种方法是结合两者的?当然有,就是Actor-Critic方法,在之后的学习中我会去展开讨论。
本文主要是概述,讲的有点浅,如果有说错的地方还请指正。

你可能感兴趣的:(深度强化学习,深度学习,强化学习)