1. 寫在最前面
最近一直在調研增強學習在機器人應用的文章, 看了一些文獻, 其中看到15年IROS上的一篇論文[2], 大致瀏覽了一下, 在PR2上進行了實現, 較之前看到的不少論文在仿真上實現感覺要靠譜一些, 論文提供了視頻DEMO, 下載下來看了一下, 直接感覺吊炸天了有沒有. 隨後就查了查他到底是屬於哪個學校的哪個實驗室. 最後聚焦到Sergey Levine身上. 進了Sergey Levine的個人主頁, 看了他的一些成果, 瞬間嚇尿了.
跟着Sergey看了他好幾篇論文, 個人感覺, 每一篇論文都好長. 而且公式很多, 涉及的知識點更多, 這都不是重點. 重點是, 在Sergey的論文裏面, 論文[2]中反覆提到之前的工作 [3 - 5], [3]中提及[4 - 5]的工作, 一直這麼往前延續, 當前的工作是建立在以前工作基礎之上, 讓人蛋疼無比.最後, 乾脆心一橫, 找出Sergey在13年發出的這篇論文, Guided Policy Search[1]進行閱讀.
按照時間順序, 依次看到幾年的幾篇論文, 花了很長的時間和精力. 作出了一些總結. 之後, 我會按照時間先後, 依次將我整理的一些資料發佈出來, 我發現這方面中文資料幾乎沒有(或許是我沒有找到-_-). 也方便後來者有一些中文的資料可以參考一下.
文檔中並不是逐字按照原文翻譯, 加入了我的一些理解, 以及省略了部分內容. 如果是想深入研究該算法的朋友, 最好還是以原文爲準, 以我的資料爲輔. 其中難免會有一些錯誤的地方, 有大神看到有理解錯誤的地方, 還請指出, 方便我對錯誤思想進行糾正, 也防止別人受了誤導.
2. Guided Policy Search
直接策略搜索(Direct Policy Search)能夠有效的應對高維繫統, 但是對於具有數以百計的參數的策略一直是具有挑戰性的, 需要數量非常大的樣本來進行學習, 並且容易陷入局部最優.本論文提出引導策略搜索算法(Guided Policy Search), 將軌跡優化(trajectory optimization)應用到直接策略學習中, 避免了陷入局部最優. 該論文提出, 可以使用差分動態規劃(Differential Dynamic Programming)生成合適引導樣本(Guiding samples), 並使用了一個新穎的正則化項, 提出正則化重要樣本策略優化(regularized importance sampled policy optimization), 用來合併這些引導樣本到策略搜索中. 論文最後, 進行了一系列仿真實驗, 驗證算法效果.
2.1 Preliminaries
增強學習可以表述如下:
增強學習目的是找到一個最優的策略
從時間步1到時間步
策略梯度算法(Policy gradient method), 是通過直接優化用參數
其中,
上訴過程, 每一次迭代需要使用到評估器對目標期望函數進行梯度評估. 一般方法是, 使用當前策略產生一系列的樣本, 然後使用這些樣本來估計函數的當前的梯度, 這樣會產生巨大的工作量, 讓學習過程變得非常耗時, 並且每一次迭代產生的樣本使用之後將會被丟棄, 下一次迭代並無法使用. 這類的算法不允許使用off-policy樣本, 同時對於每一梯度步的步長選擇也需要謹慎才能確保達到收斂.
2.2 Importance Sampled Policy Search
重要採樣(Importance Sampled)是一項技術, 使用另一個概率
其中, 如果使用的概率分佈
通過Importance Sampled技術的使用, 允許我們使用off-policy樣本在下述評估器中.
由於過去的回報值並不依賴於以後的回報值, 上述評估器的變量可以進一步分解如下:
其中,
爲了能夠利用到更多可用的引導分佈, 該論文follow之前的工作,
之前的工作中, 很多人都是直接優化Eq. (1), (2). 事實證明, 其效果往往不好.由此, 該論文引入了一個新穎的正則化項.改進目標函數如下:
該函數的梯度可由下述公式計算(詳細推算見[1]中附錄):
2.3 Guiding Samples
之前一些工作中, 也採取用了Importance Sample的方式來重複利用off-policy樣本, 但當策略參數維度很大時, 如此的局部優化很難找到一個比較滿意的解. 爲了解決這個問題, 論文論證如何利用DDP來補充off-policy樣本集, 引導策略向高回報區域搜索, 以獲得一個更好的解.
一個有效的引導分佈, 是能夠覆蓋高回報區域, 同時避免大
給定一條軌跡
依據DDP算法中推到, 可以求得Q函數:
值函數:
線性策略:
從線性策略的表述中可以看到, 該控制器由兩部分構成, 第一部分是均值部分, 第二部分是回饋部分,
重複計算策略可以得到一條新軌跡.這個算法將會收斂到局部最優.
現, 將回報函數進行改進:
其中,
最優策略[6]:
其中, 值函數:
在線性動態, 二次回報的環境下, Eq. (3) 是一個線性高斯, 均值是
2.4 Adaptive Guiding Distribution
在前面的討論中, 引導分佈的構建只是獲取高回報區域, 而沒有思考當前策略. 我們可以簡單的改進回報函數爲
2.5 Incorporating Guiding Distribution
該論文構建多個DDP結果, 用以補充Importance Sample策略搜索算法的中的樣本. 同時, 這些結果也可以通過人爲演示或離線的樣本規劃獲得. DDP策略
2.6 Guided Policy Search
Guided Policy Search |
---|
01: 生成DDP結果: |
02: 從 |
03: 初始化最優策略: |
04: 構建初始化樣本集合 |
05: for |
06: 選擇當前樣本集: |
07: |
08: 從 |
09: 生成自適應引導樣本(可選) |
10: 在 |
11: if |
12: |
13: |
14: else |
15: |
16: 從 |
17: end if |
18: end for |
19: return |
整體算法僞代碼整理如上表所示.
第1行, 通過DDP算法構建初始結果, 也可以通過人爲演示初始化結果;
第2行, 初始化引導樣本;
第3行, 使用這些引導樣本初始化初始最優策略參數
第4行, 樣本集
第6行, 如果樣本集
第7行, 在樣本集上使用LBFGS算法優化目標函數
第8行, 增加
第9行, 如果採用自適應引導分佈, 則在此步完成自適應工作;
第10行, 使用Eq. (2) 來評估當前優化策略
第12, 13行, 若當前優化策略更好, 則更新最優策略
第15, 16行, 若當前優化策略更差, 則增大
高的正則化權重, 使得下一次優化時更接近於該樣本, 以使評估更加精確, 在實際操作中, 一直保持
GPS算法提供了公開的實現版本, 代碼實現模塊化很好, 算法部分由Python實現, 分別提供了三種不同平臺的仿真接口, 可運行於ROS中仿真器Gazebo, 策略的實現也給出了幾種不同的方式. 當然, 該代碼的實現已經不依賴於該論文, 其中涉及到更多的改進和提升. 大家可以查看作者的其他幾篇論文. 推薦看的下一篇論文是Learning Neural Network Policies with Guided Policy Search under Unknown Dynamics.
2.7 實驗 + 討論
這倆部分我就沒有細看了, 也就沒有形成文檔. 因爲作者是在仿真平臺上做的, 並且這篇論文已經是幾年前的成果了. 後面還有好幾篇等着我, 所以這個階段的討論和實驗就不那麼重要了.
3. 個人總結
GPS算法[1], 由Levine 在13年提出, 使用DDP產生處於高回報區域的引導樣本, 輔助策略搜索. 類似然比率評估器的重要採樣技術用於合併這些引導樣本到策略搜索中. GPS算法使用model-free的一些方法, 並結合model-based的DDP生成引導樣本對學習過程進行引導. 可以將其視爲將引導軌跡集合轉換爲一個控制器的過程.
待學習的策略, 是以參數來表達的某種一般性,靈活的模型, 比如神經網絡. 直接策略搜索, 目標函數形式化爲Eq. (1), 通過on-policy的方式採樣來估計梯度, 使用梯度下降的方法, 對參數進行優化, 得到最優參數的策略. GPS改進目標函數爲 Eq. (3), 通過Importance Sample技術, 再加入一個新穎的正則化項構成該目標函數. 允許算法使用off-policy樣本, 大大縮減了策略搜索時間, 並且更加充分的利用之前策略採樣得到的樣本. 但由於這樣學習到的策略很容易陷入局部最優, 不能學習到滿意的策略. 論文中, 又結合軌跡優化中最優控制技術, 通過DDP算法構建覆蓋高回報區域的引導樣本. 構建引導樣本的過程中, 如果考慮之前策略對引導樣本的影響, 提出自適應的引導樣本生成(在某些條件下具有不錯的效果). 將生成的引導樣本加入訓練樣本集中, 用於引導目標函數向高回報區域搜索最佳的策略.
該論文中, 系統狀態
Appendix
下述部分, 是我在閱讀這篇論文時, 查閱的一些其他資料, 幾乎都來自與Wiki.
A.1 Linear-Quadratic Control
LQ (Linear Quadratic) 控制問題是經典的最優控制問題. 其動態函數是一階線性函數, 代價函數是二階函數.數學描述如下:
代價函數:
s.t.
LQR[7](Linear Quadratic Regular)能夠提供LQ問題的一個控制方案.LQR是一個回饋控制器, 描述如下:
Finite-horizon, continuous-time LQR
對於連續時間系統, 定義
線性動態函數:
二階代價函數:
由回饋控制法則可知, 欲使代價函數最小, 則:
其中,
Finite-horizon, discrete-time LQR
對於離散時間系統,
線性動態函數:
二階代價函數:
由回饋控制法則可知, 欲使代價函數最小, 則:
其中,
A.2 Linear-Quadratic-Gaussian Control
在控制理論中, 線性-二次高斯控制問題(Linear-quadratic-gaussian[8])是最優控制中LQ問題的一個基本問題.LQG關注含有高斯白噪聲的不確定性系統, 狀態信息不完整, 並且滿足二階代價函數.
LQG 控制器是對Kalman Filter和Linear quadratic regular(LQR)的簡單合併. LQG控制可以應用到線性時變系統和線性時不變系統.LQG問題有如下數學描述:
Continuous time
動態函數:
其中,
代價函數:
其中,
使用LQG控制器解決LQG問題, 給定等式如下:
其中, 在每一個時刻
其中,
觀察上訴兩個Riccati微分方程(Riccati differential equation), 第一個微分方程是前向的(running forward in time), 第二個微分方程式後向的(running backward in time). 這種相似性被稱爲對偶性(duality).
第一個Riccati微分方程解決線性-二次評估問題(linear-quadratic estimation problem), 第二個Riccati微分方程解決線性-二次規整問題(linear-quadratic regular problem). 兩個對偶, 合併共同解決LQG問題.因此LQG可以獨立的分解爲LQE和LQR問題.
Discrete time
離散時間LQG問題與連續時間LQG問題類似, 數學描述如下:
動態函數:
代價函數:
離散時間LQG控制器:
其中, kalman增益項
其中, 反饋增益矩陣計算公式如下:
A.3 Differential Dynamic Programming
差分動態規劃(Differential Dynamic Programming[9]), 是軌跡優化(trajectory optimization)類中最優控制(optimal control)算法.
Finite-horizon discrete-time problems
動態函數:
描述時刻
代價函數:
軌跡最優, 就是給定初始狀態
Dynamic programming
設
則, 在時刻
令
顯然上訴規劃式是一個Bellman等式.
Differential dynamic programming
首先, 我們定義
擴展到二階如下:
上述公式中下標代表偏導.各個偏導可以使用下述公式計算:
對上式的二階展開求最小可得:
使用上述公式, 遞歸的從
如此, 前向pass, 反向pass直至收斂.
參考文獻
[1] Sergey Levine, Vladlen Koltun, Guided Policy Search, ICML 2013
[2] Weiqiao Han, Sergey Levine, Pieter Abbeel, Learning Compound Multi-Step Controllers under Unknown Dynamics, IROS 2015
[3] Sergey Levine, Chelsea Finn, Trevor Darrell, Pieter Abbeel, End-to-End Training of Deep Visuomotor Policies, JMLR 17, 2016
[4] Sergey Levine, Pieter Abbeel. Learning Neural Network Policies with Guided Policy Search under Unknown Dynamics, NIPS, 2014
[5] Sergey Levine, Nolan Wagener, Pieter Abbeel, Learning Contact-Rich Manipulation Skills with Guided Policy Search, ICRA 2015
[6] Ziebart, Modeling purposeful adaptive behavior with the principle of maximum causal entropy, Ph.D thesis, Carnegie Mellon University, 2010
[7] Wikipedia contributors. “Linear-quadratic regulator.” Wikipedia, The Free Encyclopedia. Wikipedia, The Free Encyclopedia, 15 May. 2016. Web. 23 May. 2016
[8] Wikipedia contributors. “Linear-quadratic-Gaussian control.” Wikipedia, The Free Encyclopedia. Wikipedia, The Free Encyclopedia, 18 May. 2016. Web. 23 May. 2016
[9] Wikipedia contributors. “Differential dynamic programming.” Wikipedia, The Free Encyclopedia. Wikipedia, The Free Encyclopedia, 28 Jan. 2016. Web. 23 May. 2016