该书由清华大学李升波教授撰写的,主要面向工业控制领域的研究者和工程师,曾获得2024年度Springer中国新发展奖(China New Development Awards)。全书按照原理剖析、主流算法、典型示例的架构,系统地介绍了用于动态系统决策与控制的强化学习方法。全书共分为11章,内容涵盖了强化学习的基本概念、蒙特卡洛法、时序差分法、动态规划法、函数近似法、策略梯度法、近似动态规划、状态约束的处理和深度强化学习等知识点。书籍及源代码下载网站:书籍及代码链接点这里。
另外,由于本部分篇幅较长,因此分成两篇博客发表。另一篇博客的地址参考我的系列博客的地址汇总。
文章目录
书籍链接:Reinforcement Learning for Sequential Decision and Optimal Control
本篇博客讲述ADP(Approximate Dynamic Programming)。ADP是最优控制与RL的集合。它适用于处理这样的问题:问题本身被建模为最优控制问题,系统的环境模型已知,但是如果直接使用最优控制的receding horizon control方法,需要在线计算,计算量大。因此,ADP尝试使用offline learning的方法来学习一个近似的最优控制器。ADP主要有两种主要类型,值迭代的ADP和策略迭代的ADP。
ADP的概念最早由Bellman等人提出,用于解决exact DP遭遇的维度灾难问题。二十世纪七十年代后期,Werbos提出将连续状态空间参数化,在参数空间中重新构建ADP问题。在二十世纪八十年代早期,Barto等人开始使用神经网络来近似ADP的actor和critic。在九十年代早期,基于模型的ADP与model-free的RL之间的联系逐渐变得明朗起来,ADP也因此取得了很大的发展,逐渐成为沟通最优控制与RL的桥梁。现在,ADP特指一种在确定性环境下工作,基于模型的RL方法,可以用来求解在非线性和有约束的环境中复杂的最优控制问题;可以实现较好的实时控制。
8.1 离散时间、无限视野(Discrete-Time, Infinite-Horizon)的ADP
现在的控制问题基本上都是使用数字控制器,也就说是在离散的时间域内进行的。然而,现实中的物理系统基本上都是连续时间的,因此需要对于连续时间的系统进行离散化,构建离散时间的最优控制问题。Consistent approximation理论提供了关于离散化之后的系统收敛到原连续时间系统的最优解的理论保证。
一个可解的最优控制问题(OCP)必须具有以下两个特点:
- 环境模型具有马尔科夫性质
- 代价函数对于每个时间步是可分离的
那么,对于ADP来说,其确定性的环境模型在离散化之后自然满足马尔科夫性质。而这里我们的代价函数是由每步的utility function的和构成的,因此也是可分离的。我们可以这样构建对应于离散时间、无限视野的ADP问题:
定义1:离散时间、无限视野的ADP问题是这样的一个最优控制问题:
min { u t , u t + 1 , ⋯ , u ∞ } V ( x ) = ∑ i = 0 ∞ l ( x t + i , u t + i ) , s.t. x t + 1 = f ( x t , u t ) , \min_{\{u_t,u_{t+1},\cdots,u_\infty\}}V(x)=\sum_{i=0}^\infty l(x_{t+i},u_{t+i}),\\\text{s.t.}\\x_{t+1}=f(x_t,u_t), {ut,ut+1,⋯,u∞}minV(x)=i=0∑∞l(xt+i,ut+i),s.t.xt+1=f(xt,ut),
这里的 u ∈ U ⊂ R m u\in\mathcal{U}\subset\mathbb{R}^m u∈U⊂Rm代表动作(即之前RL里的a,这里最优控制与RL的记号系统略有不同), x ∈ X ⊂ R n x\in\mathcal{X}\subset\mathbb{R}^n x∈X⊂Rn代表状态(即之前RL里的s)。 f ( x , u ) f(x,u) f(x,u)是环境模型,它必须是确定性的。 l ( x , u ) ≥ 0 l(x,u)\ge 0 l(x,u)≥0是utility function(或者按照R了的习惯,称为reward signal)。 V ( x ) V(x) V(x)由各步的utility function的加和构成,被称为代价函数(或者按照RL的习惯,称为状态值函数)。另外,还需满足以下的假设:
假设1: f ( x , u ) f(x,u) f(x,u)只在原点有一个平衡态,即 f ( 0 , 0 ) = 0 f(0,0)=0 f(0,0)=0,且 ∂ f ( x , u ) / ∂ u \partial f(x,u)/\partial u ∂f(x,u)/∂u必须可以获得。
假设2: l ( x , u ) l(x,u) l(x,u)正定,即除了在原点处 l ( 0 , 0 ) = 0 l(0,0)=0 l(0,0)=0外, l ( x , u ) > 0 l(x,u)>0 l(x,u)>0。且 ∂ l ( x , u ) / ∂ u \partial l(x,u)/\partial u ∂l(x,u)/∂u、 ∂ l ( x , u ) / ∂ x \partial l(x,u)/\partial x ∂l(x,u)/∂x必须可以获得。
注意,实际上不一定系统只能有一个平衡态,但是我们作上述假设可以简化问题。对于有多个平衡态的系统,它在各个平衡态附近也可以看成只有一个平衡态。
离散的时间步的一个重要好处是可以递归的进行计算,从而促进了self-consistency条件和Bellman方程的数值计算。
8.1.1 Bellman方程
读者可以发现,我们在本章对于问题的建模与符号体系是根据最优控制的习惯来的。因此,在本节的讨论中,我们也应该先提出对应于最优控制语境的self-consistency条件和Bellman方程。
首先来看看self-consistency条件:
V
(
x
)
=
l
(
x
,
u
)
+
V
(
x
′
)
,
∀
x
∈
X
.
V(x)=l(x,u)+V(x'),\forall x\in X.
V(x)=l(x,u)+V(x′),∀x∈X. 这里我们再把RL里的self-consistency条件放出来对比一下:
v
π
(
s
)
=
E
π
{
r
+
γ
v
π
(
s
′
)
∣
s
}
=
∑
a
∈
s
a
π
(
a
∣
s
)
{
∑
s
′
∈
S
P
(
s
′
∣
s
,
a
)
(
r
s
s
′
a
+
γ
v
π
(
s
′
)
)
}
v^\pi(s)=\mathbb{E}_\pi\left\{r+\gamma v^\pi(s')|s\right\}=\sum_{a\in s^a}\pi(a|s)\left\{\sum_{s'\in\mathcal{S}}\mathcal{P}(s'|s,a)\left(r_{ss'}^a+\gamma v^\pi(s')\right)\right\}
vπ(s)=Eπ{r+γvπ(s′)∣s}=a∈sa∑π(a∣s){s′∈S∑P(s′∣s,a)(rss′a+γvπ(s′))} 可以看出,两者本质是一样的。形式上的区别在于在此处我们采用的是确定策略、确定环境,因此也自然不存在
π
(
a
∣
s
)
\pi(a|s)
π(a∣s)和
P
(
s
′
∣
s
,
a
)
\mathcal{P}(s'|s,a)
P(s′∣s,a)了,也自然没有求和式了。本处的self-consistency条件的图示如下:
接下来,在引入Bellman方程之前,需要现对于最优值函数进行定义:
V
∗
(
x
)
=
def
V
π
∗
(
x
)
=
min
{
u
t
,
u
t
+
1
,
⋯
,
u
∞
}
V
(
x
)
,
V^*(x)\stackrel{\text{def}}{=}V^{\pi^*}(x)=\min_{\{u_t,u_{t+1},\cdots,u_\infty\}}V(x),
V∗(x)=defVπ∗(x)={ut,ut+1,⋯,u∞}minV(x), 这里
{
u
t
,
u
t
+
1
,
⋯
,
u
∞
}
\{u_t,u_{t+1},\cdots,u_\infty\}
{ut,ut+1,⋯,u∞}从时刻t开始的控制序列。Bellman方程的形式如下:
V
∗
(
x
)
=
min
{
u
t
,
u
t
+
1
,
⋯
,
u
∞
}
{
l
(
x
t
,
u
t
)
+
V
(
f
(
x
t
,
u
t
)
)
}
=
min
u
t
{
l
(
x
t
,
u
t
)
+
V
∗
(
f
(
x
t
,
u
t
)
)
}
=
min
u
{
l
(
x
,
u
)
+
V
∗
(
f
(
x
,
u
)
)
}
.
\begin{gathered} V^{*}(x) =\min_{\{u_{t},u_{t+1},\cdots,u_{\infty}\}}\bigl\{l(x_{t},u_{t})+V\bigl(f(x_{t},u_{t})\bigr)\bigr\} \\ =\min_{u_{t}}\bigl\{l(x_{t},u_{t})+V^{*}\bigl(f(x_{t},u_{t})\bigr)\bigr\} \\ =\min_{u}\bigl\{l(x,u)+V^{*}\bigl(f(x,u)\bigr)\bigr\}. \end{gathered}
V∗(x)={ut,ut+1,⋯,u∞}min{l(xt,ut)+V(f(xt,ut))}=utmin{l(xt,ut)+V∗(f(xt,ut))}=umin{l(x,u)+V∗(f(x,u))}. 而我们之前在RL中提到的Bellman方程是这样的:
v
∗
(
s
)
=
max
a
∈
A
∑
s
′
∈
S
P
(
s
′
∣
s
,
a
)
(
r
s
s
′
a
+
γ
v
∗
(
s
′
)
)
,
∀
s
∈
S
.
v^*(s)=\max_{a\in\mathcal{A}}\sum_{s^{\prime}\in\mathcal{S}}\mathcal{P}(s^{\prime}|s,a)\left(r_{ss^{\prime}}^a+\gamma v^*(s^{\prime})\right),\forall s\in\mathcal{S}.
v∗(s)=a∈Amaxs′∈S∑P(s′∣s,a)(rss′a+γv∗(s′)),∀s∈S. 两者对比,我们可以看出,差别同样在于因为确定策略、确定环境的原因,省去了枚举状态进行求和的形式。Bellman方程的图示如下:
Bellman方程是我们在本处构造的最优控制问题的最优解的充要条件。它的好处在于如果知道了下一个状态的最优值,那么就只需要搜索当前状态下单个最优策略,这样就可以通过从后往前的方式递归的计算出最优值函数,而不用考虑很多步之后。
现实问题中对于马尔可夫性质的破坏是很常见的,比如移动平均滤波器、时延控制等。这种情况下的解决办法通常是对于状态空间进行重构(扩大状态空间),然后使用新的状态来选择最优动作。不过这样也肯定会带来计算量的增加。
最后我们还需要解释两个问题:
- 为什么Bellman方程的解就是原来最优控制问题的最优解?
以上两个解相等的原因在于我们之前做过的两个假设:环境的马尔科夫性质和代价函数的可分离性。这两个假设保证了我们把原始的问题分解成一系列multistage的子问题提供了方便。更具体地来说,我们考虑以下两个优化问题:
u ∗ = arg min u { ⋅ } , π ∗ = arg min π { ⋅ } . u^{*}=\arg\min_{u}\{\cdot\},\\\pi^{*}=\arg\min_{\pi}\{\cdot\}. u∗=argumin{⋅},π∗=argπmin{⋅}. 以上两式看似除了下标之外完全一样,但是实际上它们来自于两个开环和闭环最优控制问题。开环OCP直接优化出一系列的控制序列,而不考虑与当前及之前状态的关联;而在闭环OCP中,我们要优化得到的闭环策略的结构上是有限制的。一旦找到了这样一个最优策略,我们就得到了一个在线的反馈控制器。我们刚才讲的ADP版的Bellman方程实际上是一个开环的最优条件,但是当我们引入了一个结构上有限制的策略时,我们就可以得到一个闭环的最优控制问题:
π ∗ ( x ) = u ∗ = arg min u { l ( x , u ) + V ∗ ( x ′ ) } , ∀ x ∈ X , \pi^*(x)=u^*=\arg\min_u\{l(x,u)+V^*(x')\},\forall x\in\mathcal{X}, π∗(x)=u∗=argumin{l(x,u)+V∗(x′)},∀x∈X, 这里的 u = π ( x ) , ∀ x ∈ X u=\pi(x),\forall x\in \mathcal{X} u=π(x),∀x∈X。那么下面我们只要说明开环和闭环OCP的等价性即可。开环Bellman方程的解是一个序列 { u t ∗ , u t + 1 ∗ , ⋯ , u ∞ ∗ } \{u_t^*,u_{t+1}^*,\cdots,u_\infty^*\} {ut∗,ut+1∗,⋯,u∞∗},而闭环Bellman方程的解是一个策略 π ∗ ( x ) \pi^*(x) π∗(x)。易知对于每一个固定的状态,其最优动作要不是只有唯一一个,要不就是有多个,而这多个选哪个作为最优动作是无所谓的。因此,根据闭环策略,我们可以轻松得到一系列的最优动作序列。其实,只要我们用来拟合策略 π ( x ) \pi(x) π(x)的函数具有足够的表示能力(比如神经网络),那么我们就可以认为开环和闭环Bellman方程的解之间没有差别。 - 为什么不需要考虑初始的状态?
可能大家也已经注意到了,我们在构建ADP对应的OCP问题时与之前的RL问题最大的区别就是没有将初始状态分布作为加权系数考虑进去。这是因为如果 π ∗ ( s ) \pi^*(s) π∗(s)是对于某个特定的初始状态得到的最优策略,那么对于其它初始状态它也是最优的。
8.1.2 离散时间的ADP算法框架
ADP的目的是找到闭环的Bellman方程的解。类似于之前讲过的RL算法,这里ADP的算法也可以被归类为值迭代和策略迭代两种,而且这两种算法都可以使用Actor-Critic的框架来表述,即可分为PEV(对应于Critic)和PIM(对应于Actor)两个部分。策略迭代和值迭代的ADP对比如下:
这里需要解释一下上表中什么是Iteration Efficiency。它被定义为达到某个performance level所需要的迭代次数。
在介绍算法之前,需要再次强调的是,我们在ADP中的环境模型不仅是已知的,而且是确定性的。这种环境莫i选哪个带来种种简化:
- reward signal(或者说utility function)不需要包含有关下一个状态的信息(回顾我们之前定义的reward都是三元组 ( s , a , s ′ ) (s,a,s') (s,a,s′)的函数),因为下一个状态可通过环境模型由当前状态和动作唯一确定。
- 值函数的定义式中不包含折扣因子 γ \gamma γ。这是因为状态和动作都能达到零平衡态,因此值函数是有界的,并不需要使用折扣因子来保证其有界性。
尽管有上述种种好处,但是也存在一些困难。比如不使用折扣因子可能会导致算法的收敛性变差、策略的准确性下降、训练稳定性下降,这是由于缺少了 γ \gamma γ-contraction性质导致的。需要更仔细的调参和一些技巧(如zero boundary condition、high-order value approximation)来保证算法的收敛性。
下面我们主要来讲一下策略迭代的ADP算法框架。策略迭代的ADP算法框架如下:
对于具有确定环境模型的ADP问题,PEV就是要求解self-consistency条件。但是,没有折扣因子的话,self-consistency条件的解可能不唯一!怎么办呢?我们可以在该条件的左右两侧各加一个相同的常数,这并不会改变左右两侧的相等。而通过加这个常数,我们可以使得当
x
=
x
e
q
u
x=x_{equ}
x=xequ时
V
k
(
x
)
=
0
V^k(x)=0
Vk(x)=0,这样就可以得到一个唯一解了。这个操作就是zero boundary condition。这样,接下来,我们把self-consistency条件看成是一个代数方程,就可以通过fixed-point iteration来求解了。这个过程就是PEV的过程:
注意,上式最右边减去 V j k ( x e q u ) V_j^k(x_\mathrm{equ}) Vjk(xequ)就是利用上面说的zero boundary condition,如果不见去掉这一项,训练可能会非常不稳定。在很多任务中, x e q u x_\mathrm{equ} xequ为0。这里的上下标需要注意,k表示的是最外层的循环的轮数,也可以理解为当前策略为 π k \pi^k πk,而j表示的是内层循环的轮数。
在第k轮大循环的PEV按照上述的方式迭代完成后,就要进行PIM了。PIM时遵守的公式如下:
π
k
+
1
(
x
)
=
arg
min
u
{
l
(
x
,
u
)
+
V
k
(
x
′
)
}
,
∀
x
∈
X
.
\pi_{k+1}(x)=\arg\min_u\{l(x,u)+V^k(x')\},\forall x\in\mathcal{X}.
πk+1(x)=argumin{l(x,u)+Vk(x′)},∀x∈X. 上式右边使用的式子也被称为弱Bellman方程。因为右边的
V
k
(
x
′
)
V^k(x')
Vk(x′)不是最优值函数而是第k轮PEV后对于值函数的估计。
8.1.3 收敛性和稳定性
收敛性和稳定性是ADP算法的两个相互紧密联系的性质。它们既有紧密的联系,又有明显的区别。让我们先来看看它们各自的定义。
收敛性:ADP算法的收敛性描述了一个算法是否能从中间策略 π k \pi_k πk逐渐收敛到最优策略 π ∗ \pi^* π∗。证明收敛性的方法是看随着迭代轮数k的增加,值函数的值是否变得更好(在我们这里最小化代价函数的假设下即值函数的值是否变得更小):
V k + 1 ( x ) ≤ V k ( x ) , ∀ x ∈ X . V^{k+1}(x)\le V^k(x),\forall x\in\mathcal{X}. Vk+1(x)≤Vk(x),∀x∈X.
稳定性:ADP算法的稳定性描述了最优策略 π ∗ \pi^* π∗是否能够使得被控对象稳定下来。证明方法是检查随着时间t的增加,最优值函数 V ∗ ( x ) V^*(x) V∗(x)是否持续下降:
V ∗ ( x t + 1 ) ≤ V ∗ ( x t ) , ∀ x t ∈ X . V^*(x_{t+1})\le V^*(x_t),\forall x_t\in\mathcal{X}. V∗(xt+1)≤V∗(xt),∀xt∈X.
让我们再来辨别一下二者的区别与联系:
- 联系:
- 稳定性是收敛性的前提:一个ADP算法不可能收敛到一个不稳定的策略上。而且不光是最终的策略,只要中间策略是不稳定的,就无法进行有效的环境交互。
- 区别:
- 与什么有关:收敛性与主循环的迭代次数有关,而稳定性与时间t有关。前者预训练算法有关,后者与得到策略有关。
- 一个策略可以是稳定而非最优的:一个不好的算法可能最终会达到一个稳定的策略,但是这个策略并不是最优的。那么这样的算法因为缺少最优性,因此没有意义。
有关二者的内在联系在有噪声的观测和不确定的环境模型下就更加复杂,这里就不展开了。
8.1.3.1 闭环稳定性
对于没有限制的OCP问题,闭环稳定性等价于策略的可接受性。一个可接受的策略,以其为反馈控制器的闭环系统必须是稳定的。换句话说,不能有不稳定的状态(即值函数无穷大的状态)。
在策略迭代ADP中,为了能够与环境成功的进行交互,迭代的过程必须是recursive stable的,即如果当前策略 π k \pi_k πk是可接受的,那么本轮迭代结束后得到的下一轮策略 π k + 1 \pi_{k+1} πk+1也必须是可接受的。如果能够保证这一点,那么只要我们选取的初始策略是可接受的,那么一直到最后得到最优策略的整个过程中所有的中间策略都是可接受的。我们下面来证明这一点。
定理1:在策略迭代的ADP算法中,每个策略 π k \pi_k πk都是可接受的,只要初始的策略 π 0 \pi_0 π0是可接受的。
证明如下。首先我们来回顾一下迭代过程的记号变化情况。在第k轮迭代的PEV阶段,我们的策略是
π
k
\pi_k
πk。本轮PEV开始之前,值函数为
V
k
−
1
(
x
)
V^{k-1}(x)
Vk−1(x),在本轮PEV结束后得到的值函数是
V
k
(
x
)
V^k(x)
Vk(x)。在PIM阶段,我们在最新得到值函数
V
k
(
x
)
V^k(x)
Vk(x)的基础上搜索新的最佳策略,PIM结束后得到的策略是
π
k
+
1
\pi_{k+1}
πk+1。下面我们来证明这个定理。我们在第k轮PIM结束后得到策略
π
k
+
1
\pi_{k+1}
πk+1,根据其搜索的方式,我们有:
l
(
x
,
π
k
+
1
)
+
V
k
(
f
(
x
,
π
k
+
1
)
)
=
min
u
{
l
(
x
,
u
)
+
V
k
(
f
(
x
,
u
)
)
}
.
l(x,\pi_{k+1})+V^k\big(f(x,\pi_{k+1})\big)=\min_u\{l(x,u)+V^k\big(f(x,u)\big)\}.
l(x,πk+1)+Vk(f(x,πk+1))=umin{l(x,u)+Vk(f(x,u))}. 即
π
k
+
1
\pi_{k+1}
πk+1对于式子
l
(
x
,
u
)
+
V
k
(
f
(
x
,
u
)
)
l(x,u)+V^k\big(f(x,u)\big)
l(x,u)+Vk(f(x,u))是最优的(此处为最小的)。那么易知因为
π
k
\pi_k
πk此时对于
l
(
x
,
u
)
+
V
k
(
f
(
x
,
u
)
)
l(x,u)+V^k\big(f(x,u)\big)
l(x,u)+Vk(f(x,u))不是最优的,因此有:
l
(
x
,
π
k
)
+
V
k
(
f
(
x
,
π
k
)
)
≥
min
u
{
l
(
x
,
u
)
+
V
k
(
f
(
x
,
u
)
)
}
.
l(x,\pi_k)+V^k\big(f(x,\pi_k)\big)\geq\min_u\{l(x,u)+V^k\big(f(x,u)\big)\}.
l(x,πk)+Vk(f(x,πk))≥umin{l(x,u)+Vk(f(x,u))}. 又由self-consistency条件,我们有:
V
k
(
x
)
=
l
(
x
,
π
k
)
+
V
k
(
f
(
x
,
π
k
)
)
.
V^k(x)=l(x,\pi_k)+V^k\big(f(x,\pi_k)\big).
Vk(x)=l(x,πk)+Vk(f(x,πk)). 因此有:
V
k
(
x
)
≥
l
(
x
,
π
k
+
1
)
+
V
k
(
f
(
x
,
π
k
+
1
)
)
.
V^k(x)\geq l(x,\pi_{k+1})+V^k\big(f(x,\pi_{k+1})\big).
Vk(x)≥l(x,πk+1)+Vk(f(x,πk+1)). 又因为utility function是正定的,所以有:
l
(
x
,
π
k
+
1
)
+
V
k
(
f
(
x
,
π
k
+
1
)
)
≥
V
k
(
f
(
x
,
π
k
+
1
)
)
l(x,\pi_{k+1})+V^k\big(f(x,\pi_{k+1})\big)\geq V^k\big(f(x,\pi_{k+1})\big)
l(x,πk+1)+Vk(f(x,πk+1))≥Vk(f(x,πk+1)) 最后再结合
V
k
(
f
(
x
,
π
k
+
1
)
)
=
V
k
(
x
′
)
V^k\big(f(x,\pi_{k+1})\big)=V^k(x')
Vk(f(x,πk+1))=Vk(x′),我们就得到了:
V
k
(
x
)
≥
V
k
(
x
′
)
,
∀
x
∈
X
.
V^k(x)\geq V^k(x'),\quad \forall x\in\mathcal{X}.
Vk(x)≥Vk(x′),∀x∈X. 很明显,只有当达到了平衡态之后才取等号。注意到,x’是由策略
π
k
+
1
\pi_{k+1}
πk+1决定的,这就说明了新策略得到值函数必然是越来越小的,自然不会发散,因此是有界的,也就是说是可接受的。这就证明了定理1。
下面我们再来证明策略迭代ADP算法最终得到的最优策略 π ∗ \pi^* π∗是可渐近稳定的。
定理2:在策略迭代的ADP算法中,最终得到的最优策略 π ∗ \pi^* π∗是渐近稳定的。
证明如下。首先,最优值函数也必定满足self-consistency条件:
V
∗
(
x
)
=
l
(
x
,
π
∗
)
+
V
∗
(
f
(
x
,
π
∗
)
)
=
l
(
x
,
π
∗
)
+
V
∗
(
x
′
)
.
V^*(x)=l(x,\pi^*)+V^*\big(f(x,\pi^*)\big)=l(x,\pi^*)+V^*(x^{\prime}).
V∗(x)=l(x,π∗)+V∗(f(x,π∗))=l(x,π∗)+V∗(x′). 再由utility function的正定性,我们有:
V
∗
(
x
)
≥
V
∗
(
x
′
)
.
V^*(x)\geq V^*(x^{\prime}).
V∗(x)≥V∗(x′). 根据稳定性的定义,即得证。
从上面的证明过程也可以看出,utility function的正定性是证明稳定性的关键。而对于值迭代的ADP算法,因为没有中间策略,随意不要求recursive stability,但是最终得到的最优策略仍然必须是可接受的。
8.1.3.2 收敛性
稳定性不一定意味着收敛性。也就是说,一个策略是可接受的,并不意味着在它之后的策略是更好的。极端的情形是。所有中间策略都是一模一样的,也就是说,策略一直没有改进。这样只要初始策略是可接受的,后续的策略也自然是可接受的,但是却一直不能收敛。证明ADP的收敛需要证明以下两点:
- Value Decreasing Property:
V k + 1 ( x ) ≤ V k ( x ) , ∀ x ∈ X V^{k+1}(x)\leq V^k(x),\forall x\in\mathcal{X} Vk+1(x)≤Vk(x),∀x∈X - 最终的策略可以达到最优:
V ∞ ( x ) = V ∗ ( x ) , ∀ x ∈ X . V^\infty(x)=V^*(x),\forall x\in\mathcal{X}. V∞(x)=V∗(x),∀x∈X. 这里必须解释一下, V ∞ ( x ) V^\infty(x) V∞(x)和 V ∗ ( x ) V^*(x) V∗(x)是两个完全不同的东西。前者是从迭代的角度来说的,说的是迭代最终停止时得到的值函数。而后者是Bellman方程的解。二者的相等不是那么显然的,需要我们去证明的。
下面试分别证明之。先来证明Value Decreasing Property。
定理3:随着迭代轮数k的增长,值函数 V k ( x ) V^k(x) Vk(x)是单调递减的。即:
V k + 1 ( x ) ≤ V k ( x ) , ∀ x ∈ X . V^{k+1}(x)\leq V^k(x),\forall x\in\mathcal{X}. Vk+1(x)≤Vk(x),∀x∈X.
证明如下。假设我们当前的策略是
π
k
+
1
\pi_{k+1}
πk+1,那么我们根据这个策略与环境进行交互,产生一系列状态序列:
x
,
x
′
,
x
′
′
,
x
′
′
′
,
⋯
,
x
(
∞
)
x,x',x'',x''',\cdots,x^{(\infty)}
x,x′,x′′,x′′′,⋯,x(∞) 因为
π
k
+
1
\pi_{k+1}
πk+1是可接受的(即稳定的),因此根据我们之前的稳定性定义,随着时间t的增长,值函数是单调递减的。又因为我们之前假设过平衡态只在原点取到,因此
x
(
∞
)
=
0
x^{(\infty)}=0
x(∞)=0。由self-consistency条件,我们有:
V
k
(
x
)
=
l
(
x
,
π
k
)
+
V
k
(
f
(
x
,
π
k
)
)
.
V^k(x)=l(x,\pi_k)+V^k\big(f(x,\pi_k)\big).
Vk(x)=l(x,πk)+Vk(f(x,πk)). 又由于第k轮的PIM搜索后得到的策略
π
k
+
1
\pi_{k+1}
πk+1是最优的,因此有:
π
k
+
1
=
arg
min
u
{
l
(
x
,
u
)
+
V
k
(
f
(
x
,
u
)
)
}
.
\pi_{k+1}=\arg\min_u\{l(x,u)+V^k\big(f(x,u)\big)\}.
πk+1=argumin{l(x,u)+Vk(f(x,u))}. 由此我们有:
l
(
x
,
π
k
)
+
V
k
(
f
(
x
,
π
k
)
)
≥
l
(
x
,
π
k
+
1
)
+
V
k
(
f
(
x
,
π
k
+
1
)
)
.
l(x,\pi_k)+V^k\big(f(x,\pi_k)\big)\geq l(x,\pi_{k+1})+V^k\big(f(x,\pi_{k+1})\big).
l(x,πk)+Vk(f(x,πk))≥l(x,πk+1)+Vk(f(x,πk+1)). 再结合self-consistency条件,我们有:
V
k
(
x
)
≥
l
(
x
,
π
k
+
1
)
+
V
k
(
f
(
x
,
π
k
+
1
)
)
.
V^k(x)\geq l(x,\pi_{k+1})+V^k\big(f(x,\pi_{k+1})\big).
Vk(x)≥l(x,πk+1)+Vk(f(x,πk+1)). 再根据第k+1轮的值函数的self-consistency条件,我们有:
l
(
x
,
π
k
+
1
)
=
V
k
+
1
(
x
)
−
V
k
+
1
(
f
(
x
,
π
k
+
1
)
)
.
l(x,\pi_{k+1})=V^{k+1}(x)-V^{k+1}\big(f(x,\pi_{k+1})\big).
l(x,πk+1)=Vk+1(x)−Vk+1(f(x,πk+1)). 代入上式,我们就得到了:
V
k
(
x
)
≥
V
k
+
1
(
x
)
−
V
k
+
1
(
f
(
x
,
π
k
+
1
)
)
+
V
k
(
f
(
x
,
π
k
+
1
)
)
.
V^k(x)\geq V^{k+1}(x)-V^{k+1}\big(f(x,\pi_{k+1})\big)+V^k\big(f(x,\pi_{k+1})\big).
Vk(x)≥Vk+1(x)−Vk+1(f(x,πk+1))+Vk(f(x,πk+1)). 我们将
f
(
x
,
π
k
+
1
)
f(x,\pi_{k+1})
f(x,πk+1)记成
x
′
x'
x′,并递归的使用上面的不等式,我们就得到了:
V
k
+
1
(
x
)
−
V
k
(
x
)
≤
V
k
+
1
(
x
′
)
−
V
k
(
x
′
)
≤
⋯
≤
V
k
+
1
(
x
(
∞
)
)
−
V
k
(
x
(
∞
)
)
V^{k+1}(x)-V^k(x)\leq V^{k+1}(x^{\prime})-V^k(x^{\prime})\leq\cdots\leq V^{k+1}(x^{(\infty)})-V^k(x^{(\infty)})
Vk+1(x)−Vk(x)≤Vk+1(x′)−Vk(x′)≤⋯≤Vk+1(x(∞))−Vk(x(∞)) 由因为我们之前提到过的zero boundary condition,我们有
V
k
(
0
)
=
0
V^k(0)=0
Vk(0)=0、
V
k
+
1
(
0
)
=
0
V^{k+1}(0)=0
Vk+1(0)=0及
x
(
∞
)
=
0
x^{(\infty)}=0
x(∞)=0,因此我们有:
V
k
+
1
(
x
)
−
V
k
(
x
)
≤
V
k
+
1
(
x
(
∞
)
)
−
V
k
(
x
(
∞
)
)
=
V
k
+
1
(
0
)
−
V
k
(
0
)
=
0.
V^{k+1}(x)-V^k(x)\leq V^{k+1}(x^{(\infty)})-V^k(x^{(\infty)})=V^{k+1}(0)-V^k(0)=0.
Vk+1(x)−Vk(x)≤Vk+1(x(∞))−Vk(x(∞))=Vk+1(0)−Vk(0)=0. 即:
V
k
+
1
(
x
)
≤
V
k
(
x
)
,
∀
x
∈
X
.
V^{k+1}(x)\leq V^k(x),\forall x\in\mathcal{X}.
Vk+1(x)≤Vk(x),∀x∈X. 证毕。
定理4:最终的策略可以达到最优。即:
V ∞ ( x ) = V ∗ ( x ) , ∀ x ∈ X . V^\infty(x)=V^*(x),\forall x\in\mathcal{X}. V∞(x)=V∗(x),∀x∈X.
证明如下。当迭代停止时,相邻的两个策略是相同的,对应的值函数也是完全一样的。考虑到每轮的PIM过程和Bellman方程:
π
k
+
1
(
x
)
=
arg
min
u
{
l
(
x
,
u
)
+
V
k
(
x
′
)
}
,
∀
x
∈
X
V
∗
(
x
)
=
min
u
{
l
(
x
,
u
)
+
V
∗
(
f
(
x
,
u
)
)
}
.
\begin{aligned}\pi_{k+1}(x)&=\arg\min_u\{l(x,u)+V^k(x^{\prime})\},\forall x\in\mathcal{X}\\V^{*}(x)&=\min_{u}\big\{l(x,u)+V^{*}\big(f(x,u)\big)\big\}.\end{aligned}
πk+1(x)V∗(x)=argumin{l(x,u)+Vk(x′)},∀x∈X=umin{l(x,u)+V∗(f(x,u))}. 则易知,迭代停止时相邻的两个策略必定满足Bellman方程。因此,可证此时策略对应的值函数即为Bellman方程的解。证毕。
从上述证明中也可看出,ADP的收敛机制与之前讲过的具有discounted cost的DP的收敛机制是不同的。前者是靠utility function的正定性和环境的确定性来保证的。而且zero boundary condition也是一个很重要的技巧。而后者是靠折扣因子的 γ \gamma γ-contraction性质来保证的。
8.1.4 Inexact Policy Iteration ADP的收敛性
在我们上面的策略迭代的PEV中,每次大循环我们在理论上需要进行无数次的内层迭代才能获得值函数的估计值。但这样的计算量太大了。我们能不能像之前的RL那里说过的一样,只进行有限次数的内层迭代呢?当然可以,这就是Inexact Policy Iteration(Inexact PI)算法。IPI算法的框架如下:
在采取了上述框架后,我们每次这样更新值函数每次PEV结束后 V k ( x ) = V N k ( x ) V^k(x)=V_N^k(x) Vk(x)=VNk(x)(即迭代k轮),每次PEV开始前使用上一轮的值函数来进行初始化 V 0 k + 1 ( x ) = V k ( x ) V_{0}^{k+1}(x)=V^{k}(x) V0k+1(x)=Vk(x)。那么现在的关键问题就是这样进行迭代是否仍然收敛呢?答案是肯定的。我们下面来证明这一点。
首先,我们需要对于初始的策略做一点假设:
假设3:初始策略满足:
V 0 ( x ) ≥ 0 , V 0 ( x ) ≥ min u { l ( x , u ) + V 0 ( x ′ ) } , ∀ x ∈ X V^0(x)\geq0 ,V^0(x)\geq\min_u\{l(x,u)+V^0(x')\} ,\forall x\in X V0(x)≥0,V0(x)≥umin{l(x,u)+V0(x′)},∀x∈X
如果上面的假设成立,那么我们就有如下的定理:
定理5:在假设3成立的情况下,值函数序列 { V k ( x ) } \{V^k(x)\} {Vk(x)}是单调递减的。
证明如下。我们的核心思路是要证明以下两点
- V k ( x ) ≥ V k + 1 ( x ) V^k(x)\geq V^{k+1}(x) Vk(x)≥Vk+1(x)(核心要证明的式子)
- V k + 1 ( x ) ≥ min u { l ( x , u ) + V 1 ( f ( x , u ) ) } V^{k+1}(x)\geq\min_u\{l(x,u)+V^1\big(f(x,u)\big)\} Vk+1(x)≥minu{l(x,u)+V1(f(x,u))} (证明中的辅助项)
那么我们首先来证明k=0的情况。根据假设3,我们有:
V
0
(
x
)
≥
min
u
{
l
(
x
,
u
)
+
V
0
(
x
′
)
}
.
V^0(x)\geq\min_u\{l(x,u)+V^0\big(x'\big)\}.
V0(x)≥umin{l(x,u)+V0(x′)}. 又因为策略
π
1
\pi_1
π1是通过最小化
l
(
x
,
u
)
+
V
0
(
x
′
)
l(x,u)+V^0\big(x'\big)
l(x,u)+V0(x′)得到的,因此有:
V
0
(
x
)
≥
l
(
x
,
π
1
)
+
V
0
(
x
′
)
.
V^0(x)\geq l(x,\pi_1)+V^0\big(x'\big).
V0(x)≥l(x,π1)+V0(x′). 那么对于
V
0
(
x
′
)
V^0(x')
V0(x′),仿照上述的证明过程,我们有:
V
0
(
x
′
)
≥
l
(
x
′
,
π
1
)
+
V
0
(
x
′
′
)
.
V^0(x')\geq l(x',\pi_1)+V^0\big(x''\big).
V0(x′)≥l(x′,π1)+V0(x′′). 那么不断这样展开,我们就有:
l
(
x
,
π
1
)
+
V
0
(
x
′
)
≥
l
(
x
,
π
1
)
+
l
(
x
′
,
π
1
(
x
′
)
)
+
V
0
(
x
′
′
)
=
∑
i
=
0
1
l
(
x
(
i
)
,
π
1
(
x
(
i
)
)
)
+
V
0
(
x
(
2
)
)
≥
∑
i
=
0
1
l
(
x
(
i
)
,
π
1
(
x
(
i
)
)
)
+
l
(
x
(
2
)
,
π
1
(
x
(
2
)
)
)
+
V
0
(
x
(
3
)
)
≥
V
0
(
x
(
N
)
)
+
∑
i
=
0
N
−
1
l
(
x
(
i
)
,
π
1
(
x
(
i
)
)
)
=
V
1
(
x
)
.
\begin{aligned} l(x,\pi_1)+V^0(x^{\prime})& \geq l(x,\pi_{1})+l\big(x^{\prime},\pi_{1}(x^{\prime})\big)+V^{0}(x^{\prime\prime}) \\ &=\sum_{i=0}^1l\left(x^{(i)},\pi_1(x^{(i)})\right)+V^0(x^{(2)}) \\ &\geq\sum_{i=0}^1l\left(x^{(i)},\pi_1\big(x^{(i)}\big)\right)+l\left(x^{(2)},\pi_1\big(x^{(2)}\big)\right)+V^0\big(x^{(3)}\big) \\ &\geq V^0(x^{(N)})+\sum_{i=0}^{N-1}l\left(x^{(i)},\pi_1(x^{(i)})\right) \\ &=V^1(x). \end{aligned}
l(x,π1)+V0(x′)≥l(x,π1)+l(x′,π1(x′))+V0(x′′)=i=0∑1l(x(i),π1(x(i)))+V0(x(2))≥i=0∑1l(x(i),π1(x(i)))+l(x(2),π1(x(2)))+V0(x(3))≥V0(x(N))+i=0∑N−1l(x(i),π1(x(i)))=V1(x). 为什么
V
0
(
x
(
N
)
)
+
∑
i
=
0
N
−
1
l
(
x
(
i
)
,
π
1
(
x
(
i
)
)
)
=
V
1
(
x
)
V^0(x^{(N)})+\sum_{i=0}^{N-1}l\left(x^{(i)},\pi_1(x^{(i)})\right)=V^1(x)
V0(x(N))+∑i=0N−1l(x(i),π1(x(i)))=V1(x)呢?这个直接根据上面Inexact PI的迭代框架展开写即可看出。因此,我们就证明了第一点,即:
V
0
(
x
)
≥
l
(
x
,
π
1
)
+
V
0
(
x
′
)
≥
V
1
(
x
)
.
V^0(x)\geq l(x,\pi_1)+V^0\big(x'\big)\geq V^1(x).
V0(x)≥l(x,π1)+V0(x′)≥V1(x). 下面我们来证明第二点。首先把上述框架展开写出来,我们有:
V
1
(
x
)
=
∑
i
=
0
N
−
1
l
(
x
(
i
)
,
π
1
(
x
(
i
)
)
)
+
V
0
(
x
(
N
)
)
≥
l
(
x
,
π
1
)
+
∑
i
=
1
N
l
(
x
(
i
)
,
π
1
(
x
(
i
)
)
)
+
V
0
(
x
(
N
+
1
)
)
=
l
(
x
,
π
1
)
+
V
1
(
x
′
)
,
\begin{aligned} V^{1}(x)& =\sum_{i=0}^{N-1}l\left(x^{(i)},\pi_1(x^{(i)})\right)+V^0(x^{(N)}) \\ &\geq l(x,\pi_1)+\sum_{i=1}^Nl\left(x^{(i)},\pi_1(x^{(i)})\right)+V^0(x^{(N+1)}) \\ &=l(x,\pi_1)+V^1(x^{\prime}), \end{aligned}
V1(x)=i=0∑N−1l(x(i),π1(x(i)))+V0(x(N))≥l(x,π1)+i=1∑Nl(x(i),π1(x(i)))+V0(x(N+1))=l(x,π1)+V1(x′), 这个式子实际上就是
V
1
(
x
)
≥
l
(
x
,
π
1
)
+
V
1
(
x
′
)
V^{1}(x)\geq l(x,\pi_1)+V^1(x^{\prime})
V1(x)≥l(x,π1)+V1(x′)。可能大家会疑惑,这不就是self-consistency条件吗?但是为什么这里的等号变成了不等号呢?这是因为我们这里的迭代是Inexact PI,因此不能保证self-consistency条件的成立。现在我们来看看这个式子怎么证明的。上式最关键的就是右边第一式到右边第二式。去掉相同项之后,其实就是证明
V
0
(
x
(
N
)
)
≥
l
(
x
(
N
)
,
π
1
(
x
(
N
)
)
)
+
V
0
(
x
(
N
+
1
)
)
V^0(x^{(N)})\geq l(x^{(N)},\pi_1(x^{(N)}))+V^0(x^{(N+1)})
V0(x(N))≥l(x(N),π1(x(N)))+V0(x(N+1))。那么这里根据我们的初始的假设即可得到。再有下面这个式子:
l
(
x
,
π
1
)
+
V
1
(
x
′
)
≥
min
u
{
l
(
x
,
u
)
+
V
1
(
x
′
)
}
.
l(x,\pi_1)+V^1(x')\geq\min_u\{l(x,u)+V^1(x')\}.
l(x,π1)+V1(x′)≥umin{l(x,u)+V1(x′)}. 这个式子实际上利用了PIM的机理,右边可以看成是策略
π
2
\pi_2
π2,而根据其最优性可知上式成立。综合以上两式,我们有:
V
1
(
x
)
≥
min
u
{
l
(
x
,
u
)
+
V
1
(
x
′
)
}
.
V^1(x)\geq\min_u\{l(x,u)+V^1(x')\}.
V1(x)≥umin{l(x,u)+V1(x′)}. 第二点也证明完毕。因此我们仿照上面的证明方式,递归的进行下去,就可以证明定理5,即Inexact PI的值函数是单调递减的。因此算法是收敛的。
Inexact PI的重要的超参数N的选择是一个很重要的问题。通常要结合具体问题仔细调参。常见的取值为 N = 5 ∼ 10 N=5\sim 10 N=5∼10。从Exact PI到Inexact PI的转变实际上为我们提供了一个重要的insight,即我们每轮对于值函数的估计不必做到十分精确也能保证收敛。遮掩就为我们后面使用函数近似(Function Approximation)提供了一个很好的理论保证。
8.1.5 使用函数近似的离散时间ADP
当问题规模变大时,Tabular ADP的方法就越来越不适用了。这是我们需要使用函数来近似值函数和策略,尽管这会损失一些精度。这里我们还是使用前面在讲函数近似的时候使用过的Actor-Critic框架来表述,并且我们选取的函数是神经网络。这样的近似方法也是ADP被称为Neuron Dynamic Programming的原因。
我们先来看看actor梯度的推导。这是因为在第k轮主循环时,先进行的是critic(即值函数)的更新,此时的actor(即策略)是固定的,由第k-1轮迭代所确定的。为了表述方便,我们需要把这里的critic的更新写成一个优化问题:
J
C
r
i
t
i
c
(
w
)
=
1
2
(
l
(
x
,
u
)
+
V
(
x
′
;
w
)
−
V
(
x
;
w
)
)
2
.
where
x
′
=
f
(
x
,
u
)
,
u
=
π
(
x
;
θ
)
.
\begin{gathered} J_{\mathrm{Critic}}(w)=\frac{1}{2}\big(l(x,u)+V(x';w)-V(x;w)\big)^2. \\ \text{where} \\ x^{\prime}=f(x,u), \\ u=\pi(x;\theta). \end{gathered}
JCritic(w)=21(l(x,u)+V(x′;w)−V(x;w))2.wherex′=f(x,u),u=π(x;θ). 上式实际上就利用了self-consistency条件
V
(
x
;
w
)
=
l
(
x
,
u
)
+
V
(
x
′
;
w
)
V(x;w)=l(x,u)+V(x';w)
V(x;w)=l(x,u)+V(x′;w),只不过我们把上述条件写成等式两边做差的形式并最小化这个目标函数。但是这个优化问题面临严重的问题,即极值不唯一。我们给值函数加上一个相同的常数(相当于平移,即对于值函数的所有取值都加上一个相同的常数),那么因为目标函数是做差的形式,因此仍然成立。这实际上就造成了有无穷多个极值,训练稳定性因此很差。下面是几种常见的解决方法:
- Semi-gradient:我们按照下面的semi-gradient的方式来更新值函数:
∇ J C r i t i c = ∂ J C r i t i c ∂ w = − ( l ( x , u ) + V ( x ′ ; w ) − V ( x ; w ) ) ∂ V ( x ; w ) ∂ w . \nabla J_{\mathrm{Critic}}=\frac{\partial J_{\mathrm{Critic}}}{\partial w}=-\big(l(x,u)+V(x';w)-V(x;w)\big)\frac{\partial V(x;w)}{\partial w}. ∇JCritic=∂w∂JCritic=−(l(x,u)+V(x′;w)−V(x;w))∂w∂V(x;w). 这里之所以是semi-gradient是因为我们没有考虑到 V ( x ′ ; w ) V(x';w) V(x′;w)的梯度,认为它是一个常数。这样处理之后可以稳定训练,因为上式与单步的bootstrapping方法是具有形式上的相似性的。 - 将zero boundary condition正则项加入到目标函数中:
J Critic ( w ) = 1 2 { ( l ( x , u ) + V ( x ′ ; w ) − V ( x ; w ) ) 2 + ρ V ( 0 ; w ) 2 } J_\text{Critic}(w)=\frac{1}{2}\Big\{\Big(l(x,u)+V(x';w)-V(x;w)\Big)^2+\rho V(0;w)^2\Big\} JCritic(w)=21{(l(x,u)+V(x′;w)−V(x;w))2+ρV(0;w)2} 这里的 ρ \rho ρ是一个超参数,是一个正的常数。该方法还可以与上面的semi-gradient方法结合使用。
可以看出,这里的critic gradient与之前讲过的model-free的actor-critic方法的actor gradient是很相似的,除了环境信息是怎样采样的略有不同。这里使用过一个解析模型 f ( x , u ) f(x,u) f(x,u),而model-free的方法是通过直接与环境交互来采样的。不过,因为我们采用了semi-gradient的方法,并未直接对 V ( x ′ ; w ) V(x';w) V(x′;w)求梯度,因此这里的critic gradient中没有包含环境模型的梯度。拥有模型的好处在此处还看得不是很明显,但是在下面的actor gradient中就会看得很明显了。
下面我们来看看actor gradient的推导。其对应的优化问题是:
J
A
c
t
o
r
(
θ
)
=
l
(
x
,
u
)
+
V
(
x
′
;
w
)
,
where
x
′
=
f
(
x
,
u
)
,
u
=
π
(
x
;
θ
)
,
\begin{gathered} J_{\mathrm{Actor}}(\theta)=l(x,u)+V(x';w), \\ \text{where} \\ x^{\prime}=f(x,u), \\ u=\pi(x;\theta), \end{gathered}
JActor(θ)=l(x,u)+V(x′;w),wherex′=f(x,u),u=π(x;θ), 注意,这里在第k轮我们进行actor更新时,Critic(
V
(
⋅
;
w
)
V(\cdot;w)
V(⋅;w))是固定的,我们需要更新的是actor(
π
(
⋅
;
θ
)
\pi(\cdot;\theta)
π(⋅;θ))的参数
θ
\theta
θ。Actor gradient的推导如下:
∇
J
A
c
t
o
r
=
∂
J
A
c
t
o
r
∂
θ
=
∂
u
T
∂
θ
∂
l
∂
u
+
∂
u
T
∂
θ
∂
x
′
∂
u
∂
V
∂
x
′
=
∂
π
T
(
x
;
θ
)
∂
θ
(
∂
l
(
x
,
u
)
∂
u
+
∂
f
T
(
x
,
u
)
∂
u
∂
V
(
x
′
;
w
)
∂
x
′
)
.
\begin{aligned} \nabla J_{\mathrm{Actor}}& =\frac{\partial J_{\mathrm{Actor}}}{\partial\theta}=\frac{\partial u^{\mathrm{T}}}{\partial\theta}\frac{\partial l}{\partial u}+\frac{\partial u^{\mathrm{T}}}{\partial\theta}\frac{\partial x^{\prime}}{\partial u}\frac{\partial V}{\partial x^{\prime}} \\ &=\frac{\partial\pi^{\mathrm{T}}(x;\theta)}{\partial\theta}\biggl(\frac{\partial l(x,u)}{\partial u}+\frac{\partial f^{\mathrm{T}}(x,u)}{\partial u}\frac{\partial V(x^{\prime};w)}{\partial x^{\prime}}\biggr). \end{aligned}
∇JActor=∂θ∂JActor=∂θ∂uT∂u∂l+∂θ∂uT∂u∂x′∂x′∂V=∂θ∂πT(x;θ)(∂u∂l(x,u)+∂u∂fT(x,u)∂x′∂V(x′;w)). 注意,这里的
u
=
π
(
x
;
θ
)
u=\pi(x;\theta)
u=π(x;θ),
x
′
=
f
(
x
,
u
)
x^{\prime}=f(x,u)
x′=f(x,u)。上述推导使用高数中学过的链式法则即可轻松得到。这里我们就可以看出具有模型的好处了。这里的模型不仅包括环境模型
f
(
x
,
u
)
f(x,u)
f(x,u),还包括reward signal
l
(
x
,
u
)
l(x,u)
l(x,u)。我们在上述梯度中反复利用这两者的梯度,从而极大的减少了与环境交互带来的巨大的计算量,并增加了精度(只要模型足够准确)。下面我们给出整个算法的伪代码:
这里需要做几点说明:
- Use environment model:注意这里我们每轮主循环的数据集大小为M。且这里的数据集与我们之前在model-free的actor-critic中的数据集是不同的,这里因为不用于环境交互而依靠模型,因此数据集每条数据的构成也是一些后面要用到的梯度项。
- n a n_a na和 n c n_c nc:与我们之前在model-free的actor-critic中的 n a n_a na和 n c n_c nc的定义是一样的,即每轮主循环中的actor和critic的更新次数。更多的更新次数意味着更多的计算量,但是也意味着更高的精度。还有一种极端的情况是 n a = n c = 1 n_a=n_c=1 na=nc=1,即每轮主循环只进行一次actor和critic的更新。这样虽然损失了一些精度,但是大大减少了计算量。并且可以证明,这样并不会影响算法的收敛性。
8.2 连续时间、无限视野(Continuous-time, Infinite-horizon)的ADP
8.2.1 问题建模及Hamilton-Jacobi-Bellman(HJB)方程
在实际问题中,很多时候我们要处理的问题是连续时间的。连续时间的问题与之前讲的离散时间问题有很强的联系。概括点来说,就是把求和变成积分,差分变成求导,差分方程变成微分方程。下面我们来看看连续时间的问题具体是怎么建模的。
定义2:连续时间、无限视野的ADP问题如下定义:
min u ( τ ) , τ ∈ [ t , ∞ ) V ( x ( t ) ) = ∫ t ∞ l ( x ( τ ) , u ( τ ) ) d τ , s.t. x ˙ ( t ) = f ( x ( t ) , u ( t ) ) , \min_{u(\tau),\tau\in[t,\infty)}V\big(x(t)\big)=\int_t^\infty l\big(x(\tau),u(\tau)\big) \mathrm{d}\tau,\\\text{s.t.}\\\dot{x}(t)=f\big(x(t),u(t)\big), u(τ),τ∈[t,∞)minV(x(t))=∫t∞l(x(τ),u(τ))dτ,s.t.x˙(t)=f(x(t),u(t)),
这里的 V ( ⋅ ) V(\cdot) V(⋅)是代价函数(或按照RL的习惯称之为值函数),且在原点取到0( V ( 0 ) = 0 V(0)=0 V(0)=0)。 l ( x , u ) l(x,u) l(x,u)是utility函数,它是正定的,除了在原点(0, 0)处之外处处大于零。环境模型 f ( x , u ) f(x,u) f(x,u)与离散的时候稍有不同,它不像其对应的离散版本给出的是下一个状态,而是状态的导数(即状态的变化率)。 f ( x , u ) f(x,u) f(x,u)在原点这个平衡态也取到0。上面的定义给出的值函数满足一个被称为Hamilton-Jacobi-Bellman(HJB)方程的微分方程,该方程是离散时间Bellman方程的连续时间版本。一旦我们求出了这个方程的解,就可以通过最小化哈密顿量来得到最优的控制策略。下面我们来看看HJB方程是怎么推导的。
对定义2中的关于值函数的积分式两侧求导,并注意到右边时间t在下限上,求导之后有个负号,那么就有:
∂
V
(
x
)
∂
x
T
f
(
x
,
u
)
=
−
l
(
x
,
u
)
.
\frac{\partial V(x)}{\partial x^\mathrm{T}}f(x,u)=-l(x,u).
∂xT∂V(x)f(x,u)=−l(x,u). 这里的
∂
V
(
x
)
/
∂
x
T
∈
R
1
×
n
\partial V(x)/{\partial x^\mathrm{T}}\in\mathbb{R}^{1\times n}
∂V(x)/∂xT∈R1×n是一个行向量。为了下面的推导方便,我们还需要作以下几点假设,比如值函数
V
(
x
(
t
)
)
V(x(t))
V(x(t))关于状态x和时间t都是连续可微的。仿照离散时的self-consistency条件,我们有:
V
(
x
(
t
)
)
=
∫
t
t
+
d
t
l
(
x
(
τ
)
,
u
(
τ
)
)
d
τ
+
V
(
x
(
t
)
+
d
x
(
t
)
)
.
V\big(x(t)\big)=\int_t^{t+\mathrm{d}t}l\big(x(\tau),u(\tau)\big)\mathrm{d}\tau+V\big(x(t)+\mathrm{d}x(t)\big).
V(x(t))=∫tt+dtl(x(τ),u(τ))dτ+V(x(t)+dx(t)). 这个式子根据我们的定义2很好得到。对上式应用Bellman最优性原理,我们有:
V
∗
(
x
(
t
)
)
=
min
t
≤
τ
≤
t
+
d
t
{
∫
t
t
+
d
t
l
(
x
(
τ
)
,
u
(
τ
)
)
d
τ
+
V
∗
(
x
(
t
)
+
d
x
(
t
)
)
}
.
V^*\big(x(t)\big)=\min_{t\leq\tau\leq t+\mathrm{d}t}\left\{\int_t^{t+\mathrm{d}t}l\big(x(\tau),u(\tau)\big)\mathrm{d}\tau+V^*\big(x(t)+\mathrm{d}x(t)\big)\right\}.
V∗(x(t))=t≤τ≤t+dtmin{∫tt+dtl(x(τ),u(τ))dτ+V∗(x(t)+dx(t))}. 我们对于
V
∗
(
x
(
t
)
+
d
x
(
t
)
)
V^*\big(x(t)+\mathrm{d}x(t)\big)
V∗(x(t)+dx(t))在
x
(
t
)
x(t)
x(t)处进行泰勒展开:
V
∗
(
x
(
t
)
+
d
x
(
t
)
)
=
V
∗
(
x
(
t
)
)
+
∂
V
∗
(
x
(
t
)
)
∂
x
T
(
t
)
d
x
(
t
)
+
O
(
d
x
(
t
)
)
.
V^*\big(x(t)+\mathrm{d}x(t)\big)=V^*\big(x(t)\big)+\frac{\partial V^*\big(x(t)\big)}{\partial x^\mathrm{T}(t)}\mathrm{d}x(t)+\mathcal{O}\big(\mathrm{d}x(t)\big).
V∗(x(t)+dx(t))=V∗(x(t))+∂xT(t)∂V∗(x(t))dx(t)+O(dx(t)). 再利用
d
x
(
t
)
=
x
˙
(
t
)
d
t
,
d
t
→
0
,
τ
→
t
,
\mathrm{d}x(t)=\dot{x}(t)\mathrm{d}t,\mathrm{d}t{\rightarrow}0,\tau{\rightarrow}t,
dx(t)=x˙(t)dt,dt→0,τ→t,,我们有:
V
∗
(
x
(
t
)
)
=
min
u
(
t
)
{
l
(
x
(
t
)
,
u
(
t
)
)
d
t
+
∂
V
∗
(
x
(
t
)
)
∂
x
T
x
˙
(
t
)
d
t
+
V
∗
(
x
(
t
)
)
}
.
V^*\big(x(t)\big)=\min_{u(t)}\bigg\{l\big(x(t),u(t)\big)\mathrm{d}t+\frac{\partial V^*\big(x(t)\big)}{\partial x^\mathrm{T}}\dot{x}(t)\mathrm{d}t+V^*\big(x(t)\big)\bigg\}.
V∗(x(t))=u(t)min{l(x(t),u(t))dt+∂xT∂V∗(x(t))x˙(t)dt+V∗(x(t))}. 又因为
V
∗
(
x
(
t
)
)
V^*\big(x(t)\big)
V∗(x(t))与动作u(t)无关,因此左右两边可以消掉
V
∗
(
x
(
t
)
)
V^*\big(x(t)\big)
V∗(x(t)),我们就得到了HJB方程:
定义3:HJB方程如下:
min u ( t ) { l ( x ( t ) , u ( t ) ) + ∂ V ∗ ( x ( t ) ) ∂ x T f ( x ( t ) , u ( t ) ) } = 0. \min_{u(t)}\left\{l\big(x(t),u(t)\big)+\frac{\partial V^*\big(x(t)\big)}{\partial x^\mathrm{T}}f\big(x(t),u(t)\big)\right\}=0. u(t)min{l(x(t),u(t))+∂xT∂V∗(x(t))f(x(t),u(t))}=0.
接下来我们根据上述HJB方程来定义一个哈密顿量:
定义4:哈密顿量如下:
H ( x , u , ∂ V ∗ ( x ) ∂ x ) = d e f l ( x , u ) + ∂ V ∗ ( x ) ∂ x T f ( x , u ) . H\left(x,u,\frac{\partial V^*(x)}{\partial x}\right)\overset{\mathrm{def}}{\operatorname*{=}}l(x,u)+\frac{\partial V^*(x)}{\partial x^\mathrm{T}}f(x,u). H(x,u,∂x∂V∗(x))=defl(x,u)+∂xT∂V∗(x)f(x,u).
有了HJB方程和哈密顿量,我们就可以先通过求解HJB方程得到最优的值函数,再通过哈密顿量根据下式来得到最优的控制策略:
π
∗
(
x
)
=
arg
min
u
H
(
x
,
u
,
∂
V
∗
(
x
)
∂
x
)
\pi^*(x)=\arg\min_uH\bigg(x,u,\frac{\partial V^*(x)}{\partial x}\bigg)
π∗(x)=arguminH(x,u,∂x∂V∗(x))
由于实际问题的复杂性,HJB方程很难直接求解。但是它却提供了一个检验策略最优性的方法。这种方法的一个缺点在于HJB方程只接受足够光滑的值函数,这在一些特殊的情况下是很难满足的。
8.2.2 连续时间ADP的框架
HJB方程是一个高度非线性的偏微分方程(PDE),而且通常用于求解PDE的三种方法都不适用于HJB方程。因此,这里我们用连续时间的ADP框架来求解HJB方程。ADP的框架如下:
这也是一个两步的迭代框架。下面我们来分别看看这两步的具体内容:
- PEV:这一步与我们之前在model-free的框架里讲的PEV相对应。它的本质是在策略 π k \pi_k πk固定的情况下,通过求解一个关于值函数 V ( x ) V(x) V(x)的微分方程。
- PIM:这一步与我们之前在model-free的框架里讲的PIM相对应。这步的本质是在我们本轮值函数已经更新完成的情况下找到一个能最小化哈密顿量的策略 π ′ \pi' π′。
下面我们在从宏观的角度来看一下这个框架为什么能求解HJB方程。再回顾一下HJB方程:
min
u
(
t
)
{
l
(
x
(
t
)
,
u
(
t
)
)
+
∂
V
∗
(
x
(
t
)
)
∂
x
T
f
(
x
(
t
)
,
u
(
t
)
)
}
=
0.
\min_{u(t)}\left\{l\big(x(t),u(t)\big)+\frac{\partial V^*\big(x(t)\big)}{\partial x^\mathrm{T}}f\big(x(t),u(t)\big)\right\}=0.
u(t)min{l(x(t),u(t))+∂xT∂V∗(x(t))f(x(t),u(t))}=0. 直接求解HJB方程的难度是很高的,这个微分方程同时具有min符号和多个与x有关的函数(
π
∗
(
x
)
\pi^*(x)
π∗(x)和
V
∗
(
x
)
V^*(x)
V∗(x))。但是,PEV过程首先把min符号去掉,且固定了策略
π
\pi
π,使得HJB方程变成了一个关于值函数
V
(
x
)
V(x)
V(x)的简单的微分方程;而PIM过程则是在固定了值函数
V
(
x
)
V(x)
V(x)的情况下,找到一个能最小化哈密顿量的策略
π
\pi
π,这就是一个简单地优化问题。另外注意,
V
(
0
)
=
0
V(0)=0
V(0)=0是连续时间ADP框架中一个很重要的条件。它的作用可以理解为给第一步PEV求解微分方程提供了一个初始条件。根据高数中求解微分方程的知识可知,如果不给出初始条件,那么微分方程的解是不唯一的。因此,
V
(
0
)
=
0
V(0)=0
V(0)=0是唯一确定本轮的值函数的一个很重要的条件。
8.2.3 连续时间ADP的收敛性和稳定性
正如我们在上一节离散时间的ADP中所讲的,这里我们也需要讨论连续时间的ADP的收敛性和稳定性。这里大体的证明思路与离散那时候基本上一致,稳定性就是证明当前策略能够随着时间的推移使得被控对象趋于一个稳定的状态;而收敛性就是证明策略能够随着迭代轮数的增长而达到最优。不过因为这里我们处理的是连续的情况,因此具体的证明方法会有所不同。
8.2.3.1 稳定性
这里我们证明的方法就是现代控制理论里面的李雅普诺夫第二方法,即找到一个Lyapunov函数,它本身是正定的,且它的导数是负定的。这里我们选取值函数 V ( x ) V(x) V(x)作为Lyapunov函数,那么根据我们之前的定义, V ( x ) V(x) V(x)本来就是正定的。那么证明稳定性,就变成了如下的问题:
稳定性:选取值函数 V ( x ) V(x) V(x)作为Lyapunov函数,证明其导数是负定的:
d V ( x ) d t ≤ 0 , ∀ x ∈ X . \frac{\mathrm{d}V(x)}{\mathrm{d}t}\leq0,\forall x\in X. dtdV(x)≤0,∀x∈X.
这里的证明思路与离散时的情况相似,核心是要证明递归稳定性。首先,我们需要找到一个可接受度厄初始策略 π 0 \pi_0 π0,其对应的值函数对于所有的 x ∈ X x\in\mathcal{X} x∈X都是有限值。下面我们来证明这个定理:
定理6:如果初始策略 π 0 \pi_0 π0是可接受的,那么根据连续时间的ADP框架,迭代过程中包含最终策略的任何中间策略都是可接受的。
证明如下。我们的核心是证明,对于任意两个相邻的策略
π
k
\pi_k
πk和
π
k
+
1
\pi_{k+1}
πk+1,如果
π
k
\pi_k
πk是可接受的,那么
π
k
+
1
\pi_{k+1}
πk+1也是可接受的。在迭代框架的第k次迭代中,在进行PEV之前,策略为
π
k
\pi_k
πk,值函数为
V
k
−
1
(
x
)
V^{k-1}(x)
Vk−1(x)。在PEV后,值函数变为
V
k
(
x
)
V^k(x)
Vk(x)。在进行PIM之后,策略变为
π
k
+
1
\pi_{k+1}
πk+1。那么根据迭代框架,策略
π
k
+
1
\pi_{k+1}
πk+1是通过最小化哈密顿量得到的,即:
π
k
+
1
=
arg
min
u
{
l
(
x
,
u
)
+
∂
V
k
(
x
)
∂
x
T
f
(
x
,
u
)
}
.
\pi_{k+1}=\arg\min_u\left\{l(x,u)+\frac{\partial V^k(x)}{\partial x^\mathrm{T}}f(x,u)\right\}.
πk+1=argumin{l(x,u)+∂xT∂Vk(x)f(x,u)}. 那么我们可以得到:
H
(
x
,
π
k
+
1
,
∂
V
k
(
x
)
∂
x
)
=
min
u
{
l
(
x
,
u
)
+
∂
V
k
(
x
)
∂
x
T
f
(
x
,
u
)
}
.
H\left(x,\pi_{k+1},\frac{\partial V^k(x)}{\partial x}\right)=\min_u\left\{l(x,u)+\frac{\partial V^k(x)}{\partial x^\mathrm{T}}f(x,u)\right\}.
H(x,πk+1,∂x∂Vk(x))=umin{l(x,u)+∂xT∂Vk(x)f(x,u)}. 那么同样易知,策略
π
k
\pi_k
πk肯定不是最优的,而且根据PEV过程,我们知道其满足:
l
(
x
,
π
k
)
+
∂
V
k
(
x
)
∂
x
T
f
(
x
,
π
k
)
=
0
l(x,\pi_k)+\frac{\partial V^k(x)}{\partial x^\mathrm{T}}f(x,\pi_k)=0
l(x,πk)+∂xT∂Vk(x)f(x,πk)=0 那么我们就有:
H
(
x
,
π
k
+
1
,
∂
V
k
(
x
)
∂
x
)
=
min
u
{
l
(
x
,
u
)
+
∂
V
k
(
x
)
∂
x
T
f
(
x
,
u
)
}
≤
H
(
x
,
π
k
,
∂
V
k
(
x
)
∂
x
)
=
l
(
x
,
π
k
)
+
∂
V
k
(
x
)
∂
x
T
f
(
x
,
π
k
)
=
0
\begin{aligned} H\left(x,\pi_{k+1},\frac{\partial V^k(x)}{\partial x}\right)&=\min_u\left\{l(x,u)+\frac{\partial V^k(x)}{\partial x^\mathrm{T}}f(x,u)\right\}\\\leq &H\left(x,\pi_{k},\frac{\partial V^k(x)}{\partial x}\right)=l(x,\pi_k)+\frac{\partial V^k(x)}{\partial x^\mathrm{T}}f(x,\pi_k)=0 \end{aligned}
H(x,πk+1,∂x∂Vk(x))≤=umin{l(x,u)+∂xT∂Vk(x)f(x,u)}H(x,πk,∂x∂Vk(x))=l(x,πk)+∂xT∂Vk(x)f(x,πk)=0
即:
H
(
x
,
π
k
+
1
,
∂
V
k
(
x
)
∂
x
)
≤
0.
H\left(x,\pi_{k+1},\frac{\partial V^k(x)}{\partial x}\right)\leq0.
H(x,πk+1,∂x∂Vk(x))≤0. 又因为:
d
V
k
(
x
)
d
t
=
∂
V
k
(
x
)
∂
x
T
x
˙
=
∂
V
k
(
x
)
∂
x
T
f
(
x
,
u
)
=
H
(
x
,
π
k
+
1
,
∂
V
k
(
x
)
∂
x
T
)
−
l
(
x
,
π
k
+
1
)
≤
0
−
l
(
x
,
π
k
+
1
)
≤
0.
\begin{aligned} \frac{\mathrm{d}V^k(x)}{\mathrm{d}t}&=\frac{\partial V^k(x)}{\partial x^\mathrm{T}}\dot{x}\\ &=\frac{\partial V^k(x)}{\partial x^\mathrm{T}}f(x,u)\\ &=H\left(x,\pi_{k+1},\frac{\partial V^k(x)}{\partial x^\mathrm{T}}\right)-l(x,\pi_{k+1})\\ &\leq0-l(x,\pi_{k+1})\\ &\leq0. \end{aligned}
dtdVk(x)=∂xT∂Vk(x)x˙=∂xT∂Vk(x)f(x,u)=H(x,πk+1,∂xT∂Vk(x))−l(x,πk+1)≤0−l(x,πk+1)≤0. 因此,我们知道作为值函数的
V
k
(
x
)
V^k(x)
Vk(x)的导数是负定的。再结合其本身是正定的,且等号只在本轮PEV停止时成立,且在平衡态(即原点)处取到0,那么根据李雅普诺夫第二方法,我们就证明了策略
π
k
+
1
\pi_{k+1}
πk+1可以使得系统渐进稳定。证毕。
在上面的证明中,utility函数 l ( x , u ) l(x,u) l(x,u)的正定性是一个很重要的条件。这个utility函数被视为一种推广的能量函数。一个闭环系统,如果它的广义能量随着时间推移单调下降。特别的,如果这个能量函数只有一个全局最小值,那么沿着任意非稳态的解,这个广义能量函数都会下降。
8.2.3.2 收敛性
收敛性的证明与之前的离散时间的ADP的证明方法是一致的。
收敛性:证明随着迭代轮数的增长,对于任意的 x ∈ X x\in\mathcal{X} x∈X,值函数 V ( x ) V(x) V(x)的值都是单调递减的。
收敛性的证明与离散的情况还是类似,我们要证明以下定理:
定理7:随着迭代轮数k的增长,对于 x ∈ X x\in\mathcal{X} x∈X,值函数 V k ( x ) V^k(x) Vk(x)是单调递减的。即:
V k + 1 ( x ) ≤ V k ( x ) , ∀ x ∈ X V^{k+1}(x)\leq V^k(x),\forall x\in X Vk+1(x)≤Vk(x),∀x∈X
证明如下。考虑第k+1轮的PEV过程,其就是求解一个微分方程。那么其解
V
k
+
1
(
x
)
V^{k+1}(x)
Vk+1(x)必然满足:
∂
V
k
+
1
(
x
)
∂
x
T
f
(
x
,
π
k
+
1
)
+
l
(
x
,
π
k
+
1
)
=
0
\frac{\partial V^{k+1}(x)}{\partial x^\mathrm{T}}f(x,\pi_{k+1})+l(x,\pi_{k+1})=0
∂xT∂Vk+1(x)f(x,πk+1)+l(x,πk+1)=0 即:
∂
V
k
+
1
(
x
)
∂
x
T
f
(
x
,
π
k
+
1
)
=
−
l
(
x
,
π
k
+
1
)
,
\frac{\partial V^{k+1}(x)}{\partial x^\mathrm{T}}f(x,\pi_{k+1})=-l(x,\pi_{k+1}),
∂xT∂Vk+1(x)f(x,πk+1)=−l(x,πk+1), 再加上zero boundary condition,我们有:
V
k
+
1
(
0
)
=
0.
V^{k+1}(0)=0.
Vk+1(0)=0. 下面来考察第k轮的值函数
V
k
(
x
)
V^k(x)
Vk(x)和第k+1轮的值函数
V
k
+
1
(
x
)
V^{k+1}(x)
Vk+1(x)的对时间的导数。首先,由哈密顿函数的定义,我们有:
d
V
k
(
x
)
d
t
=
H
(
x
,
π
k
+
1
,
∂
V
k
(
x
)
∂
x
)
−
l
(
x
,
π
k
+
1
)
\frac{\mathrm{d}V^k(x)}{\mathrm{d}t}=H\left(x,\pi_{k+1},\frac{\partial V^k(x)}{\partial x}\right)-l(x,\pi_{k+1})
dtdVk(x)=H(x,πk+1,∂x∂Vk(x))−l(x,πk+1) 又因为我们在第8.2.3.2节已经证明了
H
(
x
,
π
k
+
1
,
∂
V
k
(
x
)
∂
x
)
≤
0
H\left(x,\pi_{k+1},\frac{\partial V^k(x)}{\partial x}\right)\leq0
H(x,πk+1,∂x∂Vk(x))≤0,因此有:
d
V
k
(
x
)
d
t
=
H
(
x
,
π
k
+
1
,
∂
V
k
(
x
)
∂
x
)
−
l
(
x
,
π
k
+
1
)
≤
−
l
(
x
,
π
k
+
1
)
,
\frac{\mathrm{d}V^k(x)}{\mathrm{d}t}=H\left(x,\pi_{k+1},\frac{\partial V^k(x)}{\partial x}\right)-l(x,\pi_{k+1})\leq-l(x,\pi_{k+1}),
dtdVk(x)=H(x,πk+1,∂x∂Vk(x))−l(x,πk+1)≤−l(x,πk+1), 这是
V
k
(
x
)
V^k(x)
Vk(x)的导数满足的关系。那么我们再来看看
V
k
+
1
(
x
)
V^{k+1}(x)
Vk+1(x)的导数。根据第k+1轮的PEV过程所满足的方程,我们有:
∂
V
k
+
1
(
x
)
∂
x
T
f
(
x
,
π
k
+
1
)
+
l
(
x
,
π
k
+
1
)
=
0
\frac{\partial V^{k+1}(x)}{\partial x^\mathrm{T}}f(x,\pi_{k+1})+l(x,\pi_{k+1})=0
∂xT∂Vk+1(x)f(x,πk+1)+l(x,πk+1)=0 又因为
d
V
k
+
1
(
x
)
d
t
=
∂
V
k
+
1
(
x
)
∂
x
T
f
(
x
,
π
k
+
1
)
\frac{\mathrm{d}V^{k+1}(x)}{\mathrm{d}t}=\frac{\partial V^{k+1}(x)}{\partial x^\mathrm{T}}f(x,\pi_{k+1})
dtdVk+1(x)=∂xT∂Vk+1(x)f(x,πk+1),因此有:
d
V
k
+
1
(
x
)
d
t
=
∂
V
k
+
1
(
x
)
∂
x
T
f
(
x
,
π
k
+
1
)
=
−
l
(
x
,
π
k
+
1
)
.
\frac{\mathrm{d}V^{k+1}(x)}{\mathrm{d}t}=\frac{\partial V^{k+1}(x)}{\partial x^\mathrm{T}}f(x,\pi_{k+1})=-l(x,\pi_{k+1}).
dtdVk+1(x)=∂xT∂Vk+1(x)f(x,πk+1)=−l(x,πk+1). 所以:
d
V
k
(
x
)
d
t
≤
d
V
k
+
1
(
x
)
d
t
≤
0.
\frac{\mathrm{d}V^k(x)}{\mathrm{d}t}\leq\frac{\mathrm{d}V^{k+1}(x)}{\mathrm{d}t}\leq0.
dtdVk(x)≤dtdVk+1(x)≤0. 根据牛顿——莱布尼茨公式并移向得到:
V
(
x
(
t
)
)
=
V
(
x
(
∞
)
)
−
∫
t
∞
d
V
(
x
(
τ
)
)
d
τ
d
τ
.
V\big(x(t)\big)=V\big(x(\infty)\big)-\int_t^\infty\frac{\mathrm{d}V\big(x(\tau)\big)}{\mathrm{d}\tau}\mathrm{d}\tau.
V(x(t))=V(x(∞))−∫t∞dτdV(x(τ))dτ. 又因为根据我们刚才已经证明了稳定性,因此我们有
l
i
m
t
→
∞
x
(
t
)
=
0
lim_{t\rightarrow\infty}x(t)=0
limt→∞x(t)=0再结合zero boundary condition的
V
k
(
x
(
∞
)
)
=
V
k
+
1
(
x
(
∞
)
)
=
0
V^k\big(x(\infty)\big)=V^{k+1}\big(x(\infty)\big)=0
Vk(x(∞))=Vk+1(x(∞))=0,我们有:
V
k
(
x
(
t
)
)
=
−
∫
t
∞
d
V
k
(
x
(
τ
)
)
d
τ
d
τ
V
k
+
1
(
x
(
t
)
)
=
−
∫
t
∞
d
V
k
+
1
(
x
(
τ
)
)
d
τ
d
τ
\begin{aligned} V^k\big(x(t)\big)&=-\int_t^\infty\frac{\mathrm{d}V^k\big(x(\tau)\big)}{\mathrm{d}\tau}\mathrm{d}\tau\\ V^{k+1}\big(x(t)\big)&=-\int_t^\infty\frac{\mathrm{d}V^{k+1}\big(x(\tau)\big)}{\mathrm{d}\tau}\mathrm{d}\tau \end{aligned}
Vk(x(t))Vk+1(x(t))=−∫t∞dτdVk(x(τ))dτ=−∫t∞dτdVk+1(x(τ))dτ 又因为
d
V
k
(
x
)
d
t
≤
d
V
k
+
1
(
x
)
d
t
≤
0
\frac{\mathrm{d}V^k(x)}{\mathrm{d}t}\leq\frac{\mathrm{d}V^{k+1}(x)}{\mathrm{d}t}\leq0
dtdVk(x)≤dtdVk+1(x)≤0恒成立,因此积分之后该关系仍然保持,因此:
V
k
+
1
(
x
)
≤
V
k
(
x
)
,
∀
x
∈
X
.
V^{k+1}(x)\leq V^k(x),\forall x\in X.
Vk+1(x)≤Vk(x),∀x∈X. 证毕。
8.2.4 连续时间ADP的函数近似
上面我们讲过的方法针对的还是tabular的情况,但是在实际问题中,我们常常需要使用函数近似。这里我们就以actor-critic框架为例,来讲解如何使用函数近似来求解连续时间的ADP问题。
首先来看看critic的梯度的推导。我们先来看看critic的优化问题:
J
Critic
(
w
)
=
1
2
(
H
2
(
x
,
u
,
∂
V
(
x
;
w
)
∂
x
)
+
ρ
V
2
(
0
;
w
)
)
.
J_\text{Critic}(w)=\frac12\Bigg(H^2\Bigg(x,u,\frac{\partial V(x;w)}{\partial x}\Bigg)+\rho V^2(0;w)\Bigg).
JCritic(w)=21(H2(x,u,∂x∂V(x;w))+ρV2(0;w)). 根据8.2.2节讲过的ADP的迭代框架,critic部分实际上就是解一个哈密顿量等于0的方程。那么我们就可以把对应的优化问题写成最小化这个哈密顿量的形式,并且为了保证非负性,使用了平方项的形式。然后为了保证解的唯一性,我们加入了一个正的常数
ρ
V
2
(
0
;
w
)
\rho V^2(0;w)
ρV2(0;w)。这个项实际上就是为了保证zero boundary condition成立,即
V
(
0
)
=
0
V(0)=0
V(0)=0。我们对上述目标函数求梯度,并结合复合函数求导法则及
H
(
x
,
u
,
∂
V
(
x
;
w
)
/
∂
x
)
=
l
(
x
,
u
)
+
∂
V
(
x
;
w
)
/
∂
x
T
f
(
x
,
u
)
H(x,u,\partial V(x;w)/\partial x)=l(x,u)+\partial V(x;w)/\partial x^\mathrm{T}f(x,u)
H(x,u,∂V(x;w)/∂x)=l(x,u)+∂V(x;w)/∂xTf(x,u),我们有:
∇
J
C
r
i
t
i
c
=
H
(
x
,
u
,
∂
V
∂
x
)
∂
2
V
(
x
;
w
)
∂
x
T
∂
w
f
(
x
,
u
)
+
ρ
∂
V
(
0
;
w
)
∂
w
,
∂
2
V
∂
x
T
∂
w
=
d
e
f
∂
∂
w
(
∂
V
∂
x
T
)
∈
R
l
w
×
n
.
\nabla J_{\mathrm{Critic}}=H\left(x,u,\frac{\partial V}{\partial x}\right)\frac{\partial^{2}V(x;w)}{\partial x^{\mathrm{T}}\partial w}f(x,u)+\rho\frac{\partial V(0;w)}{\partial w},\\\frac{\partial^{2}V}{\partial x^{\mathrm{T}}\partial w}\overset{\mathrm{def}}{\operatorname*{=}}\frac{\partial}{\partial w}\Big(\frac{\partial V}{\partial x^{\mathrm{T}}}\Big)\in\mathbb{R}^{l_{w}\times n}.
∇JCritic=H(x,u,∂x∂V)∂xT∂w∂2V(x;w)f(x,u)+ρ∂w∂V(0;w),∂xT∂w∂2V=def∂w∂(∂xT∂V)∈Rlw×n. 这里的
∇
J
C
r
i
t
i
c
∈
R
l
w
\nabla J_{\mathrm{Critic}}\in\mathbb{R}^{l_{w}}
∇JCritic∈Rlw被称作Critic Gradient。但是,这里有一个问题,就是要计算二阶导数,这带来了很大的计算量。一种改进的方法是Dual Heuristic Programming(DHP)方法,它使用神经网络来近似值函数的一阶导而不是值函数本身,这可以有效的减少计算量。
再来看看actor的梯度的推导。我们先来看看actor的优化问题,这其实就不用说了吧,因为在8.2.2节的ADP框架中,我们已经讲过了,actor的优化问题就是在值函数固定的情况下最小化哈密顿量,即:
J
A
c
t
o
r
(
θ
)
=
l
(
x
,
π
(
x
;
θ
)
)
+
∂
V
(
x
;
w
)
∂
x
T
f
(
x
,
π
(
x
;
θ
)
)
J_{\mathrm{Actor}}(\theta)=l\big(x,\pi(x;\theta)\big)+\frac{\partial V(x;w)}{\partial x^\mathrm{T}}f\big(x,\pi(x;\theta)\big)
JActor(θ)=l(x,π(x;θ))+∂xT∂V(x;w)f(x,π(x;θ)) 求梯度得到:
∇
J
A
c
t
o
r
=
∂
π
T
(
x
;
θ
)
∂
θ
(
∂
l
(
x
,
u
)
∂
u
+
∂
f
T
(
x
,
u
)
∂
u
∂
V
(
x
;
w
)
∂
x
)
\nabla J_{\mathrm{Actor}}=\frac{\partial\pi^{\mathrm{T}}(x;\theta)}{\partial\theta}\left(\frac{\partial l(x,u)}{\partial u}+\frac{\partial f^{\mathrm{T}}(x,u)}{\partial u}\frac{\partial V(x;w)}{\partial x}\right)
∇JActor=∂θ∂πT(x;θ)(∂u∂l(x,u)+∂u∂fT(x,u)∂x∂V(x;w)) 这里的
∇
J
A
c
t
o
r
∈
R
l
θ
\nabla J_{\mathrm{Actor}}\in\mathbb{R}^{l_{\theta}}
∇JActor∈Rlθ被称作Actor Gradient。
8.2.5 连续时间的Linear Quadratic控制
对于一个线性系统的最优控制对于理解ADP的理论上的完备性是很重要的。尽管很多的实际问题是非线性的,但是它们都可以在一个平衡态的邻域内进行线性化来转化为线性系统。在有关的最优控制理论中,Linear Quadratic Regulator(LQR)是其中最重要的一个方法。它具有简洁的线性形式、具有收敛性的保障以及易于根据具体的问题进行部署。下面我们先来看看LQR的具体形式,再使用上面说过的ADP的框架来分析LQR问题。
首先,LQR需要定义一个cost function:
V
(
x
(
t
)
)
=
∫
t
∞
(
x
T
(
τ
)
Q
x
(
τ
)
+
u
T
(
τ
)
R
u
(
τ
)
)
d
τ
,
s.t.
x
˙
(
t
)
=
A
x
(
t
)
+
B
u
(
t
)
,
V\big(x(t)\big)=\int_t^\infty\big(x^\mathrm{T}(\tau)Qx(\tau)+u^\mathrm{T}(\tau)Ru(\tau)\big)\mathrm{d}\tau,\\\text{s.t.}\\\dot{x}(t)=Ax(t)+Bu(t),
V(x(t))=∫t∞(xT(τ)Qx(τ)+uT(τ)Ru(τ))dτ,s.t.x˙(t)=Ax(t)+Bu(t),
这里的
u
(
t
)
u(t)
u(t)是控制输入,
x
(
t
)
x(t)
x(t)是状态,矩阵A和B的组合可以使得系统稳定下来。
Q
≥
0
Q\geq0
Q≥0和
R
>
0
R>0
R>0是对称矩阵,分别是状态和控制输入的权重。我们的目标是找到一个最优的控制策略
π
∗
(
x
)
\pi^*(x)
π∗(x),使得
V
(
x
(
t
)
)
V\big(x(t)\big)
V(x(t))最小。经过研究发现,这个问题与求解Riccati方程有着很深的内在关系。首先我们根据Riccati方程,求解出一个最优的矩阵
P
∗
P^*
P∗:
Q
+
P
∗
A
+
A
T
P
∗
−
P
∗
B
R
−
1
B
T
P
∗
=
0
Q+P^*A+A^\mathrm{T}P^*-P^*BR^{-1}B^\mathrm{T}P^*=0
Q+P∗A+ATP∗−P∗BR−1BTP∗=0 可以证明,在我们之前假设的条件下(即矩阵A和B的组合可以使得系统稳定),则上述Riccati方程的解是唯一且正定的。那么求解出
P
∗
P^*
P∗之后,我们就可以得到最优的控制策略:
u
=
−
1
2
R
−
1
B
T
∂
V
∗
(
x
)
∂
x
=
−
R
−
1
B
T
P
∗
x
u=-\frac12R^{-1}B^\mathrm{T}\frac{\partial V^*(x)}{\partial x}=-R^{-1}B^\mathrm{T}P^*x
u=−21R−1BT∂x∂V∗(x)=−R−1BTP∗x 同时最优的cost function也可使用
P
∗
P^*
P∗来表示:
V
∗
(
x
)
=
x
T
P
∗
x
V^*(x)=x^\mathrm{T}P^*x
V∗(x)=xTP∗x
下面,我们来看看如何使用ADP的框架来求解LQR问题。我们把按照ADP框架迭代,在第k轮主循环时的cost function使用二次型来参数化:
V
k
(
x
)
=
x
T
P
k
x
,
V^k(x)=x^\mathrm{T}P^kx,
Vk(x)=xTPkx, 这里的
P
k
P^k
Pk就是我们之前框架中的值函数的参数
w
w
w。那么在第k轮主循环的PEV过程中,可以这样来更新:
P
j
+
1
k
=
P
j
k
−
α
H
(
x
,
π
k
,
∂
V
(
x
;
P
j
k
)
∂
x
)
x
f
T
=
P
j
k
−
α
(
x
T
Q
x
+
u
T
R
u
+
2
f
T
P
j
k
x
)
x
f
T
\begin{aligned} P_{j+1}^k& =P_j^k-\alpha H\left(x,\pi_k,\frac{\partial V\left(x;P_j^k\right)}{\partial x}\right)xf^\mathrm{T} \\ &=P_{j}^{k}-\alpha\big(x^{\mathrm{T}}Qx+u^{\mathrm{T}}Ru+2f^{\mathrm{T}}P_{j}^{k}x\big)xf^{\mathrm{T}} \end{aligned}
Pj+1k=Pjk−αH(x,πk,∂x∂V(x;Pjk))xfT=Pjk−α(xTQx+uTRu+2fTPjkx)xfT 这里的更新公式实际上就是用了我们在刚才的ADP框架讲过的Critc的梯度的推导(
∇
J
C
r
i
t
i
c
=
H
(
x
,
u
,
∂
V
∂
x
)
∂
2
V
(
x
;
w
)
∂
x
T
∂
w
f
(
x
,
u
)
+
ρ
∂
V
(
0
;
w
)
∂
w
\nabla J_{\mathrm{Critic}}=H\left(x,u,\frac{\partial V}{\partial x}\right)\frac{\partial^2V(x;w)}{\partial x^\mathrm{T}\partial w}f(x,u)+\rho\frac{\partial V(0;w)}{\partial w}
∇JCritic=H(x,u,∂x∂V)∂xT∂w∂2V(x;w)f(x,u)+ρ∂w∂V(0;w),只不过这里我们不含后面含
ρ
\rho
ρ的那一项,并且这里涉及到一些矩阵求导的运算,这里就不展开了)。那么当PEV的迭代步数趋于无穷大时,我们就可以得到最优的
P
k
P^k
Pk。之后,在PIM过程中,可以直接得到一个解析解形式的最优控制策略:
π
k
+
1
(
x
)
=
−
1
2
R
−
1
B
T
∂
V
k
(
x
)
∂
x
=
−
R
−
1
B
T
P
k
x
.
\pi_{k+1}(x)=-\frac12R^{-1}B^\mathrm{T}\frac{\partial V^k(x)}{\partial x}=-R^{-1}B^\mathrm{T}P^kx.
πk+1(x)=−21R−1BT∂x∂Vk(x)=−R−1BTPkx. 那么根据我们之前的ADP框架,当主循环的迭代次数趋于无穷大时,我们就可以得到最优的参数矩阵
P
∗
P^*
P∗。注意,这里的LQR问题可以看成是通用的ADP框架的一个特例,因为我们这里对于策略参数和值函数参数统一都使用了一个P矩阵来表示。到这里我们也可以总结一下了。实际上,使用ADP的框架来求解LQR问题的过程就是使用了迭代的方法来替代直接求解Riccati方程。
另外需要注意的是,LQR方法要求我们具有对于状态的完全的观测,但是在很多实际问题中,这是不现实的,会带来额外的观测误差,需要使用状态估计器来更好的估计状态。
8.3 怎么运行RL或者ADP算法
在这一节中,我们主要讨论如何运行RL或者ADP算法。注意,这里我们采用狭义的说法,RL特指model-free的方法,而ADP特指model-based的方法。ADP具有模型的好处是(解析)模型的可微性使得我们可以更有效的利用模型的信息;而RL因为没有模型,只能通过和环境不断交互来获得梯度的信息,因此效率低于ADP。
8.3.1 两种环境模型
环境模型是用来刻画环境的动力学信息的。通常来说,我们可以把环境模型分为两种:
- 高保真的仿真模型
- 简介:这种模型是使用仿真软件进行模拟的,它可以提供高保真的环境信息,与真实的环境十分接近。
- 优缺点
- 优点:高保真的仿真模型可以提供准确的环境信息,这对于RL算法的训练是非常有帮助的;相比于在真实的环境中收集数据,使用仿真模型可以大大减少训练的时间和成本,并降低风险。
- 缺点:缺乏解析表达式,不容易获得导数信息。
- 简化的解析模型
- 简介:这种模型是使用一些显式的解析表达式来描述环境的动力学信息的,比如常微分方程(ODE)。
- 优缺点
- 优点:简化的解析模型可以提供解析的导数信息,这对于ADP算法的训练是非常有帮助的。在我们下面的讨论中,我们假设model-based的方法使用的模型必须是可微的。
- 缺点:模型的表现很大程度上取决于建模的准确性。如果模型的准确性不够,那么对于梯度的估计的精度也会大大受到影响。
下表展示了三种模型(上述两种加上真实环境)在RL和ADP算法中的应用情况(实心圈代表适用,空心圈代表不适用):
8.3.2 Implementation of RL and ADP算法
8.3.2.1 梯度的计算
让我们来以具有随机策略的RL和具有确定性策略的ADP为例,来比较一下两种方法计算梯度的时候有什么不同。注意,我们下面的分析都是在actor-critic框架下进行的。
先来看看二者是如何计算critic的梯度的:
∇
J
C
r
i
t
i
c
R
L
=
−
E
s
{
(
V
t
a
r
g
e
t
(
s
)
−
V
(
s
;
w
)
)
∂
V
(
s
;
w
)
∂
w
}
∇
J
C
r
i
t
i
c
A
D
P
=
−
E
x
{
(
V
t
a
r
g
e
t
(
x
)
−
V
(
x
;
w
)
)
∂
V
(
x
;
w
)
∂
w
}
\nabla J_{\mathrm{Critic}}^{\mathrm{RL}}=-\mathbb{E}_{s}\left\{\left(V^{\mathrm{target}}(s)-V(s;w)\right)\frac{\partial V(s;w)}{\partial w}\right\}\\\nabla J_{\mathrm{Critic}}^{\mathrm{ADP}}=-\mathbb{E}_{x}\left\{\left(V^{\mathrm{target}}(x)-V(x;w)\right)\frac{\partial V(x;w)}{\partial w}\right\}
∇JCriticRL=−Es{(Vtarget(s)−V(s;w))∂w∂V(s;w)}∇JCriticADP=−Ex{(Vtarget(x)−V(x;w))∂w∂V(x;w)} 可以发现,RL和ADP的critic的梯度计算是一样的(注,这里ADP说的是离散时间的版本,连续时间的ADP的critic公式与此形式不同)。再来看看actor的梯度的推导:
∇
J
A
c
t
o
r
R
L
=
E
s
,
a
,
s
′
{
∇
θ
log
π
θ
(
a
∣
s
)
(
r
+
γ
V
(
s
′
;
w
)
)
}
∇
J
A
c
t
o
r
A
D
P
=
E
x
{
∂
π
T
(
x
;
θ
)
∂
θ
(
∂
l
(
x
,
u
)
∂
u
+
∂
f
T
(
x
,
u
)
∂
u
∂
V
(
x
′
;
w
)
∂
x
′
)
}
\nabla J_{\mathrm{Actor}}^{\mathrm{RL}}=\mathbb{E}_{s,a,s^{\prime}}\{\nabla_{\theta}\log\pi_{\theta}(a|s)\left(r+\gamma V(s^{\prime};w)\right)\}\\\nabla J_{\mathrm{Actor}}^{\mathrm{ADP}}=\mathbb{E}_{x}\left\{\frac{\partial\pi^{\mathrm{T}}(x;\theta)}{\partial\theta}\left(\frac{\partial l(x,u)}{\partial u}+\frac{\partial f^{\mathrm{T}}(x,u)}{\partial u}\frac{\partial V(x^{\prime};w)}{\partial x^{\prime}}\right)\right\}
∇JActorRL=Es,a,s′{∇θlogπθ(a∣s)(r+γV(s′;w))}∇JActorADP=Ex{∂θ∂πT(x;θ)(∂u∂l(x,u)+∂u∂fT(x,u)∂x′∂V(x′;w))} 可以发现,此处关于梯度的计算就出现了很大的不同。区别就在于RL中的actor的梯度计算实际上是一种使用samples对于梯度进行的估计;而ADP则是直接利用了模型的导数信息。相比较而言,ADP算法的更新efficiency更高,但是相应的,其计算模型导数的代价也更高。
8.3.2.2 两种常见的采样方法
首先我们必须先明确一点,虽然ADP利用了模型的信息,但并不是说它就不需要和环境交互(即采样)。例子可以看看第8.1.5节的伪代码。在这一节中,我们主要讨论两种常见的采样方法:State Initial Sampling(SIS)State Rollout Forward(SRF):
- State Initial Sampling(SIS)
这种方法一次选择一个初始状态的分布,比如均匀分布或者高斯分布,然后根据这个初始状态的分布来采样。这个方法形象的理解就是一次选择若干个起点,然后同时出发向后至少走一步。
- State Rollout Forward(SRF)
这种方法是一次选择一个初始状态,然后从这个初始状态开始,根据当前的策略,一直向后rollout,然后得到一条包含state和action的轨迹。这个方法形象的理解就是一次选择一个起点,然后一直走到终点。对于RL来说,需要利用的是轨迹中每对(state,action)的信息;而对于ADP来说,需要利用的是轨迹中蕴含的state distribution的信息。与SRF相比,SIS的优点是其state distribution更接近于SSD。
一个更为常见的做法是结合两种方法,即同时选择若干个初始状态然后同时向后rollout。这种方法的优点有很多,比如一次可以产生一个batch而非单一的一条轨迹,这样有利于矩阵运算的加速;另外,这种方法可以更好地探索环境,尤其是当环境和策略都是确定性的时候。
8.3.3 RL与ADP算法的训练效率比较
训练效率主要由两个因素决定:
- 每轮主循环复杂度
T
i
n
t
e
r
a
t
i
o
n
T_{interation}
Tinteration
这个复杂度由三部分决定:sampler、actor update和critic update。 - 达到某个表现指标所需的主循环轮数
这个轮数主要由对于梯度估计的质量决定。容易想到,高质量的梯度估计可以使得我们在更少的主循环轮数下达到某个表现指标。
下面让我们来讨论一下RL和ADP在每轮主循环复杂度
T
i
n
t
e
r
a
t
i
o
n
T_{interation}
Tinteration的区别。先直接放结论再解释(我们在下面的讨论中假定使用神经网络来近似值函数和策略,这也是目前最广为使用的方法):
- Interaction:这里的Interaction指的就是sampler, T e n v T_{env} Tenv和 T m o d e l T_{model} Tmodel分别代表了在真实环境和模型环境中所需的时间。N则代表样本的数量(表中下面的N意思相同)。
- Critic:根据我们在8.3.2.1节的讨论,RL和ADP的critic的梯度计算是一样的,因此这里的复杂度是一样的。在进行critic的更新时,主要涉及到三个部分的计算: V t a r g e t V^{\mathrm{target}} Vtarget、 V ( x ; w ) V(x;w) V(x;w)和 ∂ V ( x ; w ) ∂ w \frac{\partial V(x;w)}{\partial w} ∂w∂V(x;w)。前两者的计算复杂度是一样的,即一次critic网络的前向传播的时间,记作 T F D V T_{FD}^V TFDV。而计算 ∂ V ( x ; w ) ∂ w \frac{\partial V(x;w)}{\partial w} ∂w∂V(x;w)的复杂度是一次critic网络的反向传播的时间,记作 T B P V T_{BP}^V TBPV。因此,critic的单个样本复杂度是 2 T F D V + T B P V 2T_{FD}^V+T_{BP}^V 2TFDV+TBPV。再考虑到样本的数量N及critic的更新次数 n c n_c nc,那么critic的总复杂度就是 n c N ( 2 T F D V + T B P V ) n_cN(2T_{FD}^V+T_{BP}^V) ncN(2TFDV+TBPV)。
- Actor:actor部分是RL和ADP主循环复杂度的主区别所在。先来看RL。RL的actor的梯度计算主要有两个部分: ∇ θ log π θ ( a ∣ s ) \nabla_{\theta}\log\pi_{\theta}(a|s) ∇θlogπθ(a∣s)和 V ( s ′ ; w ) V(s^{\prime};w) V(s′;w)。前者的计算复杂度是一次actor网络的前向传播的时间加上一次actor网络的反向传播的时间,记作 T F D π + T B P π T_{FD}^{\pi}+T_{BP}^{\pi} TFDπ+TBPπ。而后者已经在critic的更新中算过了,故不需要再计入。因此,actor的单个样本复杂度是 n a N ( T F D π + T B P π ) n_aN(T_{FD}^{\pi}+T_{BP}^{\pi}) naN(TFDπ+TBPπ)。再来看看ADP的复杂度,其主要与以下四个部分有关: ∂ l ∂ u \frac{\partial l}{\partial u} ∂u∂l、 ∂ f ∂ u \frac{\partial f}{\partial u} ∂u∂f、 ∂ V ∂ x ′ \frac{\partial V}{\partial x^{\prime}} ∂x′∂V和 ∂ π ∂ θ \frac{\partial\pi}{\partial\theta} ∂θ∂π。首先,我们把计算 ∂ l ∂ u \frac{\partial l}{\partial u} ∂u∂l和 ∂ f ∂ u \frac{\partial f}{\partial u} ∂u∂f的复杂度记作 T l T^l Tl和 T f T^f Tf,而这个两个时间因为已知环境和utility函数,因此计算开销是很小的。接下来是计算 ∂ V ∂ x ′ \frac{\partial V}{\partial x^{\prime}} ∂x′∂V。这里需要经过一次critic网络的前向传播和反向传播,但是因为前向传播的那个计算已经在critic更新的时候算过,因此其复杂度是 T B P V T_{BP}^V TBPV。可能有人会问,为什么这里需要的是一次正向加一次反向,而之前我们算过的 ∂ V ( x ; w ) ∂ w \frac{\partial V(x;w)}{\partial w} ∂w∂V(x;w)只需要一次反向呢?答案在于 w w w是网络的参数而状态 x ′ x^{\prime} x′是输入而不是参数,因此这里面牵扯到一个链式法则求导的问题。最后是计算 ∂ π ∂ θ \frac{\partial\pi}{\partial\theta} ∂θ∂π的复杂度,这个复杂度是一次actor网络的前向传播和反向传播的时间加上一次actor网络的反向传播的时间。综上,actor的单个样本复杂度是 n a N ( T l + T f + T B P V + T F D π + 2 T B P π ) n_aN(T^l+T^f+T_{BP}^V+T_{FD}^{\pi}+2T_{BP}^{\pi}) naN(Tl+Tf+TBPV+TFDπ+2TBPπ)。
从上面的讨论我们可以看出,每轮主循环里ADP比RL更耗时。那么为什么我们说一般来说ADP比RL更高效呢?原因就在于在计算actor gradient的时候,我们直接利用了模型的信息而非从环境中直接采样得到的样本。这就避免了样本的随机性以及稀疏性带来的高方差,从而提高了梯度估计的质量,因此影响总的复杂度的第二个因素——达到某个表现指标所需的主循环轮数远远小于RL的,因此总的复杂度更小。