郭坤 武曲 張義



摘要:目前應用于機械臂控制中有許多不同的算法,如傳統的自適應PD控制、模糊自適應控制等,這些大多需要基于數學模型。也有基于強化學習的控制方法,如:DQN(Deep Q Network)、Sarsa等。但這些強化學習算法在連續高維的動作空間中存在學習效率不高、回報獎勵設置困難、控制效果不佳等問題。論文對基于PPO(Proximal Policy Optimization近端策略優化)算法實現任意位置的機械臂抓取應用進行研究,并將實驗數據與Actor-Critic(演員-評論家)算法的進行對比,驗證了使用PPO算法的控制效果良好,學習效率較高且穩定。
關鍵詞:強化學習;機械臂;近端策略優化算法;Actor-Critic算法;離線學習
中圖分類號: TP301? ? ? ? 文獻標識碼:A
文章編號:1009-3044(2021)04-0222-04
Abstract: In manipulator control, there are many different control methods, such as traditional adaptive PD control and fuzzy adaptive control, which are mostly based on mathematical models. There are also control methods based on reinforcement learning, such as DQN (Deep Q Network), Sarsa, etc. However, these reinforcement learning algorithms have some problems such as low learning efficiency, difficulty in setting rewards, and poor control effect in the continuous high-dimensional action space. According to Proximal Policy Optimization algorithm, the application of robot arm grasping at any position is studied, and the experimental data is compared with actor-critic algorithm, which proves that the PPO algorithm has good control effect, high learning efficiency and stability.
Key words: reinforcement learning; robot manipulator; proximal strategy optimization algorithm; Actor - Critic algorithm; offline learning
目前在機器學習領域,根據學習系統與環境交互方式的不同,機器學習大致上可分為三種學習方法——強化學習、監督學習、無監督學習[1]。在基于行為的智能機器人控制系統中,機器人是否能夠根據環境的變化進行有效的行為選擇是提高機器人的自主性的關鍵問題[2]。隨著信息技術的發展,以強化學習為代表的智能算法以其自適應特性越來越多運用于機器人控制領域[3,4]。其中機械臂控制作為機器人控制的重要模塊發展迅速,深度強化學習(DRL)的出現使得機械臂具備了自主學習能力[5],解決了機械臂只能通過固定程序完成任務,在復雜高維的環境中無法自適應訓練學習的問題。
在深度強化學習中,典型的優化策略有深度Q網絡(DQN)[6] 、深度SARSA(State Action Reward State Action)[7]和彩虹(Rainbow)[8]等。這些方法多用來處理離散動作低維度的問題,無法應用于機械臂抓取這類連續動作。雖然策略梯度(Policy Gradients)、演員-評論家(Actor-Critic)等方法,能應用于連續空間,但基于Actor-Critic算法的近似策略優化PPO(Proximal Policy Optimization)方法在處理學習率的問題上表現更加優異,能更好地應用于機械臂控制問題。
1 強化學習
強化學習是一種無監督學習方法,Agent 通過與動態環境的反復交互,學會選擇最優或近最優的行為以實現其長期目標[9]。Sutton 和 Barto 定義了強化學習方法的四個關鍵要素:策略、獎賞函數、價值函數、環境模型[10]。如圖1,Agent通過與Environment反復交互進行學習,每次交互中Agent采取某種動作傳入Environment,Environment根據傳入的動作向Agent提供觀測值以及獎勵值,來使Agent做出新的動作。強化學習的目的就是Agent通過與環境的不斷交互,來獲得最優的累計獎勵值。
如圖2所示,Agents分為三類,雖然Value-Based的強化學習可以有效完成連續狀態空間的問題,但它的動作空間仍是離散的,也無法學習隨機策略或應用到高維空間。而Policy-Based雖然能解決上述問題,但缺點是只能局部收斂且評估策略效率低方差很大。Actor-Critic結合了前兩種類型的優點,通過策略梯度的方法選擇動作,同時也保存在每個狀態所得到的獎勵。
2 Actor-Critic算法
Actor-Critic算法將Value-Based和Policy-Based結合,具有Actor和Critic兩種不同的體系,可以看作兩個不同的神經網絡。
此算法的主要思想是不使用reward來評估真實價值函數,而是利用Critic網絡來評價價值函數,用Policy函數作為Actor,生成動作與環境進行交互,Critic來評價指導觀察Actor的動作并做評價。Critic的評估action-value函數是基于[πθ]的近似如公式(1):
其中s為狀態,a為動作,[πθ]代表策略。所以Actor-Critic算法是遵循近似的Policy Gradient(策略梯度)如公式(2):
Critic網絡需要更新參數w,Actor網絡需要更新參數θ,基本的Actor-Critic算法流程如算法1所示:
算法1 Actor-Critic算法
輸入:[γ,α,β,θ,w]
輸出:optimized[θ,w]
1.Initialize:s,θ
2.Samplea~[πθ]
3.foreachstepdo
4.? Samplerewardr=[Ras];sampletransition[s'?Pas],
5.? Sample action [a'?πθs',a']
6.? [δ=r+γQws',a'-Qws,a]
7.? [θ=θ+α?θlogπθs,aQws,a]
8.? [w←w+βδ?s,a]
9.? [a←a',s←s']
10.end for
結束算法
Actor-Critic算法成比例的優化Critic模型,使它向著TD error(TD誤差)乘以特征的方向(誤差最小化)進行優化,此處的誤差指估計的價值和執行步驟后現實的價值之間的。Actor模型實際決定在環境中做什么,并向Critic模型認為價值高的方向優化。
3 PPO(Proximal Policy Optimization近端策略優化)算法
Actor-Critic采用在線更新方法,不能經驗回訪,PPO(Proximal Policy Optimization近端策略優化)基于Actor-Critic算法,應用Important-sampling實現離線更新。PPO在每步迭代中都更新新的策略,在保證損失函數最小的同時減少與上一步策略間差值,所以引用Important-sampling數學方法,在有連續隨機變量x,[px]、[qx]為概率密度,[fx]的期望表示如公式(3)所示:
[pxqx]為Importance Weight,是新舊策略在當前狀態s采取動作a對應的概率比。在ppo中的一個回合中不斷重復對[qx]充分采樣,來改進新策略[px],則N回合平均獎勵值的梯度為公式(4):
ppo在更新Actor時,使用clipped surrogate objective的方式,對[pθat|stpθ'at|st]進行clip操作,[clippθat|stpθ'at|st,1-?,1+?]([?]為可調超參數)。
算法2 PPO算法
輸入:[s]環境狀態
輸出:a動作
1.Initialize:Actor[A(s∣θA)]網絡、Critic[C(s,a∣θC)]網絡、Clip
2.for episode=1 to M do
3.? for t=1 to T do
4.? [at←A(s∣θA)]
5.? ?執行[at],獲得單步獎勵[rt]
6.? ?更新Actor網絡權重[θA]
7.? ?更新Critic網絡[θC]
8.? end for
9.end for
4 實驗設計與實現
4.1 實驗機械臂設計
本文使用python中pyglot可視化庫來構建二維機械臂環境來實現機械臂抓取控制。仿真環境參考了周沫凡的 2D機械臂仿真模型[11],在此基礎上對環境進行修改,使其更易于實現PPO的仿真實驗。如圖4所示,以o為中心點建立機械臂初始中心點,實驗中將始終繞o轉動,利用三角函數與設定L1、L2臂長計算每段手臂4個端點坐標,以便機械臂隨機生成轉動角α、β時記錄對應坐標。同時環境每次刷新目標位置也隨機生成,實現任意位置的機械臂抓取,不僅豐富訓練數據,也能測試算法的穩定性。
4.2 實驗參數設置
通過仿真環境獲取轉動角α、β與對應坐標關系,向三層全連接神經網絡輸入7維狀態空間(L1末端與o點水平距離和垂直距離、L2末端與o點水平距離和垂直距離、o點與仿真環境中心點水平距離和垂直距離、是否達到目標位置),輸出2個動作(關節轉動角度)。
因為稀疏的回報值學習效果很差,所以在設置獎勵回報時將離散回報值改寫為連續回報值,當機械臂L2末端(x2,y2)離目標位置(xo,yo)相對距離越近獎勵值越大,相對距離表示為Dabs=[x2-x02+y2-y02],獎勵回報值公式(5)如下:
4.3實驗效果與分析
實驗效果如圖5所示,在交互界面上可任意移動目標位置,機械臂都能準確地實現快速抓取,說明了PPO有良好的學習效果。
在將Actor學習率、Critic學習率、訓練次數、訓練網絡單次提取的數據Batch_size、衰減率等共有參數均保持相同的情況下,比較 PPO與Actor-Critic深度強化學習算法,驗證PPO更適用于機械臂控制。
圖6、7分別表示PPO與Actor-Critic前1000集獎勵函數圖,雖然顯示兩種算法都能在該環境中達到良好學習效果,但 PPO能在更少的集數中取得最更大的獎勵值,與Actor-Critic比較收斂速度提高了27.58%學習效率更高,且明顯獲得的獎勵值更高。
圖8表示了兩種算法訓練最后100集所用步數,共分為10組對比區間內累計step。Actor-Critic的平均步數是117.28,PPO的平均步數是101.96,通過對比發現PPO所使用的step更少并且數據波動浮動相對穩定,訓練效果更好。
5 結束語
本文通過實現基于PPO算法的機械臂任意位置抓取,根據成功訓練出的仿真結果與 Actor-Critic算法實現的數據對比,分析應用在機械臂實驗中強化學習算法效果,驗證了PPO能實現良好的學習效果,學習效率較高且穩定。
參考文獻:
[1] 褚建華. Q-learning強化學習算法改進及其應用研究[D].北京化工大學,2009.
[2] 秦志斌,錢徽,朱淼良.自主移動機器人混合式體系結構的一種Multi-agent實現方法[J].機器人,2006,28(5):478-482.
[3] Liu Q, Zhai J W, Zhang Z C, et al. Review of deepreinforcement learning[J]. Chinese Journal of Computers,2018(1): 1-27.
[4] Wang S, Chaovalitwongse W, Babuska R. MachineLearning Algorithms in Bipedal Robot Control[J]. IEEETransactions on Systems Man & Cybernetics Part C, 2012,42(5):728-743.
[5] 劉全,翟建偉,章宗長,等.深度強化學習綜述[J].計算機學報,2018,41(1):1-27.
[6] Mnih V,Kavukcuoglu K,Silver D,et al.Human-levelcontrol through deep reinforcement learning[J].Nature,2015,518(7540):529-533.
[7] Zhao D,Wang H,Shao K,et al.Deep reinforcementlearning with experience replay based on sarsa[C]//Proceedings of the 2016 IEEE Symposium Series on Computational Intelligence(IEEE-SSCI),2016:1-6.
[8] Hessel M,Modayil J,Van Hasselt H,et al.Rainbow:combining improvements in deep reinforcement learning[J].arXiv preprint arXiv:1710.02298,2017.
[9] Wang Z,Shi Z,Li Y,et al. The optimization of path planning for multi-robot system using Boltzmann Policy based Q-learning algorithm[C]/ /2013 IEEE International Conferenceon Robotics and Biomimetics(ROBIO). Shenzhen,2013:1199 -1204.
[10] Sutton, R, Barto, A. Reinforcement Learning: An Introduction[M]. MIT Press, 1998.
[11] Morvanzhou. Train a robot arm from scratch[Z]. 2017: [2018-10-4].
【通聯編輯:唐一東】