【閱讀筆記】Safe Reinforcement Learning for Control Systems: A Hybrid Systems Perspective and Case Study

碩士論文題目:SAFE REINFORCEMENT LEARNING: AN OVERVIEW, A HYBRID SYSTEMS PERSPECTIVE, AND A CASE STUDY
HSCC:Safe Reinforcement Learning for Control Systems: A Hybrid Systems Perspective and Case Study

{Hybrid Systems: Computation and Control
HSCC 2019

摘要

RL在遊戲方面取得的成就主要用於具有離散環境和主體的系統。在安全-計算機-物理系統應用中使用RL的一個關鍵問題是 在確保他們安全的同時還要使他們能夠學習是很困難的。本文提出了一種用於學習非線性連續動力學控制系統安全策略的框架 FoRShield。建立了基於在線RL的控制系統的通用混合系統模型,該模型被用於形式化護盾的概念,該護盾可以過濾不安全的操作選擇並向學習系統提供反饋。Present了一種利用現有混合可達性分析工具計算屏蔽層的具體方法。最後,爲了說明這種方法的可行性,使用了一個無人機滅火的動態消防案例。

Introduction

我們的問題設置涉及分層控制系統:低層控制器將系統驅動到近期目標或航路點,一個高級的控制者或規劃者選擇一系列的目標來完成一個長期的任務。
低層控制器:現有的控制設計技術(如PID、LQR、MPC等)足以設計低級控制器。
高層規劃器:規劃者在完成任務時必須爲多個目標進行優化,同時滿足低級規劃者施加的約束。人們可以使用自適應控制技術來設計這種規劃器,但強化學習(RL)提供了另一個有利的方向,因爲它不需要完整的環境模型,也不需要明確的目標函數規範。
通常的RL算法很少對可以探索和學習的策略類型設置任何限制。
所以引入了一種護盾的方法,能夠將主體可以執行的操作集限制爲僅安全的操作集。儘管護盾的方法是直觀的,但如何開發模型來限制特定的操作集是模糊的。本文的工作通過可達性分析克服了這種模糊性。
提出的框架 FORShield: 利用帶護盾的RL的有效策略探索來同時驗證具有連續動態的agent在特定環境中的行爲。
爲了處理連續agent在狀態空間中的複雜性和爆炸性,本文框架中的學習算法還利用了連續agent的離散抽象。離散主體用於驅動離散環境中RL算法的探索過程,而護盾則使用連續主體的動力學來驗證所選擇的操作對於連續主體是安全的
我們還提出了一種對具有平移不變動力學的主體重用可達性分析計算的方法。(這個沒太明白作用是什麼)
主要貢獻如下:
(a)將基於RL的控制系統形式化爲一個混合系統的框架;
(b)利用現有的混合驗證技術對非線性對象模型和基於NN的RL算法的護盾提出適度的建議;
(c)在一個案例研究中對該方法進行了實驗可行性測試。

基於學習控制系統的形式化模型

在這裏插入圖片描貴航股份h述

  • Agent
    Sa,主體的連續狀態空間,由(低級控制器決定的)微分方程確定:
    在這裏插入圖片描述
    Oa ,the set of observable states of the agent。當前時刻,能夠觀察到的主體的狀態。
    Obs,Sa → Oa 主體的狀態到能夠觀察到的當前場景的映射。以案例爲例就是 :Sa → Oa := [n] × {Emp, Full},意思就是無人機本來是連續的一個9維狀態,但是要把它轉換到這個2維地圖中來,就只用關心它在哪一個格子,水箱是否有水就可以了。

  • Environment
    Se,離散的環境狀態。在無人機這個案例中就是這個二維的地圖。
    O, O = Oa ×Se 環境+主體的狀態集合。

  • Planner
    P,所有可能planners 的集合。
    Planner function Pl : O × G → G ,由當前觀察到的狀態和當前的目標,得到下一個目標。這就是計劃者的職責。

  • Learner
    Le : P×O×G_⊥ → P , 學習者根據當前觀察到的狀態(主體和環境)和當前目標,用一個新的計劃更新當前的計劃器,目的是在任務完成的同時實現任務目標確保安全

  • Goal
    G,可能被計劃指定的目標。案例中,就是地圖上每個格子的座標(r,c)表示,要去到這個目的地。

  • 混成系統的狀態空間
    Q = Sa × Se × G_⊥ × P,

  • 系統中的軌跡
    ξ,指的是[0,T]這一段時間的軌跡。

  • Shield 護盾
    Sh : O × G → {safe, unsafe}.輸入當前觀察到的狀態和當前的目標,輸出到達這個目標是軌跡是否安全。

  • 所以整個流程應該是,隨機初始化策略。然後learner把當前策略告訴Planner,Planner使用這個策略,再根據當前環境和主體的狀態輸出一個小目標。這個時候,我們有了主體狀態,環境狀態以及目標,就可以利用已有的可達集計算方法結合低級控制器的微分方程來檢查:在(Sa,Se)這個狀態使用一個固定的隨機策略p,確立一個g這樣的目標,是不是安全的。–這個過程就是shield護盾。 如果不安全就使用負reward對Learner反饋,令其使用新策略來重複剛纔的事情。如果安全,那麼就更新狀態,繼續前進。就這樣根據反饋來不斷更新策略,直到完成消防任務,獲得最佳策略。

  • 所以我們的目標就是,設計一個好的Learner和shield,使得系統H在安全的情況下,環境Se達到Se*這個目標狀態。

  • 整個混成系統的定義1: 四元組 H = ⟨Q, Θ, D, T ⟩

    • Q = Sa × Se × G⊥ × P is the state space of the automaton.
    • Θ ⊆ Q is the set of initial states
    • T is a set of trajectories for Q
    • D ⊆ Q × {env, pln,repln} × Q the set of discrete transitions
      • (ℓ =evn 並且時間到達了t(t)(每過t時間都會發生一次))environment transition:q′.Se ∈ En(q.Se ),all other components, remain unchanged
      • (ℓ =pln & 當前狀態的小目標q.G是合法的 & q.Sa的狀態已經到達了 ∈ Grd(q.G))planner transition:(q′.Sa,q′.Se ) = AE(q.Sa,q.Se ,q.G). q′.Pl = Le(q.Pl, Obs(q.Sa),q.Se ,q.G) 主體和環境都更新,同時策略也得到學習,然後指定一個新的目標g = q′.Pl(o′a_a,q′.Se ,q.G),如果這個新的目標是安全的,那麼當前系統狀態的小目標就是這個新目標,否則就設置爲⊥,意思是不安全,就會進入下一個轉換。
      • (ℓ =repln 並且當前小目標爲⊥,不合法)re-plan transition: q.G =⊥,oa_a = Obs(q.Sa),q′.Pl = Le(q.Pl, oa_a,q.Se , ⊥) , 主體和環境都保持不變q’的主體環境狀態和q一樣,但是學習者還是會學習到這個結果,然後重新選擇一個小目標 g = q′.Pl(oa_a,q.Se , ⊥). 如果新目標安全那麼就更新當前狀態,並把q’目標定爲新目標,否則q’ = ⊥。
      • 要注意的是,以上三種轉換隻要一激活就會立刻發生,在一個系統狀態中,只會有一個轉換髮生。並且在一瞬間可以同時發生很多次轉換,比如pln之後可能會連續好幾個持續時間爲0的軌跡來repln。
  • 定義2:我們定義的混成系統是goal-tracking的,因此對於每一個可以被planner選擇的目標g,每一條目標爲g的軌跡能夠在某個T*時間到達g。這個規定是爲了保證,低級控制器一定能把主體驅動到相應的目標點。

Shield護盾的實現

在這裏插入圖片描述
ReachH_H(Q0_0,T) 表示從Q0_0這個狀態出發,T時間內能夠到達的所有狀態。
如果初始狀態的Sa之間非常的靠近,那麼從Q0_0 出發,一定有個時間T,這個時候所有狀態都都能到達它們第一個執行pln轉換。也就是都只走很小一個範圍,因爲初始狀態是安全的,所以這個範圍內的狀態都安全。那麼
GoalReachH_H(Q0_0)表示的是從Q0這個狀態出發,在第一次到達pln轉換的時候,目標爲g的,那些狀態。
我們的目標就是計算出這個GoalReachH_H(Q0_0) 的過近似。如果這個過近似裏面的狀態都安全,那麼就能保證,對於當前狀態(Sa,Se)制定一個g目標很安全。
以上就是這篇文章中shield的實現方式。
此外,作者還對比了另外兩種shield的算法,來說明他的方法更加安全:

  • sim。就是提前模擬的方法,從狀態Q0_0出發,隨機選一個主體當前所在方格的點作爲主體的初始狀態arbitrary sa ∈ Obs1^{-1}(Oa),因爲當前的主體、環境狀態以及目標都是已知的,可以用解微分方程的方法,來模擬這個軌跡。只要到達了目標或者到達了不安全狀態就停止,返回safe或者unsafe。(顯然這種方法不安全的缺陷很大,因爲無法驗證所有的初始區域,你這次模擬他是安全的,但是無法保證實際運行的時候是安全的)
  • line。就是直接連線。如果你選擇了目標g,就直接在當前主體Sa所在的點和目標g的方格里面隨機選一個點連線,作爲軌跡,如果與U相交就不安全。(這個方法更加直白,缺陷也就更大)

然後作者簡要的證明了一下連續動力系統的平移不變性,並且如果動力系統具有平移不變性那麼它的可達集也具有平移不變性,這個結論在本實驗中並沒有被用到,可作爲以後的研究方向。
大概意思就是,如果兩個主體的初始狀態相差一個常量,並且他們的目標狀態也相差同樣的常量,那麼他們的軌跡的狀況其實是一樣的,主體A的可達集和主體B的可達集也可以同樣的平移,不需要做二次計算可以節省計算時間。(似乎是很有道理,但是實際應用中應該還是要考慮環境的變化因素,所以應該只能部分重用?)
在這裏插入圖片描述

具體實現、實驗與評估

實現 the shield, environment, agent and learner

  • FoRShield和sim使用 DryVR 來模擬無人機的連續動力學模型。(我的理解是用這個DryVR 方法來解微分方程模擬得到軌跡,對於FoRShield還要計算可達集。然後把計算的結果,就是所有的可達集,保存下來)。Line使用簡單的交叉算法(就兩個點連線,和U判斷交集)。Shield放置的位置可以有三種情況:
  • FoRShield使用的是預驗證:也就是提前把所有(O(sa),se,g)的可達集計算好了,然後再開始訓練,驗證的時候只用查詢一下就知道是否安全;[Figure6.7]
  • Sim 和 Line 使用時事驗證:一邊訓練,一邊用DryVR計算(O(sa),se,g)的可達集每次計算是否安全;[Figure6.8]
  • 以及後驗證:整個訓練完成之後,已經得到了一個完整的策略(就是這個actor網絡),然後從初始狀態出發,運行這個actor,actor會根據已學習到策略採取一系列的動作,然後DryVR一一驗證這些動作,如果有不安全的就記錄到緩存中,然後加到訓練集中,重新訓練策略。[Figure6.9]
  • Learner和planner的部分使用 actor-critic算法的DNN來實現,把原先的DQN中的一個Q網絡分解成了兩個:actor和critic。
    • critic就相當於DQN中用來擬合值函數的那個Q網絡用來計算累計回報的功能:它接受到狀態Stt,St+1_{t+1},行爲at_t和環境返回的立即回報 r,輸出一個累計回報 y,用來計算損失函數從而更新actor和critic網絡。這個案例中,critic網絡的輸出層就是一個值。
    • 而actor就負責根據當前狀態Stt輸出要採取的動作到環境中。本案例中,actor網絡的輸出就是[r+c]個結點,表示應該前往的目標點。
      預驗證:
      在這裏插入圖片描述
      時事驗證:
      在這裏插入圖片描述
      後驗證:
      在這裏插入圖片描述

實驗評估

在這裏插入圖片描述

  • 三種方法都找到了最優解,如果不是最優解就儘量輸出最短時間滅火的方案。
  • 時間上看,大部分情況 FSh的訓練時間都是最長的,可以解釋爲,FSh的選擇策略時受到更多的限制。但FoRShield驗證時間不會隨着案例變複雜而增加,甚至越來越快。因爲FSh提前緩存了可達集計算運行的結果,只需要簡單的查詢,並且隨着案例變複雜,不同算法和各自驗證所需的驗證次數和時間的差異就會變得明顯。
    在這裏插入圖片描述
  • 從驗證次數上看,每個例子中,Fsh總是執行最小次數的驗證,並且遇到的不安全驗證次數也是最少的(我的理解是因爲地圖是固定的,所以可達集的結果基本上是差不多的每次需要緩存的都是 O(Sa) X Se X g)。因爲Line和Sim只能用在線的方法來驗證,採取的每一個行動都需要驗證,所以需要大量的驗證。但只有FSh能夠在訓練期間完全規避掉不安全的操作。

案例速覽

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

  • 主體(無人機)狀態空間:Sa = R9^9 × {Emp, Full}.就是無人機自身的物理狀態(質量、速度、加速角速度,俯仰角等,這些變量用於低級控制器通過動力學方程將無人機驅動到目標位置)和水箱的狀態。
  • 主體在環境中的狀態:Oa = 可能着火的區域數5^5 X 地圖維數 X [full,empty]
  • 環境狀態:Se = [8]n^n 因爲每個格子會有8種狀態,但其中只有5種需要無人機處理, n表示地圖維數 在這裏插入圖片描述
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章