文章目录
Abstract
本文关注已知动力模型的情况,目标是验证仿真学到的控制策略能满足一个给定的安全约束。已有的方法受到很多限制-如不可扩展到高维状态空间,且仅能验证固定环境的安全性。本文提出一个基于shielding的方法,当需要的时候用一个候补策略来覆盖当前策略以保证安全性。本文的策略是一种online的策略,在保证高效的计算效率的同时,能在新的环境下仍保证其安全性。
Introduction
在机器人任务中,强化学习是一种非常有潜力的自动策略生成方法,但其无法在实际任务中得到应用的主要的挑战就是无法对学到的策略进行安全性的保证。
本文考虑一种场景:在仿真情况下得到了一个控制策略,我们的目标就是在实际的环境中使用它。假定机器人的动力学方程已知,但环境预先未知(即实际运行之前未知,但在运行时是可以感知到障碍物位置的)。比如一个四翼飞行器的例子,对其动力学系统已经有了很精确的模型,但我们想要在不同的环境(不同的障碍物)中使用它,假设飞机的感知是精确的,即可以感知到障碍物的位置,本文的目标是当面对一个新的环境时,一个给定的学到的策略是安全的。
已有的安全强化学习方法依赖于对需要的安全属性的提前验证,如验证策略的安全性或护盾学习等。主要有几点局限性:一是计算不可行,随着状态空间维度的增加指数级增长。二是已有的方法集中在验证关于固定环境的安全属性,而如果处理一个新的环境,要么提前验证所有可能的环境,要么每次遇到一个新的环境就重新验证。最后,已有的方法主要关注稳定性,即机器人保持在状态空间的某个约束的区域,然后实际上机器人可能会包含更多动态的行为。
Contribution:
1.本文提出一种online的保证安全性的强化学习算法。该算法假定给定一个safe policy(LQR),但只在状态空间的有限部分是安全的。 然后该算法学习一个recovery policy,能够将系统恢复到一个safe policy能够使用的状态,所以候补策略就是先用recovery policy恢复,然后用safe policy控制。最后,本文的算法使用不变式保证recovery policy可以安全的转换机器人状态从而保证整个控制的安全性。
2.在cart-pole和bicycle模型上评估了算法,证明该方法可以用于动态机器人系统的安全性,对随机障碍物场景也可适用。同时评估了方法的可扩展性。
Preliminaries
给定任一控制策略 π ^ \hat\pi π^,本文目标是最小的修改 π ^ \hat\pi π^来得到一个能保证安全性的控制策略 π s h i e l d \pi_{shield} πshield
Dynamics and control:
考虑一个确定的离散时间连续状态的动力系统: x ⊆ R n x x \subseteq R^{nx} x⊆Rnx,连续的动作空间 u ⊆ R n u u \subseteq R^{nu} u⊆Rnu,动力学方程 f : X ∗ U → X f:X*U \rightarrow X f:X∗U→X,以及一个初始状态分布 d 0 ∈ X d_0 \in X d0∈X。给定一个控制策略 π : X → U \pi : X \rightarrow U π:X→U,用 f π ( x ) = f ( x , π ( x ) ) f^{\pi}(x) = f(x,\pi(x)) fπ(x)=f(x,π(x))表示混合系统。
Remark 2.1
对非多项式的系统,用局部5阶泰勒逼近。
Shielding
定义安全区域: X s a f e ⊆ X X_{safe} \subseteq X Xsafe⊆X,其形式为 X s a f e = { x ∈ A ∣ A s a f e x ≤ b s a f e } X_{safe} = \{x\in A | A_{safe}x \leq b_{safe}\} Xsafe={
x∈A∣Asafex≤bsafe},其中 A s a f e ∈ R k ∗ n , b s a f e ∈ R k A_{safe} \in R^{k*n},b_{safe}\in R^k Asafe∈Rk∗n,bsafe∈Rk
策略 π \pi π的安全性就定义为从初始状态 x 0 x_0 x0开始,无穷时间域上 x t ∈ X s a f e x_t \in X_{safe} xt∈Xsafe
给定一个策略 π ^ : X → U \hat\pi:X\rightarrow U π^:X→U,可以是任何形式(多项式,网络…),目标就是要生成一个策略 π s h i e l d \pi_{shield} πshield满足:(i)从初始区域出发的尽可能多的点都是安全的。(ii)获得尽可能高的回报。将他们形式化的定义为:
p s a f e ( π s h i e l d ) = P x 0 ∼ d 0 [ π s h i e l d p_{safe}^{(\pi_{shield})} = P_{x_0\sim d_0}[\pi_{shield} psafe(πshield)=Px0∼d0[πshield safe starting at x 0 ] x_0] x0]
J π s h i e l d = E x 0 ∼ d 0 [ ∑ t = 0 ∞ γ t R ( x t ) ] J^{\pi_{shield}} = E_{x_0\sim d_0}[\sum_{t=0}^{\infty} \gamma^tR(x_t)] Jπshield=Ex0∼d0