###### tags: `robotics` # 為什麼機器人的研究都做強化學習?淺談強化學習的特性 過去學相關課程時,我記得老師很突然地就開始教強化學習了,也沒說為什麼,完全找不到時機問「為什麼用強化學習?」最近複習筆記時這個問題又浮上心頭,不可能只有我很好奇這件事吧?於是在查資料後,總算是搞懂了那些技術之間的關係,試著用自己的話來解釋看看。 <p class="text-center"> *** </p> ## 機器學習的三種方式 機器學習裡最常見的分類方式將模型分成三大類:監督式學習、非監督式學習與強化學習。 一般課程都是從監督式學習開始學起,然後再談非監督式學習,最後再講強化學習,所以我一直以為它們是從初階、中階到最高階的關係,結果完全不是!它們只是對應不同類型任務的不同訓練方法,就像是早餐店賣的蔬菜蛋餅、培根蛋餅和鮪魚蛋餅一樣,只是口味不同,沒有孰優孰劣的問題。  ###### 圖片來源 [What Is Reinforcement Learning?](https://www.mathworks.com/discovery/reinforcement-learning.html) - **[監督式學習(Supervised learning)](https://zh.wikipedia.org/wiki/%E7%9B%91%E7%9D%A3%E5%AD%A6%E4%B9%A0)**$^{1}$ 是先提供模型大量的訓練資料(Training data)與標籤(Labels)——相當於「習題與標準答案」——透過大量練習後模型就學會這些資料的特徵,並在碰到新資料時能回答正確標籤。比如說,給模型看一堆貓貓狗狗照片後,再給它一張新的狗狗照片,模型就知道這是狗而不是貓。 - **[非監督式學習(Unsupervised learning)](https://zh.wikipedia.org/zh-tw/%E7%84%A1%E7%9B%A3%E7%9D%A3%E5%AD%B8%E7%BF%92)**$^{2}$ 是讓模型從一堆未標註的資料中,自己搞懂資料的結構(Structure)或是找出分類模式(Pattern)。同樣也是給模型一堆貓貓狗狗的照片,這次不用跟它說這些照片的差別,它也有機會自己看出貓和狗的差異,但也有可能是把白貓白狗分一類、黑貓黑狗分一類,甚至還能挑出不是貓也不是狗的照片。 - **[強化學習(Reinforcement learning)](https://zh.wikipedia.org/wiki/%E5%BC%BA%E5%8C%96%E5%AD%A6%E4%B9%A0)**$^{3}$ 是讓模型不斷做各種嘗試,從每次的行動(Actions)得到的獎勵(Rewards)來修正自己,最後學出對於某些情境該怎麼做的「策略(Policy)」。又是給模型一堆貓貓狗狗的照片,這次告訴它目標是找出黃金獵犬,於是模型就會開始胡亂瞎猜,可能先找出一張長毛貓得負十分,再找出一張柯基得五分,模型便在過程中摸索出一套找出黃金獵犬的方法。 ## 那為什麼機器人研究偏好使用強化學習? 從機器學習三大方法的定義,可以很清楚看出三種方法的路線很不一樣。而要訓練一個模型給機器人用還要考慮幾個問題: ### 要學什麼? 機器人研究的目標是學習「運動控制(Motion Control)」和「決策制定(Decision Making)」,運動包含移動、走路、抓握、飛行;決策則是閃避障礙物、保持穩定、路線規劃這些類型的任務。這些任務很難去定義一個「標準答案」,像是「機器人踏一步該怎麼踏」這種事根本沒辦法下定義,沒有標準答案就沒辦法用在監督式學習。 ### 怎麼產生具體行動? 機器人的運動任務需要有實際的行動,而非監督式學習的模型往往更擅長找出一堆未分類事物的規則,因此它能夠有效分類出眼前障礙物和空地是不一樣的空間,但沒辦法告訴機器人「有障礙物不要撞上去」、「空地才能走」或是「怎麼走到眼前的目標」這種知識。 ### 如何應對未知環境? 不僅這兩個限制讓監督式學習和非監督式學習的模型無法用在機器人研究,在實務上機器人還需要具備在未知或是變動的環境中運作的能力。而強化學習的特點是它有一定的隨機性,模型可以透過反覆做不同的嘗試、邊做邊學,從回饋讓模型知道哪些嘗試是有用的、哪些是沒用的,這讓它能逐步改善策略,最後學出一套具體的行動策略來抵達目的地。 ## 機器人研究又是怎麼用強化學習呢? 跟另外兩個機器學習方法一樣,研究人員們基本上是每一個環節都有人想套強化學習試試看,只挑最主流方向的話可以粗分成以下幾條路線: ### 運動控制與操作(Motion Control and Manipulation) 這部分是讓機器人學習精確的運動技能,像是讓機器手臂抓取物體、堆積木、開關門,也有些研究想讓四足機器人在充滿雜物或不平穩的地面移動,或是讓人形機器人學人類舞者跳舞。Tesla 的 Optimus 人形機器人就以能夠撿拾電池、拿起雞蛋的靈巧手部機構做為特色之一。 {%youtube cpraXaw7dyc %} ### 自主導航(Autonomous Navigation) 讓無人車、無人機等能夠在未知或變動環境中辨識目標、找到可行路徑、避開障礙物、重建地圖。蘇黎世聯邦理工學院在[2021年的論文](https://ieeexplore.ieee.org/abstract/document/9636053?casa_token=PnT-Zikr8mUAAAAA:vNjNoeSTmPeFDyXdT1AtQTk50oS76cgjN8f7k9nU2AY-PqT_mGBx26oKRPxxmIf0vl-YtIaVRNkN)$^{4}$ 便提出可以用強化學習訓練無人機在障礙物中高速飛行。 {%youtube Hebpmadjqn8 %} ### 人機互動(Human-Robot Interaction ) 用強化學習讓機器人理解身邊人類的意圖並且能夠配合人類在環境中的行為,例如協助搬運重物、回應語音指令等。Meta 在今年發表與 Boston Dynamics 合作的[機器人計畫 PARTNR](https://ai.meta.com/blog/machine-intelligence-research-new-models/) $^{5}$ 針對人機協作的概念來訓練模型,使機器人能夠適應人類在環境中移動、改變環境或對它下指示的各種情境。 {%youtube JJX_U35xa7k %} ## 聽起來強化學習好像要資源夠多就沒有它學不會的事情,是這樣嗎? 想當然是不可能的,即使強化學習的特性讓模型更符合機器人研究的需求,但是也產生了更多問題。 ### 設計獎勵函數是強化學習最難的部分 強化學習的核心是通過獎勵引導模型學習,但怎麼設計一個好的獎勵機制是一大難題。 最常見的一種情況是[鑽獎勵漏洞(Reward Hacking)](https://lilianweng.github.io/posts/2024-11-28-reward-hacking/)$^{6}$,這是指模型為了達成目標不擇手段,反而沒學到預期的行為。假設訓練一個機器人學會「走路」,我只告訴它「到達目標就給過」,那機器人可能會做出「原地倒下滾過去」這種出格行為,而不是乖乖學會怎麼走路。 另外一種常見的情況是[稀疏獎勵(Sparse Rewards)](https://medium.com/@m.k.daaboul/dealing-with-sparse-reward-environments-38c0489c844d)$^{7}$,比如說在迷宮尋路或抓取物件時,只有成功完成任務才得到獎勵,中間過程的嘗試幾乎都拿不到獎勵。由於沒有獎勵,模型就很難判斷哪些行為是好是壞,這時可能還需要設計額外的獎勵給模型學習的方向。 ### 強大的學習能力的代價是超高的學習成本 強化學習模型的隨機性導致它每次訓練都要重新認識環境,然後還需要大量嘗試才能學到有效策略。試想我要訓練一個機械臂抓物體,我可能需要讓它嘗試數百萬次(而且中間會花不少時間在摸到目標物),這在真實世界中根本不可接受,失敗的成本還會很高,機器人可能會撞壞東西,甚至弄壞自己! 現在大多數研究會使用模擬器(如 NVIDIA 的 Isaac Sim、 Open Robotics 的 Gazebo)來加速訓練,再通過 [Sim-to-Real 技術](https://arxiv.org/abs/2403.07091)$^{8}$ 遷移到真實機器人身上。然而,在模擬環境中訓練好了一個機器人模型,也無法保證模型能適應所有現實場景,常常一部署到真實世界時就因為各種原因失敗了,怎麼克服模擬與現實的落差,以及增強模型的適應能力也仍是一個主要課題。 ### 探索與利用的兩難抉擇 強化學習需要在探索新策略(Exploration)和利用已知策略(Exploitation)之間找到平衡,這是一個經典的吃角子老虎機難題(multi-armed bandit problem)。例如,一個四足機器人的任務是穿越一片崎嶇地形,它就需要多嘗試不同的姿勢來找到更穩定的走法,而不是總是跌跌撞撞地前進;但是它也需要適當地使用已學到的動作來前進以完成任務,而不能一直原地踏步調整姿勢。 一種常見的策略是 [Epsilon-Greedy](https://www.geeksforgeeks.org/epsilon-greedy-algorithm-in-reinforcement-learning/) $^{9}$ 來解決,每次都以一定機率選擇探索,其大部分時候選擇使用當前的最佳策略。其餘也有用[模仿學習(Imitation Learning)](https://zhuanlan.zhihu.com/p/5837092207) $^{10}$ 讓模型模仿和分析專家的動作,藉此能更快速且安全的學習;亦或是[元強化學習(Meta Reinforcement learning)](https://zhuanlan.zhihu.com/p/305540214) $^{11}$,也就是沿用元學習(Meta learning)的概念,讓模型「學會如何學習」,使得在面對新任務時快速適應,能夠從少量的經驗中迅速掌握新技能。 ## :pushpin: 小結 - :memo: **機器學習的三大方法** - 監督式學習:透過「訓練資料+標註」訓練模型,適合分類與預測任務。 - 非監督式學習:模型自行從未標註的資料中找出模式與結構。 - 強化學習:模型透過行動、試錯,獲得獎勵後修正策略,以達成任務目標。 - :mag: **機器人研究使用強化學習的原因** - 任務無法定義標準答案:機器人的運動控制和決策任務,很難用標籤資料來訓練(不適合監督式學習)。 - 需要能產生具體行動策略:不是只分類而是要真的「去做」(不適合非監督式學習)。 - 要能適應未知環境、邊做邊學:強化學習靠試錯回饋學策略,能處理變化多端的情境,這正好是機器人要的。 - :bulb: **機器人強化學習的應用場景** - 運動控制與操作:機器手臂與物件互動、四足機器人行走、人形機器人跳舞。 - 自主導航:無人機、無人車的避障、路線規劃與地圖重建。 - 人機互動:理解人類意圖、配合人類動作完成任務。 - :warning: **強化學習的限制與挑戰** - 獎勵難設計:模型會不擇手段達成任務,容易出現「走偏路」、「學錯方向」的情況。 - 訓練成本極高:需要大量試錯與模擬資源,模擬訓練可減低風險,但 Sim-to-Real 仍存在落差。 - 探索與利用的取捨問題:需要策略去平衡風險與效率,可透過 Epsilon-Greedy 策略、模仿學習或元強化學習等方式改善。 <p class="text-center"> *** </p> 這篇文章並沒有講太多強化學習的演算法,我真正想做的只是為昨天還不懂的自己釐清研究脈絡,於是產出了這一張學習地圖,用來連結了我四散各處的知識與記憶。 不過寫一寫又冒出了更多的問題,像是「為什麼很多強化學習都會先提馬可夫決策流程(MDP)呢?」、「所以獎勵到底怎麼設計比較好呢?」,若真把這些問題都一一解答,恐怕這篇文章是永遠無法收尾了,以後有機會再說吧! ## 備註 ###### [1] [監督式學習 | 維基百科](https://zh.wikipedia.org/wiki/%E7%9B%91%E7%9D%A3%E5%AD%A6%E4%B9%A0) ###### [2] [非監督式學習 | 維基百科](https://zh.wikipedia.org/zh-tw/%E7%84%A1%E7%9B%A3%E7%9D%A3%E5%AD%B8%E7%BF%92) ###### [3] [強化學習 | 維基百科](https://zh.wikipedia.org/wiki/%E5%BC%BA%E5%8C%96%E5%AD%A6%E4%B9%A0) ###### [4] [Autonomous Drone Racing with Deep Reinforcement Learning | IEEE Xplore](https://doi.org/10.1109/IROS51168.2021.9636053) ###### [5] [Advancing machine intelligence through human-centered research | Meta FAIR](https://ai.meta.com/blog/machine-intelligence-research-new-models/) ###### [6] [Sim-to-Real gap in RL: Use Case with TIAGo and Isaac Sim/Gym | Arxiv.org](https://arxiv.org/abs/2403.07091) ###### [7] [Reward Hacking in Reinforcement Learning | Lil'Log](https://lilianweng.github.io/posts/2024-11-28-reward-hacking/) ###### [8] [Reinforcement Learning: Dealing with Sparse Reward Environments | Karam Daaboul](https://medium.com/@m.k.daaboul/dealing-with-sparse-reward-environments-38c0489c844d) ###### [9] [Epsilon-Greedy Algorithm in Reinforcement Learning | geeksforgeeks.org](https://www.geeksforgeeks.org/epsilon-greedy-algorithm-in-reinforcement-learning/) ###### [10] [強化學習,模仿學習傻傻分不清? 看機器人如何運用這兩種“學習”更好執行任務 | 知呼專欄](https://zhuanlan.zhihu.com/p/5837092207) ###### [11] [Meta-Reinforcement Learning初窺 | 知呼專欄](https://zhuanlan.zhihu.com/p/305540214) {%hackmd S5aKa1hTT5aFu7k37bGZMg %}
×
Sign in
Email
Password
Forgot password
or
Sign in via Google
Sign in via Facebook
Sign in via X(Twitter)
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
Continue with a different method
New to HackMD?
Sign up
By signing in, you agree to our
terms of service
.