该书由清华大学李升波教授撰写的,紧张面向工业控制领域的研究者和工程师,曾获得2024年度Springer中国新发展奖(China New Development Awards)。全书按照原理分析、主流算法、典范示例的架构,系统地介绍了用于动态系统决策与控制的强化学习方法。全书共分为11章,内容涵盖了强化学习的基本概念、蒙特卡洛法、时序差分法、动态规划法、函数近似法、策略梯度法、近似动态规划、状态束缚的处理处罚和深度强化学习等知识点。册本及源代码下载网站:册本及代码链接点这里。
另外,由于本部分篇幅较长,因此分成三篇博客发表。其它博客的地址参考我的系列博客的地址汇总。
册本链接:Reinforcement Learning for Sequential Decision and Optimal Control
本篇博客对应于原书的第九章,紧张讲述了带有束缚的强化学习。在实际的场景中,我们往往会遇到很多束缚条件,包括对于输入的束缚和对于状态的束缚。对于输入的束缚相对而言比较容易处理处罚,而更困难的是对于状态的束缚。紧张有三种方法来处理处罚状态束缚:(1) 使用罚函数来处罚打破束缚的举动;(2) 使用基于对偶理论的拉格朗日乘子法来确定原问题的下界;(3) 使用feasible descent direction方法来找到一个既满意束缚又能使目标函数下降的方向。
可以看出,处理处罚带束缚的强化学习问题与static optimization问题是类似的,但是前者由于带有束缚而产生了保持每步学得的策略的递归可行性的难题。递归可行性被破坏通常是由于过于严格的状态束缚。另一个困难是要在学得策略的同时确定可行域,而这两个问题是精密耦合在一起的。因此本章中提出了一种新的学习架构——Actor-Critic-Scenery(ACS)架构,其中的Actor和Critic作用稳定,而Scenery则负责确定可行域。
那么,对于这种带有hard state constraints的强化学习问题,应该在哪里训练呢?有两种常用的方法:(1) 先offline的在仿真环境中训练,然后再作为一个最优控制器摆设在真实环境中;(2) 直接在真实环境中训练并摆设。
9.6 Actor-Critic-Scenery(ACS)架构
之前章节介绍过的Actor-Critic框架作为当今最广为使用的强化学习框架,由Actor和Critic两部分构成。Actor即参数化的策略,Critic即参数化的值函数。这种架构有助于加强训练算法的稳定性并提升效率,被很多主流的算法所采用,如A2C、A3C、SAC、DSAC等。
而我们本节要介绍的ACS架构则是在Actor-Critic框架的基础上增加了一个Scenery模块,该模块用于盘算训练的策略的可行的工作区域,即确定EFR。在这个架构中,Actor和Critic的功能稳定,而Scenery模块则用阿里进行Region Identification。该架构的迭代分为三部分:PEV、PIM、RID(Region Identification)。
9.6.1 两种ACS架构
计划一个Scenery模块需要两个关键的步骤;
- 需要对于EFR有一个定量的形貌
- 根据怎样检验可行性计划一种Scenery优化算法
构建完之后,Scenery更新就是去寻找一个完美的(perfect)的可行性函数,这个可行性函数对应的区域等于最大的EFR。 关于可行性函数的界说根据其检验可行性的机制的差别而大相径庭。其中一种叫做基于可达性的Scenery,另一种被称为基于可解性的Scenery。
基于可达性的Scenery可以被视为一种与风险评估有关的特殊的Critic,而它的可行性函数泉源于Hamilton-Jacobi可达性分析,被称为基于可达性的可行性函数。它形貌了从一个给定的状态出发最危险的束缚值。一个状态的可达性值越大,意味着这个状态更危险,在未来更有可能发生束缚违反。这样界说的好处是其完美的版本保持了最优性条件。它对应的可解性检验基于怎么评估对于每个给定的状态的的风险品级。如这里的表示图所示,这里的Scenery组件与Critic组件是平行的,由于这里的风险评估与值函数评估是相似的。
- 基于可解性的Scenery:
基于可解性的Scenery则是一种类似于与Actor进行对抗的组件,在上图中表现为与Actor平行。它的可行性函数界说为每次的带束缚的PIM是否具有一个可行解,因此也被称为基于可解性的可行性函数。该函数通常基于带束缚优化问题的互补松弛条件。互补松弛条件的值是一个有用的区域是否可行的有用指示。这个值为0的时候就表示是一个可行解,如果是一个正实数的话就是不可行的。与它相关的可行性检验取决于对于可能的束缚违反的处罚程度。如这里的图所示,这里的Scenery组件实际上是与Actor组件一同更新的,由于他们实际上求解的是同一个优化问题。
实际上,这两种Scenery组件也可以工作在同一个ACS架构下,然而这可能会导致不可猜测的策略表现,因此在大多数情况下,这两种Scenery组件我们只会选择其中一种。
EFR从数学上可定量界说如下:
X = { x ∣ F ( x ) ≤ 0 } , \mathcal{X}=\{x|F(x)\leq0\}, X={x∣F(x)≤0}, 这里的 F ( x ) F(x) F(x)是一个可行性函数,而 X \mathcal{X} X是一个EFR。对应于最大的EFR的可行性函数被称为完美的可行性函数,任何策略在这个完美的可行性函数对应的区域内都必须是可行的。其界说如下:
X E d l s = { x ∣ F ∗ ( x ) ≤ 0 } , \mathrm{X}_{\mathrm{Edls}}=\{x|F^*(x)\leq0\}, XEdls={x∣F∗(x)≤0}, 这里的 F ∗ ( x ) F^*(x) F∗(x)是一个完美的可行性函数。
9.6.2 基于可达性的Scenery
Hamilton-Jacobi可达性分析是一种用来形貌带束缚的动态系统的可扩展的安全验证方法。它具有兼容非线性系统、对于bounded disturbances的正式处理处罚以及已经发展得很好的数值工具。给定任意一个束缚函数,HJ可达性分析的基本是要盘算一个可达集。
可达集:由危险的状态组成,实际上是一个不可行区域。
由上述界说可以看出,可达集的补集就是一个EFR。
但是,传统的HJ可达性分析只检查带束缚的动态系统的风险,而不关注怎样找到一个最优策略。作为对于RL的延伸,ACS架构被用于处理处罚两个相互关联的要求:安全保证和寻求最优性。在基于可达性的ACS中,尽管寻找最优性是第一寻求,但是EFR也必须同时被确定,只有这样才能保证学得的策略的有用性。
9.6.2.1 基于可达性的可行性函数
让我们以一个确定性的离散时间的动态系统。系统是可控的,也就是说存在一个策略可以把一个状态转移到任何其它状态点。我们用记号 x t + i π , i = 0 , 1 , 2 , ⋯ , ∞ x_{t+i}^{\pi},i=0,1,2,\cdots,\infty xt+iπ,i=0,1,2,⋯,∞来形貌在策略 π \pi π下从任意状态 x t = x x_t=x xt=x出发的状态轨迹。基于可达性的可行性函数 F ( x ) F(x) F(x)界说为:
F π ( x ) = d e f max i h ( x t + i π ) , i ∈ { 0 , 1 , 2 , ⋯ , ∞ } , F^\pi(x)\overset{def}{=}\max_ih(x_{t+i}^\pi),i\in\{0,1,2,\cdots,\infty\}, Fπ(x)=defimaxh(xt+iπ),i∈{0,1,2,⋯,∞}, 这里的 F π ( x ) F^\pi(x) Fπ(x)表示的是在某个具体策略 π \pi π下的可行性函数。原本的束缚 h ( x ) ≤ 0 h(x)\le 0 h(x)≤0代表当前状态是安全的,而 F π ( x ) F^\pi(x) Fπ(x)则形貌了当前状态的风险品级,即在从当前点出发的状态轨迹上最危险的点的 h h h值。当 F π ( x ) ≤ 0 F^\pi(x)\le 0 Fπ(x)≤0时,表示当前状态是在未来绝对安全的,当 F π ( x ) > 0 F^\pi(x)>0 Fπ(x)>0时,表明在未来一定会发生束缚违反。显然, F π ( x ) F^\pi(x) Fπ(x)越小,表示当前状态越安全。
由于可以形貌任意策略的可行性函数,因此上述可行性函数提供了搜刮一个风险更小的策略的方向指导。而在全部可能的策略中,有一个策略可以使得 F π ( x ) F^\pi(x) Fπ(x)最小:
F ∗ ( x ) = d e f min i max i h ( x t + i π ) , i ∈ { 0 , 1 , 2 , ⋯ , ∞ } , F^*(x)\overset{def}{=}\min_i\max_ih(x_{t+i}^\pi),i\in\{0,1,2,\cdots,\infty\}, F∗(x)=defiminimaxh(xt+iπ),i∈{0,1,2,⋯,∞}, 此时的 F ∗ ( x ) F^*(x) F∗(x)被称为完美的可行性函数。它是由内外两个相反的最值问题组成的,内部的最值问题是在全部可能的状态轨迹上找到最危险的点,而外部的最值问题是在全部可能的策略上找到最安全的策略。像任何多阶段优化一样,它拥有一个从贝尔曼最优性原理来的最优性条件。
9.6.2.2 风险贝尔曼方程
基于可达性的可行性函数有内在的递归结构,因此它也有一个与值函数的self-consistency条件类似的条件。因此,与之相关的Scenery优化问题也保有一个最优性条件,称为风险贝尔曼方程:
F ∗ ( x ) = min u max { h ( x ) , F ∗ ( x ′ ) } . F^*(x)=\min_u\max\{h(x),F^*(x^{\prime})\}. F∗(x)=uminmax{h(x),F∗(x′)}. 简单证明如下:
F ∗ ( x t ) = d e f min { u t , u t + 1 , ⋯ } max i { h ( x t + i ) } , i ∈ { 0 , 1 , 2 , ⋯ , ∞ } = min { u t , u t + 1 , ⋯ } max { h ( x t ) , max i h ( x t + i ) } , i ∈ { 1 , 2 , ⋯ , ∞ } = min u t max { h ( x t ) , min { u t + 1 , u t + 2 , ⋯ } max i h ( x t + i ) } = min u t max { h ( x t ) , F ∗ ( x t + 1 ) } . \begin{aligned}F^*(x_t)&\overset{\mathrm{def}}{\operatorname*{=}}\min_{\{u_t,u_{t+1},\cdots\}}\max_i\{h(x_{t+i})\},i\in\{0,1,2,\cdots,\infty\}\\&=\min_{\{u_t,u_{t+1},\cdots\}}\max\left\{h(x_t),\max_ih(x_{t+i})\right\},i\in\{1,2,\cdots,\infty\}\\ &=\min_{u_t}\max\left\{h(x_t),\min_{\{u_{t+1},u_{t+2},\cdots\}}\max_ih(x_{t+i})\right\}\\&=\min_{u_t}\max\{h(x_t),F^*(x_{t+1})\}. \end{aligned} F∗(xt)=def{ut,ut+1,⋯}minimax{h(xt+i)},i∈{0,1,2,⋯,∞}={ut,ut+1,⋯}minmax{h(xt),imaxh(xt+i)},i∈{1,2,⋯,∞}=utminmax{h(xt),{ut+1,ut+2,⋯}minimaxh(xt+i)}=utminmax{h(xt),F∗(xt+1)}.
证明过程的图解如下图所示:
正如之前讲过的,当不再寻求最优性时,贝尔曼方程就退化为self-consistency条件。self-consistency条件实际上是一个可分离的多阶段优化控制问题的内在性质,类比值函数的self-consistency条件与值函数的贝尔曼方程,可得可行性函数的self-consistency条件:
F π ( x ) = max { h ( x ) , F π ( x ′ ) } . F^\pi(x)=\max\{h(x),F^\pi(x^{\prime})\}. Fπ(x)=max{h(x),Fπ(x′)}. 求解风险贝尔曼方程的方法与求解值函数的贝尔曼方程的方法是一样的,可以使用动态规划(表格情势or参数化情势)或其他方法。
还有一点值的指出,即根据贝尔曼最优性原理,最安全的状态轨迹上截取的任意一段也是最安全的。
9.6.2.3 基于模型的可达性ACS算法
首先,我们来给可行性函数进行参数化:
F ( x ; φ ) ≅ F ( x ) , F(x;\varphi)\cong F(x), F(x;φ)≅F(x), 这里的 φ \varphi φ是可行性函数的参数。然后,通过风险贝尔曼方程和通例贝尔曼方程可以分别求得策略搜刮和可行区域辨识。这里需要阐明的是,不加上传统的贝尔曼方程,只凭借风险贝尔曼方程,是无法同时确定最优策略和其可行的工作区域的。这也是对于为什么基于可达性的ACS算法的Scenery更新与Critic更新是同时的,即把基于可达性的Scenery组件当作一种可以评估风险的特殊reward系统。可以把Scenery和Critic当作是两套独立的评估体系,一套负责策略评估(输出是策略的最优性程度),一套负责安全评估(输出是违反束缚的风险)。在这样的观点下,Scenery的损失函数与Critic的损失函数非常相似,在这里我们选取 L 2 L_2 L2损失函数:
J Scenery = 1 2 ( max { h ( x ) , min u F ( x ′ ; φ ) } − F ( x ; φ ) ) 2 , J_\text{Scenery}=\frac12\bigg(\max\{h(x),\min_uF(x^{\prime};\varphi)\}-F(x;\varphi)\bigg)^2, JScenery=21(max{h(x),uminF(x′;φ)}−F(x;φ))2, 上式中的 max { h ( x ) , min u F ( x ′ ; φ ) } \max\{h(x),\min_uF(x^{\prime};\varphi)\} max{h(x),minuF(x′;φ)}是根据风险贝尔曼方程来的,只不过这里加了 m i n min min是由于此时还在探索的过程中。这个实在也可以类比Q-Learning中的TD-target。这样做的好处是不需要在单独为Scenery组件再创建一个策略网络,这样可以降低整体架构的复杂度。和Q-Learning还有一点相似,就是这样的计划只适用于离散的动作空间或者控制仿射系统,只有这样内层的最小化才有显式解,否则就需要使用数值优化的方式求解,而这样就会带来而外的盘算复杂度。
下面来看看怎么盘算上述损失的梯度。为了盘算方便,我们可以使用之前章节讲过的semi-gradient方法来降低盘算复杂度,不对target部分求导,只对于 F ( x ; φ ) F(x;\varphi) F(x;φ)求导:
∇ φ J Scenery = − ( F target ( x ) − F ( x ; φ ) ) ∂ F ( x ; φ ) ∂ φ , F t a r g e t ( x ) = d e f max { h ( x ) , min u F ( x ′ ; φ ) } . \nabla_\varphi J_\text{Scenery}=-\big(F^\text{target}(x)-F(x;\varphi)\big)\frac{\partial F(x;\varphi)}{\partial\varphi},\\F^{\mathrm{target}}(x)\stackrel{\mathrm{def}}{\operatorname*{=}}\max\{h(x),\min_uF(x^{\prime};\varphi)\}. ∇φJScenery=−(Ftarget(x)−F(x;φ))∂φ∂F(x;φ),Ftarget(x)=defmax{h(x),uminF(x′;φ)}.
接下来来修改PIM以顺应Scenery组件。在传统的带束缚的PIM中,我们给的束缚都是 x ′ ∈ X E d l s x^{\prime}\in \mathcal{X}_{\mathrm{Edls}} x′∈XEdls,但是注意,我们实际上并没有关于 X E d l s \mathcal{X}_{\mathrm{Edls}} XEdls的信息,但是等等,实在我们在第一步已经训练好了一个Scenery组件,以是我们可以用这个Scenery组件来取代 X E d l s \mathcal{X}_{\mathrm{Edls}} XEdls:
J A c t o r = l ( x , u ) + V ( x ′ ) s.t. F ( x ′ ; φ ) ≤ 0 . J_{\mathrm{Actor}}=l(x,u)+V(x^{\prime})\\\text{s.t.}\\F(x^{\prime};\varphi)\leq0\:. JActor=l(x,u)+V(x′)s.t.F(x′;φ)≤0. 这样修改的好处是这样可以与很多优化方法无缝衔接,如罚函数法、拉格朗日法、FDD法。在本节将以外点罚函数法来演示,为了到达良好的效果需要细致选择里面的处罚项参数,太弱则无法保证可行性,太强则会导致学到的策略不是最优的。具体算法如下:
- Actor Update中为什么有一个 max { F ( x ′ ) , 0 } \max\{F(x^{\prime}),0\} max{F(x′),0},按照上面的问题构建不是应该只是 F ( x ′ ) F(x^{\prime}) F(x′)吗?我的明白是这样处理处罚可以使得只有在违反束缚( F ( x ′ ) > 0 F(x^{\prime})>0 F(x′)>0)的时候才会对Actor的更新产生影响,而在不违反束缚的时候,即使 F ( x ′ ) < 0 F(x^{\prime})<0 F(x′)<0也不会对Actor的更新产生影响。
总结一下,基于可达性的Scenery可以学到最大的EFR,而其他诸如Control Barrier Function(CBF)则不保证学到最大的EFR。而且基于可达性的ACS算法还对于Model Mismatch和外界扰动具有良好的鲁棒性。然而,其缺点也存在,即当动作空间不是离散或者控制仿射系统时,需要使用数值优化的方法来求解,实际上需要设置两个策略网络,一个通例的,另一个策略用于评估风险来寻求安全。这样会导致整体架构的复杂度增加,且容易出现不稳定的情况。
9.6.3 基于可解性的Scenery
检查可解性紧张是为了确定可能的束缚违反,而这是通过检查带束缚的PIM是否有可行解实现的。在基于可解性的ACS架构中,Scenery组件和Actor组件共用一个优化问题,它们的参数更新过程表现为两个相互对抗的过程:Actor寻求更好的策略而Scenery寻求更严格的束缚满意。这个对抗的过程也表明了可行性的保证是以一定程度的策略最优性为代价的。现有的研究紧张关注怎么在束缚下找到一个最优策略,但是没有思量到可行域有多大。但是正如之前所说的,一个有用的策略必须工作在一个已知的可行域内,因此正确的确定可行域黑白常紧张的与寻求最优性同等紧张。这节将介绍基于可解性的可行性函数的界说以及怎么计划一个基于可解性的ACS算法来确定最大的EFR。
9.6.3.1 基于可解性的Scenery的基础
检验可行性的关键是检验每个带束缚的PIM是否有可行解。在大多数带束缚的RL/ADP中这并不简单,由于这里面涉及的优化问题是高度非线性和非凸的,必须采用数值优化方法来找到最优解。因此,怎么检查可解性取决于使用的具体优化方法:
- 罚函数法:选择处罚项(处罚因子乘束缚函数)本身,由于处罚项具有随着束缚违法程度增长而单调增长的性质。可以通过将该值与一个阈值比较来给出结论。
- 拉格朗日乘子法:有两种选择:
- 拉格朗日乘子:可以当作是一种特殊的处罚因子,当束缚违反将要发生时,会自动增大来处罚那些将要超出边界的状态。因此可以根据拉格朗日乘子的巨细来判定是否可解,与一个固定的阈值比较即可。
- 互补松弛:另一种更好的办法是通过检验互补松弛条件来检验。互补松弛条件是拉格朗日乘子与束缚函数的乘积。其取值与判定如下:
- 等于0:阐明拉格朗日乘子为0(找到了最优解且没有活跃的束缚)或束缚为0(特定的束缚活跃且被满意)。
- 不等于0(一个正数):不存在可行解。
9.6.3.2 基于可解性的可行性函数
之前构建基于可达性的PIM时,我们把 x ′ ∈ X E d l s x^{\prime}\in\mathcal{X}_{\mathrm{Edls}} x′∈XEdls转化为 F ( x ′ ; φ ) ≤ 0 F(x^{\prime};\varphi)\leq0 F(x′;φ)≤0。那么在这里能不能也如法炮制呢?不太行。由于这里Actor和Scenery是共享一个优化问题的,如果这样做很容易导致在与Actor竞争的时候出现自激导致的不稳定。因此,在构建基于可解性的PIM问题时,需要依靠更加具有一致性且稳定的束缚条件,比如之前讲过的one-step pointwise束缚和one-step barrier束缚,它们2提供了相对较松、固定的束缚,盘算负担也较小。相比来说,one-step barrier束缚对于束缚违反更加敏感,因此与one-step pointwise束缚相比,使用其得到的可行域相对会扩大一点。但是,下面为了叙述方便,我们还是用one-step pointwise束缚来构建基于可解性的PIM问题。
首先,我们使用函数近似来参数化拉格朗日乘子,并依次给出拉格朗日函数:
L ( θ , φ ) = l ( x , u ) + V ( x ′ ) + λ ( x ; φ ) h ( x ′ ) , L(\theta,\varphi)=l(x,u)+V(x^{\prime})+\lambda(x;\varphi)h(x^{\prime}), L(θ,φ)=l(x,u)+V(x′)+λ(x;φ)h(x′), 这里的 λ ( x ; φ ) \lambda(x;\varphi) λ(x;φ)是拉格朗日乘子的参数化情势。如前所述,这个损失函数同时用来更新Actor和Scenery,Actor旨在寻找最优策略,而Scenery则是寻找完美的可行性函数。再由拉格朗日对偶,可以得到如下的对偶优化问题:
max φ min θ { L ( θ , φ ) } . \max_\varphi\min_\theta\{L(\theta,\varphi)\}. φmaxθmin{L(θ,φ)}. 在对偶问题中,拉格朗日乘子必须非负。这可以通过一些神经网络的技巧来实现,比如在网络的输出层接一些非负的激活函数。那么如果上述的对偶问题在区域 X \mathcal{X} X内可解,那么拉格朗日乘子对应的互补松弛条件应该为0:
λ ( x ; φ ) h ( x ′ ) = 0 , ∀ x ∈ X . \lambda(x;\varphi)h(x^{\prime})=0,\forall x\in\mathcal{X}. λ(x;φ)h(x′)=0,∀x∈X. 如果互补松弛条件不为0,则不管采取什么样的策略都无法避免违反束缚。当互补松弛条件不为0时,对应的拉格朗日乘子也会趋于无穷大。综上,可以界说基于可解性的可行性函数如下:
F ( x ; φ ) = λ ( x ; φ ) h ( x ′ ) . F(x;\varphi)=\lambda(x;\varphi)h(x^{\prime}). F(x;φ)=λ(x;φ)h(x′). 在这样的界说下, φ \varphi φ既是拉格朗日乘子的参数,也是可行性函数的参数。界说完之后就可以通过检查 F ( x ; φ ) F(x;\varphi) F(x;φ)是否为0来判定是否有可行解:
在实际中由于有误差,以是可以选择一个很小的履历阈值来取代0。
可以通过之前讲过的dual descent的方式来求解上述对偶问题:
θ n e w ← θ − α θ ⋅ ∇ θ L ( θ , φ ) , φ n e w ← φ + α φ ⋅ ∇ φ L ( θ , φ ) , \theta^{\mathrm{new}}\leftarrow\theta-\alpha_\theta\cdot\nabla_\theta L(\theta,\varphi),\\\varphi^{\mathrm{new}}\leftarrow\varphi+\alpha_\varphi\cdot\nabla_\varphi L(\theta,\varphi), θnew←θ−αθ⋅∇θL(θ,φ),φnew←φ+αφ⋅∇φL(θ,φ), 其中的 α θ ≥ 0 \alpha_\theta\ge 0 αθ≥0和 α φ ≥ 0 \alpha_\varphi\ge 0 αφ≥0。式中的两梯度分别为:
∇ θ L ( θ , φ ) = ∂ u T ∂ θ ( ∂ l ∂ u + ∂ f T ∂ u ∂ V ( x ′ ) ∂ x ′ + λ ∂ f T ∂ u ∂ h ( x ′ ) ∂ x ′ ) , ∇ φ L ( θ , φ ) = h ( x ′ ) ∂ λ ∂ φ . \nabla_\theta L(\theta,\varphi)=\frac{\partial u^\mathrm{T}}{\partial\theta}\left(\frac{\partial l}{\partial u}+\frac{\partial f^\mathrm{T}}{\partial u}\frac{\partial V(x^{\prime})}{\partial x^{\prime}}+\lambda\frac{\partial f^\mathrm{T}}{\partial u}\frac{\partial h(x^{\prime})}{\partial x^{\prime}}\right),\\\nabla_\varphi L(\theta,\varphi)=h(x^{\prime})\frac{\partial\lambda}{\partial\varphi}. ∇θL(θ,φ)=∂θ∂uT(∂u∂l+∂u∂fT∂x′∂V(x′)+λ∂u∂fT∂x′∂h(x′)),∇φL(θ,φ)=h(x′)∂φ∂λ.
使用互补松弛条件来构建基于可解性的ACS算法的难点在于ACS架构中含有两个不想对抗的组件,因此超参数(尤其是学习率)选择不恰当会导致训练发散的情况。可以采取一些方法来办理这个问题,如降低学习率,使用target网络,以及降低参数更新的频率等。
9.6.3.3 可行区域的单调扩展性质
基于可解性的Scenery与Actor公熊一个损失函数,通过dual ascent算法瓜代寻找一个更好的策略和一个更大的可行域。各人可能会疑惑为什么这样一种对抗的更新方式可以扩大可行区域而不是仅仅保持乃至缩小这个可行区域呢?这一性质也被称为单调的区域扩展性质:
定理3:单调的区域扩展性质
在基于可解性的ACS架构中并使用拉格朗日法求解时,每次新学到的EFR X k + 1 X^{k+1} Xk+1都至少是前一个EFR X k X^k Xk的超集,即:
X k ⊆ X k + 1 . X^{k}\subseteq X^{k+1}. Xk⊆Xk+1.
下面证明如下。首先我们需要假设ACS算法在使用函数近似以及minimax优化时没有数值误差,并且环境模型是正确的知道的。在第k次迭代中,我们已经有一个在EFR X k X^k Xk内的可行策略 π k \pi^k πk。根据我们上面基于可解性的可行性函数的的界说, X k X_k Xk表述为:
X k = { x ∣ F k ( x ) = 0 } , X_k=\{x|F_k(x)=0\}, Xk={x∣Fk(x)=0}, 即当 x ∈ X k x\in X_k x∈Xk时, F k ( x ) = λ k ( x ) h ( x ′ ) = 0 F_k(x)=\lambda_k(x)h(x^{\prime})=0 Fk(x)=λk(x)h(x′)=0。另外,对于任意的 x ∈ X k x\in X_k x∈Xk,状态值函数 V k ( x ) V_k(x) Vk(x)是一个有限的值。通过拉格朗日乘子法,可以把Actor的损失函数界说为:
J A c t o r ( π , λ ) = d e f l ( x , π ) + V ( x ′ ( π ) ) + λ ( x ) h ( x ′ ( π ) ) , J_{\mathrm{Actor}}(\pi,\lambda)\overset{\mathrm{def}}{\operatorname*{=}}l(x,\pi)+V\left(x^{\prime}(\pi)\right)+\lambda(x)h{\left(x^{\prime}(\pi)\right)}, JActor(π,λ)=defl(x,π)+V(x′(π))+λ(x)h(x′(π)), 在第k+1步之后,Actor和Scenery的参数更新如下:
[ π k + 1 , λ k + 1 ] = arg max λ min π { J A c t o r ( π k , λ k ) } , x ∈ X k . [\pi_{k+1},\lambda_{k+1}]=\arg\max_{\lambda}\min_{\pi}\{J_{\mathrm{Actor}}(\pi_{k},\lambda_{k})\},x\in\mathcal{X}_{k}. [πk+1,λk+1]=argλmaxπmin{JActor(πk,λk)},x∈Xk. 上述优化问题我们至少可以选择 π k + 1 = π k \pi_{k+1}=\pi_k πk+1=πk且 λ k + 1 = λ k \lambda_{k+1}=\lambda_k λk+1=λk(这样必然满意上述优化问题的束缚条件且至少不会变差)。如果这样选择的话,可以由互补松弛条件得到:
F k + 1 ( x ) = λ k + 1 ( x ) h ( x ′ ( π k + 1 ) ) = λ k ( x ) h ( x ′ ( π k ) ) = 0 , x ∈ X k . F_{k+1}(x)=\lambda_{k+1}(x)h(x^{\prime}(\pi_{k+1}))=\lambda_k(x)h(x^{\prime}(\pi_k))=0,x\in\mathcal{X}_k. Fk+1(x)=λk+1(x)h(x′(πk+1))=λk(x)h(x′(πk))=0,x∈Xk. 即 X k X_{k} Xk中的全部元素都在 X k + 1 X_{k+1} Xk+1中。因此, X k ⊆ X k + 1 X_{k}\subseteq X_{k+1} Xk⊆Xk+1。证毕。
更进一步我们还可以得到下面的结论:
定理4:
X E d l s = X ∞ = d e f lim k → ∞ X k . \mathrm{X}_{\mathrm{Edls}}=\mathrm{X}_\infty\overset{def}{=}\lim_{k\to\infty}\mathrm{X}_k. XEdls=X∞=defk→∞limXk.
这个定理可以由反证法来证明。让我们假设存在一个 X E d l s X_{Edls} XEdls的子集 X s u b ⊆ X E d l s \mathrm{X}_{\mathrm{sub}}\subseteq\mathrm{X}_{\mathrm{Edls}} Xsub⊆XEdls 但是这个子集与 X ∞ X_\infty X∞没有交集:
X s u b ∩ X ∞ = ∅ . \mathrm{X}_{\mathrm{sub}}\cap\mathrm{X}_\infty=\emptyset. Xsub∩X∞=∅. 那么对于任何状态点 x ∈ X s u b x\in\mathrm{X}_{\mathrm{sub}} x∈Xsub,这个状态点都能提为策略更新提供一个新的更新方向(由于有关这个点的信息没有被充实利用)。基于此,阐明Scenery的更新还没有到达它的最优值,以是区域扩展还会继续,这与之前的假设(在 k → ∞ k\to\infty k→∞时, X k X_k Xk收敛到 X ∞ X_\infty X∞)抵牾。因此,我们的假设是错误的,即 X E d l s = X ∞ \mathrm{X}_{\mathrm{Edls}}=\mathrm{X}_\infty XEdls=X∞。证毕。
根据上面两个定理,我们可以得出下面的结论:策略更新和EFR扩展是同时进行的,且二者最优值是同时到达的。
9.6.3.4 基于模型的可解性ACS算法
基于可解性的ACS算法与传统的AC架构的算法很相像(由于Actor与Scenery共享一个损失函数,二者在PIM的时候通过dual ascent算法一同更新),因此基于可解性的ACS算法既有on-policy的,又有off-policy的;既有model-free的,又有model-based的;既有确定性策略的,又有随机策略的。这里展示on-policy版本的model-based的基于可解性的ACS算法:
让我们来总结一下上述基于可解性的ACS算法。首先,相比于整体以参数化可行性函数,我们只对于拉格朗日乘子进行参数化,这样也方便后续构建可行性检验的方法(通过互补松弛条件)。其次,Actor和Scenery在更新的时候石象湖竞争的,抱负情况下可以同时收敛到最优策略和完美的可行性函数。最后,基于可解性的ACS算法比基于可达性的版本在盘算上通常效率更高。
9.7 实际世界中的安全考量
在实际的控制使命中,严格的的安全保证是不可或缺的。这里安全保证被界说为避免对于硬束缚的严重违反的本领。硬束缚被界说为在任何情况都不能被违反的束缚,比如自动驾驶系统中关于避免碰撞的束缚。通过将硬束缚加入OCP中,就可以通过求解这个OCP来来找到能保证安全的控制策略(该策略从它对应的EFR开始,永不违反硬束缚)。本节将会讨论如何在实际世界的控制使命思量安全保证。本章将会讲到两种为搜刮安全策略计划的训练模式,并介绍它们各自对应的ACS算法(会同时介绍model-based和model-free的版本)。
然而,在实际中,由于函数近似的误差、建模的不确定性、状态测量的噪声等问题,很惆怅到绝对安全的策略。为此,可设置安全盾(safety shield)机制作为最后的保险。
9.7.1 训练安全策略的两种基本模式
安全的策略既可以在真实环境又可以在虚拟环境中训练。这里所说的虚拟环境指的是一个高保真的的仿真模型。使用真实环境和虚拟环境的一大区别是在蓄念环境中安全不是必须的,即使违反了束缚也没什么大不了的。这是由于在虚拟环境中违反了束缚不会造成任何影响,把环境重置即可。
知道了训练的两种环境后,我们就可以来介绍下面的两种训练安全策略的模式。分别如下所示:
- OTOI(Offline Training and Online Implementation):
这种模式首先在虚拟环境中训练一个安全策略,然后将这个策略摆设到真实环境中。这种方法与MPC一样可以进行Receding Horizon Control,但是又不必像MPC那样及时求解优化问题,因此盘算效率较高。OTOI模式只有在最后一步才获得一个安全的策略,中心的策略未必是安全的。中心阶段对于策略的违反只是为了整体策略相更安全的方向移动提供了处罚信号。
- SOTI(Simultaneous Online Training and Implementation):
这种模式通过与真实环境交互学习一系列的安全策略。每个中心策略都必须保证是安全的,且每个中心策略的工作区域都必须是已知的。如本处的图示所示,一个使用这样的模式训练的自动驾驶车辆可以在真实道路上持续学习,同时保证安全,并不停提升本身的策略。
那么应该怎样选择该使用哪种策略呢?这取决于我们手边有的环境模型是不是完美的。完美的环境模型意味着仿真环境与真实环境之间没有误差(或者在很多控制使命中,它们使用的高保真仿真环境也可以被粗略的以为是一种完美的环境模型)。这时候就可以选择OTOI模式。否则,就必须选择SOTI模式。这时从环境中收集的履历可以被视为对于不完美的环境模型的有力补充。在这种情况下,需要计划一种混淆的ACS Trainer来混淆来自环境模型和收集到的履历。此时环境动力学一方面来自于模型另一方面来自于对真实环境的探索。具体可拜见下表:
还应该指出的是,即使对于SOTI模式,也需要一个环境模型,即使这个模型是不完美的。这是由于环境探索总需要从已知的区域延伸到未知的区域,如果没有一个事先的模型,纯靠试错的话很容易导致不可猜测的风险举动。而如果由一致的模型,即使它不完美,也可以或许提供相大大的一部分指引,指导这种ACS Trainer来和环境安全的交互。
9.7.2 具有最终安全保证(OTOI模式下)的Model-free的ACS算法
在OTOI模式下,相比于model-based,model-free的ACS算法显然是一个更好的选择。这是由于model-free的ACS算法不需要一个正确的环境模型,而这通常是通过高保真度但不可微的仿真模型来实现的。由于我们没有确切的环境模型的表达式,隐刺1在model-based的方法中盘算基于模型的梯度黑白常困难的,应当取而代之的是使用model-free的方法中通过样本来盘算的梯度。
首先,由于没有可剖析的环境模型,以是需要训练一个风险评估函数(类似于动作值函数,是风险的累积“回报”,我们将其界说为状态和动作的函数):
H ( x , u ; η ) ≅ h ( x ′ ) , H(x,u;\eta)\cong h(x^{\prime}), H(x,u;η)≅h(x′), 其中的 η \eta η是函数的参数。上式表明,输入一个状态和一个动作,风险评估函数的输出应该靠近于下一个状态的束缚函数的值(下文中记为风险信号 c ′ c^{\prime} c′)那么就可以通过优化下面的平方损失情势的目标函数来学习:
min η J R i s k = ( c ′ − H ( x , u ; η ) ) 2 . \min_{\eta}J_{\mathrm{Risk}}=\left(c'-H(x,u;\eta)\right)^2. ηminJRisk=(c′−H(x,u;η))2. 下面给出基于拉格朗日乘子法来计划dual ascent的model-free的ACS算法。下面给出的算法是基于可达性的:
- 在OTOI模式下,只需要保证最终策略是安全的,中心的策略不必是安全的。因此可以或许更广泛的探索虚拟环境,找到更多关于风险和奖励的信息。
- 与model-based的ACS算法相比,model-free的版本需要额外学习一个有关累积风险的风险评估函数 H ( x , u ; η ) H(x,u;\eta) H(x,u;η),来取代model-based的环境模型中的 h ( x ′ ) h(x^{\prime}) h(x′)。别的,这个函数应该与动作值函数具有一样的参数结构,输入为状态和动作,且二者为独立的变量。特别的,动作变量的引入可以植入环境信息这在model-free的Actor和Scenery更新中需要。
- 此处的的算法需要一个完美的虚拟环境,由于它需要提前遇到全部违反束缚的情况来学习到最终的安全策略。
9.7.3 安全探索环境的(在SOTI模式下)的混淆ACS算法
与OTOI模式差别,SOTI模式更具挑战。这是由于SOTI模式需要持续与真实环境进行交互以收集样本弥补模型的不完美,这就要求中心的每个策略都具有安全性。
不完美的环境模型可以提建模成下述情势:
x t + 1 = f ( x t , u t ) + δ t , x_{t+1}=f(x_t,u_t)+\delta_t, xt+1=f(xt,ut)+δt, 其中的 δ t \delta_t δt是用来对于模型的不确定性进行建模的,通常把它限定在一个已知的范围内,如 ∣ ∣ δ t ∣ ∣ ≤ 1 ||\delta_t||\leq 1 ∣∣δt∣∣≤1。尽管环境模型是不完美的,但是它仍然可以在探索现在暂时未知的区域时提供先验知识来避免无目标的和危险的探索。如果只使用Trial-and-Error的方法来探索,那么在于真实环境交互的过程中危险的举动是不可避免的。
但是,仅仅有一个不完美的环境模型无法探索到更大的区域,需要额外的信息,这就需要搜集样本了。通过混淆来自于模型和样本的信息就可以计划一个混淆ACS算法。这里的混淆指代的就是混淆来自于模型和样本的信息。
9.7.3.1 安全环境交互的机制
在具有安全保证的混淆ACS算法中,每次迭代都必须同时给出一个安全的策略 π k \pi_k πk和一个安全的可行域 X k X_k Xk。在SOTI模式下, π k \pi_k πk必须在 X k X_k Xk内是安全的,相应的第k+1步的探索也被限定在 X k X_k Xk内(这里讨论的是只使用环境模型的情况,使用样本的情况会在下一节讨论)。而第k+1步探索也会输出一个新的策略-区域对 ( π k + 1 , X k + 1 ) (\pi_{k+1},X_{k+1}) (πk+1,Xk+1),其中策略 π k + 1 \pi_{k+1} πk+1是在 X k + 1 X_{k+1} Xk+1内是安全的。这样就递归的保证了安全。
然而,只是这样有一个缺陷,就是安全探索会被范围在每个局部区域内,耳聪局部区域获取的信息不敷以训练一个在整个状态空间的策略。为了办理这个问题,混淆的ACS Trainer首先根据局部探索得到的数据来执行区域的PIM,之后再转向使用在局部区域之外的模型信息。混淆的ACS迭代过程如下图所示:
在上图中,通过每次获取可行区域之外的与真实环境交互得到的信息(蓝色箭头)来更新模型,这样可行区域越来越大,最终收敛到EFR。
另外,一个实际的ACS Trainer必须参数化它的策略函数、值函数和可行性函数。这样做有两个好处:
- 可以减小搜刮空间,避免维度爆炸。
- 函数的连续性可以将局部区域内正确的环境信息扩展到每个局部区域的领域,这对于加速可行性检验的过程黑白常紧张的。如果合适的选取函数的连续性,那么学到的可行区域的巨细就会不停增长,直至收敛到EFR(但是实际上这是一个不可能的,由于在缺乏对于不可行区域正确信息的情况下无法再保证安全的情况下确定可行与不可行区域的边界)。
9.7.3.2 使用区域加权梯度的混淆ACS算法
在混淆的ACS算法中一个焦点问题是怎么处理处罚不完美的环境模型(提供的关于环境动力学的信息中包含一定程度的不确定性)。办理的思绪如下:在最坏情况下搜寻一个次优的策略和次完美的可行区域。最坏情况保证了保有安全探索的本领(即使这会牺牲一定程度的最优性)。从这个角度来看,可以把环境模型的不确定性当作是一个对抗的组件,该组件的目标是搜刮在最坏情况下的不确定性。那么,在第9.6.3.2节转化得到的拉格朗日对偶优化问题 max φ min θ { L ( θ , φ ) } \max_\varphi\min_\theta\{L(\theta,\varphi)\} maxφminθ{L(θ,φ)}的基础上,进一步在最内层加入参数化的不确定性来构建一个新的优化问题:
max θ min δ max δ { L ( θ , φ , δ ) } with L ( θ , φ , δ ) = Q ( x , u ) + λ ( x ; φ ) h ( x ′ ) . \max_\theta\min_\delta\max_\delta\{L(\theta,\varphi,\delta)\}\\\text{with}\\L(\theta,\varphi,\delta)=Q(x,u)+\lambda(x;\varphi)h(x^{\prime}). θmaxδminδmax{L(θ,φ,δ)}withL(θ,φ,δ)=Q(x,u)+λ(x;φ)h(x′). 这里的 θ \theta θ是Actor的参数, φ \varphi φ是Scenery的参数, δ \delta δ是不确定性的参数。最内层针对 δ \delta δ的最大化问题意味着寻找最坏情况下的扰动,而中心层和最外层则分别表示在最坏情况下寻找此时的最优策略和最优可行区域。
接下来,我们要办理怎么混淆来自于真实环境采集的数据的信息和来自于不完美模型的信息。方法是加权。将使用真实数据盘算得到的梯度记为 ∇ J D \nabla J^{\mathrm{D}} ∇JD,使用模型盘算得到的梯度记为 κ = A r e a ( X k ) / A r e a ( X ) ∇ J # M i x = κ ∇ J # D + ( 1 − κ ) ∇ J # M # = A c t o r , C r i t i c , S c e n e r y , \begin{gathered}\kappa=\mathrm{Area}(\mathrm{X}_k)/\mathrm{Area}(\mathcal{X})\\ \nabla J_\#^\mathrm{Mix}=\kappa\nabla J_\#^\mathrm{D}+(1-\kappa)\nabla J_\#^\mathrm{M}\\\#=\mathrm{Actor},\mathrm{Critic},\mathrm{Scenery},\end{gathered} κ=Area(Xk)/Area(X)∇J#Mix=κ∇J#D+(1−κ)∇J#M#=Actor,Critic,Scenery,其中的 κ \kappa κ是一个权重, A r e a ( X k ) \mathrm{Area}(\mathrm{X}_k) Area(Xk)是当前的可行区域的巨细, A r e a ( X ) \mathrm{Area}(\mathcal{X}) Area(X)是整个状态空间的巨细。但是实际上界说这样一个面积函数是很困难的,因此可以采取抽样多少个Sample来看有多少落在可行区域内来估算这个比值。
总结一下,混淆ACS算法应该具有一个安全的Sampler来实现在线的安全采样以及一个混淆的Learner来实现策略改进和可行区域扩展。
下面给出基于可解性函数、在SOTI模式下的混淆ACS算法的伪代码:
- 与真实世界交互收集到的数据必须在可行区域内进行收集(由于必须保证安全),而不完美的环境模型可以提供一些关于未知区域的信息(虽然可能不准但是起码能提供一个方向性指导)来扩大可行区域。
- 在每次迭代时,每个组件(Actor、Critic、Scenery)都会更新多少次来防止过早停止造成的数值误差。这样可以或许找到更安全的策略和更大的可行区域。
- 上面代码里的(1) Collect data in the local region部分数据分为两个泉源,来自于真实环境交互的数据必须保证其来自于当前的可行区域,而来自于模型的数据则来自于当前可行区域之外。
- 更新 J A d v J_{\mathrm{Adv}} JAdv的时候梯度为什么这样算呢?由于是关于 ϕ \phi ϕ求梯度且 x ′ = f ( x , u ) + δ x^{\prime}=f(x,u)+\delta x′=f(x,u)+δ,而 δ \delta δ又是 ϕ \phi ϕ的函数,以是要用链式法则。
- 新的可行区域 X k + 1 X_{k+1} Xk+1为什么是通过上面谁人式子盘算的呢?就是在9.6.3.2节讲过的通过互补松弛条件来确定新的可行区域。
9.7.4 安全盾机制
由于不充足的探索、函数近似误差或者过早停止算法迭代或者压根就没有思量到安全,我们都需要引入安全盾机制作为最后一道屏障来保证安全。安全盾的原理是持续监控RL Agent的举动,如果发现有不安全的动作就用一个安全的动作来更换。最简单的更换方式是将不安全的动作投影到到一个新的动作,使得通过这个新的动作转移到的下一个状态满意束缚。投影实际上可以当作一个优化问题:
u S a f e = arg min u max ∥ δ ∥ ≤ 1 ∥ u − π ( x ) ∥ 2 , subject to x ′ = f ( x , u ) + δ , h ( x ′ ) ≤ 0 , u_{\mathrm{Safe}}=\arg\min_{u}\max_{\|\delta\|\leq1}\|u-\pi(x)\|^2,\\\text{subject to}\\x^{\prime}=f(x,u)+\delta,\\h(x^{\prime})\leq0, uSafe=argumin∥δ∥≤1max∥u−π(x)∥2,subject tox′=f(x,u)+δ,h(x′)≤0, 其中的 π ( x ) \pi(x) π(x)是当前的策略, x x x是当前的状态, x ′ x^{\prime} x′是下一个状态, h ( x ′ ) h(x^{\prime}) h(x′)是下一个状态的束缚函数,这里的环境模型思量了不确定性。还需做几点表明:
- 上面的minimax问题是什么意思?为什么这样构建:内层的max代表了在模型不完美存在不确定性的情况下的最坏情况,外层的min代表了在最坏情况下找到一个投影,那么这个投影必定是能保证安全的。为什么这样构建一是由于极难获取到完美的环境模型,且如果有了完美的环境模型,你把么直接使用OTOI模式就只需要保证最后的策略是安全的,也就不需要安全盾了。
下图展示了安全盾的工作原理:
值得注意的是,如上图中的右图所示,安全盾机制无法保证递归可行性,因此也无法快速把靠近不可行区域的状态拉回到可行区域。一个可能的办理方案是在安全盾机制中使用one-step barrier束缚来替代one-step pointwise束缚。
还应指出,安全盾机制并不总是能保证安全,特别是当由于某些原因进入了一个不可行区域时并不能把agent拉回到可行区域。因此,安全盾机制的应用应该满意下面的条件:
- 尽可能多的满意安全束缚
- 尽可能少的应用安全盾机制(防止由使用导致的最优性损失以及盘算量增大)
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |