從錯誤中吸取教訓是人類能長久保持優(yōu)勢的原因之一,即使我們做了失敗的嘗試,但至少有一部分是正確的,總結經(jīng)驗后也能成功。
機器人也可以使用類似的試錯法學習新任務。通過強化學習,機器人嘗試用不同的方法做一件事,如果嘗試的方法有效則會獲得獎勵。給予獎勵生成的強化,機器人會不斷嘗試直到成功到達目標。
人與機器的不同之處在于我們如何從失敗和成功中學習,從中我們不僅知道哪些東西對實現(xiàn)目標沒有幫助,而且能了解為什么失敗以及之后如何避免。這就使我們能比機器人更有效地學習。
今天,位于美國舊金山的人工智能研究機構OpenAI發(fā)布了一款開源算法,名為Hindsight Experience Replay(HER),該算法將失敗作為成功的手段,讓機器人像人類一樣學習。
HER的重要特征是它能像人類一樣,即使沒有達到預期目標,但至少收獲了其他成果。那么為什么不假裝這就是最初想實現(xiàn)的目標呢?
Spectrum IEEE的編輯Evan Ackerman用比喻具體形容了HER的原理:想像一下你正要擊打棒球,目標是全壘打。但是在第一次擊球時,球出界了,雖然沒有做到全壘打,但是你卻知道了一種打出界球的方法。事后通過總結,你可以這么想:“如果我的目標就是打個出界球,那么剛剛的那一記擊球就是完美的!”雖然沒有打出全壘打,但仍然有了進步。
HER的另一個優(yōu)點是它使用了研究人員所稱的“稀疏獎勵”來指導學習。獎勵是我們如何告訴機器人它們的所作所為對強化學習是好事還是壞事。大多數(shù)強化學習算法使用的是“密集獎勵”,機器人根據(jù)完成目標的程度獲得不同大小的cookies。這些cookies可以單獨獎勵任務的一個方面,并在某種程度上幫助指導機器人按照指示的方式學習。
密集獎勵很有效,但是部署起來卻有些麻煩,并且在有些情況下并不是那么實用。大多數(shù)應用非常關注結果,并且出于實用的目的,你可以從中取得成功,也可能不成功。稀疏獎勵是指,機器人在成功后只得到一個cookie,這樣一來,該程序就更容易測量、編程和實施。但另一方面,這種方法可能會降低學習速度,因為機器人沒有獲得增量反饋,它只是被一遍又一遍地告訴“沒有cookie”,除非它非常幸運地偶然成功了。
這就是HER的基本原理:它讓機器人通過分散獎勵學習,改變原本的目標,把每次嘗試行為都看做成功,所以機器人每次都能學到一些東西。
通過這種方法,強化學習算法可以獲得學習信號,因為它已經(jīng)實現(xiàn)了一些目標;即使它不是你原本想達到的目標,如果重復這個過程,最終機器人也會實現(xiàn)任意一種目標,包括最初真正的目標。
下面的視頻是HER方法與其他深度學習方法在實踐中的對比,左邊是新開發(fā)的HER方法,右邊是T. Lillicrap等人于2015年提出的深度決定性策略梯度(DDPG)方法:
最終的結果對比差別非常大:
HandManipulateBlockRotateXYZ-v0上四個不同配置下的中位測試成功率(曲線)和四分位范圍(陰影部分)。數(shù)據(jù)繪制于訓練時期,每種配置下每隔五個隨機種子就進行總結
帶有稀疏獎勵的DDPG+HER明顯優(yōu)于其他所有配置,并且只從稀疏獎勵中學習了成功策略來完成這項具有挑戰(zhàn)性的任務。有趣的是,帶有密集獎勵的DDPG+HER能夠學習,但表現(xiàn)得卻不好。而Vanilla DDPG的兩種配置均不能學習。完整的實驗結果可以在論文中查看。
OpenAI此次發(fā)布了八個Gym模擬機器人環(huán)境(Gym是OpenAI用于開發(fā)和比較強化學習算法的工具包,它能教智能體各種任務,比如走路、打乒乓球或玩彈球等),其中四個用于Fetch研究平臺,四個用于ShadowHand機器人,使用的是MuJoCo物理模擬引擎。
Fetch上的四個環(huán)境
將機械臂末端以最快速度移動到目標位置
擊中灰色目標,使其滑動到桌上一固定位置
用機械臂末端推動正方體使其到達目標位置
機械臂抓取桌上的正方體,并停留在桌子上方某固定位置
ShadowHand上的四個環(huán)境
將拇指和另一個手指移動到指定位置
在手上翻轉正方體直到達到預期位置
在手上翻轉彩蛋直到達到預期位置
在手上轉筆直到達到預期位置
HER的問題
雖然HER對于學習稀疏獎勵的復雜任務是很有前景的方式,但它仍存在改進的空間。和OpenAI最近發(fā)布的Request for Research 2.0相似,研究人員針對HER的進步提出了一下幾條想法:
事后自動創(chuàng)建目標。目前的HER使用硬編碼策略選擇目標,如果算法可以自動學習應該會很有趣。
無偏差HER。替換目標以無原則的方式改變了經(jīng)驗的分布。這種偏差在理論上會導致不穩(wěn)定,盡管在實踐中還沒有遇到這種情況。
HER+HRL。將HER與最近推出的層次強化學習(HRL)結合起來一定很有趣。這樣一來,HER不僅僅可以應用到目標上,還能應用到較高層次的策略生成的動作上。例如,如果較高層次命令低層次實現(xiàn)目標A,結果實現(xiàn)了目標B,那么我們可以假設高層次原本命令的是目標B。
更豐富的價值函數(shù)。擴展最近的研究,并在額外的輸入上調整價值函數(shù),例如折扣因子或成功閾值。
更快的信息傳播。大多數(shù)off-policy深度強化學習算法使用目標網(wǎng)絡來穩(wěn)定訓練。然而,由于改變需要時間傳播,就會限制訓練的速度。我們注意到在我們的實驗中,這是決定DDPG+HER學習速度最重要的因素。
HER+多步驟回報。由于我們更換了目標,HER上的實驗是off-policy的。所以用多步驟回報使用它就變得困難了。然而,多步驟回報能讓信息傳播的速度更快,所以也是可行的。
On-policy HER。目前,HER只能與off-policy算法一起使用。但是,最近的算法如PPO的穩(wěn)定性非常好。所以我們可以研究一下HER能否與on-policy算法一起使用。
高頻動作的強化學習。目前的強化學習算法對動作過多的案例十分敏感,這就是為什么跳幀技術經(jīng)常用于雅達利游戲。在連續(xù)控制領域,動作頻率越趨近于無窮,性能則越趨近于零。這是由兩個因素造成的:不一致的探索,和需要多次引導來傳播信息。
將HER與強化學習的最近進展相結合。最近,強化學習在多個方面都有了很大進步,它可以和優(yōu)先經(jīng)驗回放(Prioritized Experience Replay)、分布強化學習(distributional RL)以及entropy-regularized RL或反向課程生成相結合。
在論文中你可以找到關于新Gym環(huán)境應用的更多信息。
使用基于目標的環(huán)境
引入“目標”概念需要對現(xiàn)有Gym的API進行一些反向兼容更改:
所有基于目標的環(huán)境使用gym.spaces.Dict觀察空間。環(huán)境需要包含一個智能體嘗試達到的預期目標(desired_goal)、一個目前已經(jīng)達到的目標(achieved_goal)、以及實際觀察(observation),例如機器人的狀態(tài)。
我們公開環(huán)境的獎勵函數(shù)以重新計算更換目標之后的獎勵。
下面是在新的基于目標的環(huán)境中,執(zhí)行目標替換時的簡單例子:
import numpy as np
import gym
env = gym.make('FetchReach-v0')
obs = env.reset()
done = False
def policy(observation, desired_goal):
# Here you would implement your smarter policy. In this case,
# we just sample random actions.
return env.action_space.sample()
whilenotdone:
action = policy(obs['observation'], obs['desired_goal'])
obs, reward, done, info = env.step(action)
# If we want, we can substitute a goal here and re-compute
# the reward. For instance, we can just pretend that the desired
# goal was what we achieved all along.
substitute_goal = obs['achieved_goal'].copy()
substitute_reward = env.compute_reward(
obs['achieved_goal'], substitute_goal, info)
print('reward is {}, substitute_reward is {}'.format(
reward, substitute_reward))
新的環(huán)境可以使用與Gym兼容的強化學習算法,如Baselines。用gym.wrappers.FlattenDictWrapper將基于字典的觀察空間壓縮成一個數(shù)組。
import numpy as np
import gym
env = gym.make('FetchReach-v0')
# Simply wrap the goal-based environment using FlattenDictWrapper
# and specify the keys that you would like to use.
env = gym.wrappers.FlattenDictWrapper(
env, dict_keys=['observation', 'desired_goal'])
# From now on, you can use the wrapper env as per usual:
ob = env.reset()
print(ob.shape) # is now just an np.array
-
算法
+關注
關注
23文章
4588瀏覽量
92505 -
AI
+關注
關注
87文章
29814瀏覽量
268109 -
人工智能
+關注
關注
1789文章
46660瀏覽量
237094
原文標題:OpenAI開放模擬機器人環(huán)境和HER算法,讓機器人從失敗中學習
文章出處:【微信號:jqr_AI,微信公眾號:論智】歡迎添加關注!文章轉載請注明出處。
發(fā)布評論請先 登錄
相關推薦
評論