深度强化学习目录
深度强化学习(Deep Reinforcement Learning)分为深度和强化两个部分。深度学习的好处是更深,更抽象的学习;而强化学习则是通过与环境产生互动来采取行动。下面主要对强化学习作出概述。
强化学习主要由两个主体、四个部分组成。
Agent:代理人,即采取行动的个体,如玩家。
Environment:环境,能对行动产生反馈,如游戏规则。
Action space : A
State space : S
Reward: R
Policy: P
深度强化学习,就是在环境E下,由Agent根据状态S采取动作A,为了获得最大奖励R而不断训练生成策略P的过程。
在以上的描述中我们可以看出,我们研究的重点在于策略P。而生成策略P的方法大致可以分成两种,即基于策略的(Policy-based)和基于值的(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的策略。具体如何操作?有以下的方法:
总之,基于值的方法,就是基于值函数来学习策略的方法。
Value-based的所有方法,最终都是通过值函数来学习的,这些值函数可能和动作或状态有关。而Policy-based的方法则是用梯度的方法直接学习策略。
在V-B(Value-based,下同)的方法中,策略是 π ( s ) \pi(s) π(s),只和状态相关,我们通过值函数的反馈修改策略,再根据性的策略来计算值函数。
在P-B(Policy-based,下同)的方法中,策略是 π ( s ∣ a , θ ) \pi(s\vert a,\theta) π(s∣a,θ),添加了一组参数 θ \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(θ)=s∈S∑dπθ(s)Vπθ(s)=s∈S∑(dπθ(s)a∈A∑π(a∣s,θ)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 ( s ) V(s) V(s)或者 Q ( s , a ) Q(s,a) Q(s,a),但在真正选择动作的时候却不依赖于这两个函数,这就是P-B方法和V-B方法的区别。
那么有没有一种方法是结合两者的?当然有,就是Actor-Critic方法,在之后的学习中我会去展开讨论。
本文主要是概述,讲的有点浅,如果有说错的地方还请指正。