過去學相關課程時,我記得老師很突然地就開始教強化學習了,也沒說為什麼,完全找不到時機問「為什麼用強化學習?」最近複習筆記時這個問題又浮上心頭,不可能只有我很好奇這件事吧?於是在查資料後,總算是搞懂了那些技術之間的關係,試著用自己的話來解釋看看。
也可以考慮看看 HackMD 好讀版
機器學習裡最常見的分類方式將模型分成三大類:監督式學習、非監督式學習與強化學習。
一般課程都是從監督式學習開始學起,然後再談非監督式學習,最後再講強化學習,所以我一直以為它們是從初階、中階到最高階的關係,結果完全不是!它們只是對應不同類型任務的不同訓練方法,就像是早餐店賣的蔬菜蛋餅、培根蛋餅和鮪魚蛋餅一樣,只是口味不同,沒有孰優孰劣的問題。
監督式學習(Supervised learning) 是先提供模型大量的訓練資料(Training data)與標籤(Labels)——相當於「習題與標準答案」——透過大量練習後模型就學會這些資料的特徵,並在碰到新資料時能回答正確標籤。比如說,給模型看一堆貓貓狗狗照片後,再給它一張新的狗狗照片,模型就知道這是狗而不是貓。
非監督式學習(Unsupervised learning) 是讓模型從一堆未標註的資料中,自己搞懂資料的結構(Structure)或是找出分類模式(Pattern)。同樣也是給模型一堆貓貓狗狗的照片,這次不用跟它說這些照片的差別,它也有機會自己看出貓和狗的差異,但也有可能是把白貓白狗分一類、黑貓黑狗分一類,甚至還能挑出不是貓也不是狗的照片。
強化學習(Reinforcement learning) 是讓模型不斷做各種嘗試,從每次的行動(Actions)得到的獎勵(Rewards)來修正自己,最後學出對於某些情境該怎麼做的「策略(Policy)」。又是給模型一堆貓貓狗狗的照片,這次告訴它目標是找出黃金獵犬,於是模型就會開始胡亂瞎猜,可能先找出一張長毛貓得負十分,再找出一張柯基得五分,模型便在過程中摸索出一套找出黃金獵犬的方法。
從機器學習三大方法的定義,可以很清楚看出三種方法的路線很不一樣。而要訓練一個模型給機器人用還要考慮幾個問題:
機器人研究的目標是學習「運動控制(Motion Control)」和「決策制定(Decision Making)」,運動包含移動、走路、抓握、飛行;決策則是閃避障礙物、保持穩定、路線規劃這些類型的任務。這些任務很難去定義一個「標準答案」,像是「機器人踏一步該怎麼踏」這種事根本沒辦法下定義,沒有標準答案就沒辦法用在監督式學習。
機器人的運動任務需要有實際的行動,而非監督式學習的模型往往更擅長找出一堆未分類事物的規則,因此它能夠有效分類出眼前障礙物和空地是不一樣的空間,但沒辦法告訴機器人「有障礙物不要撞上去」、「空地才能走」或是「怎麼走到眼前的目標」這種知識。
不僅這兩個限制讓監督式學習和非監督式學習的模型無法用在機器人研究,在實務上機器人還需要具備在未知或是變動的環境中運作的能力。而強化學習的特點是它有一定的隨機性,模型可以透過反覆做不同的嘗試、邊做邊學,從回饋讓模型知道哪些嘗試是有用的、哪些是沒用的,這讓它能逐步改善策略,最後學出一套具體的行動策略來抵達目的地。
跟另外兩個機器學習方法一樣,研究人員們基本上是每一個環節都有人想套強化學習試試看,只挑最主流方向的話可以粗分成以下幾條路線:
這部分是讓機器人學習精確的運動技能,像是讓機器手臂抓取物體、堆積木、開關門,也有些研究想讓四足機器人在充滿雜物或不平穩的地面移動,或是讓人形機器人學人類舞者跳舞。Tesla 的 Optimus 人形機器人就以能夠撿拾電池、拿起雞蛋的靈巧手部機構做為特色之一。
讓無人車、無人機等能夠在未知或變動環境中辨識目標、找到可行路徑、避開障礙物、重建地圖。蘇黎世聯邦理工學院在2021年的論文 便提出可以用強化學習訓練無人機在障礙物中高速飛行。
用強化學習讓機器人理解身邊人類的意圖並且能夠配合人類在環境中的行為,例如協助搬運重物、回應語音指令等。Meta 在今年發表與 Boston Dynamics 合作的機器人計畫 PARTNR 針對人機協作的概念來訓練模型,使機器人能夠適應人類在環境中移動、改變環境或對它下指示的各種情境。
想當然是不可能的,即使強化學習的特性讓模型更符合機器人研究的需求,但是也產生了更多問題。
強化學習的核心是通過獎勵引導模型學習,但怎麼設計一個好的獎勵機制是一大難題。
最常見的一種情況是鑽獎勵漏洞(Reward Hacking),這是指模型為了達成目標不擇手段,反而沒學到預期的行為。假設訓練一個機器人學會「走路」,我只告訴它「到達目標就給過」,那機器人可能會做出「原地倒下滾過去」這種出格行為,而不是乖乖學會怎麼走路。
另外一種常見的情況是稀疏獎勵(Sparse Rewards),比如說在迷宮尋路或抓取物件時,只有成功完成任務才得到獎勵,中間過程的嘗試幾乎都拿不到獎勵。由於沒有獎勵,模型就很難判斷哪些行為是好是壞,這時可能還需要設計額外的獎勵給模型學習的方向。
強化學習模型的隨機性導致它每次訓練都要重新認識環境,然後還需要大量嘗試才能學到有效策略。試想我要訓練一個機械臂抓物體,我可能需要讓它嘗試數百萬次(而且中間會花不少時間在摸到目標物),這在真實世界中根本不可接受,失敗的成本還會很高,機器人可能會撞壞東西,甚至弄壞自己!
現在大多數研究會使用模擬器(如 NVIDIA 的 Isaac Sim、 Open Robotics 的 Gazebo)來加速訓練,再通過 Sim-to-Real 技術 遷移到真實機器人身上。然而,在模擬環境中訓練好了一個機器人模型,也無法保證模型能適應所有現實場景,常常一部署到真實世界時就因為各種原因失敗了,怎麼克服模擬與現實的落差,以及增強模型的適應能力也仍是一個主要課題。
強化學習需要在探索新策略(Exploration)和利用已知策略(Exploitation)之間找到平衡,這是一個經典的吃角子老虎機難題(multi-armed bandit problem)。例如,一個四足機器人的任務是穿越一片崎嶇地形,它就需要多嘗試不同的姿勢來找到更穩定的走法,而不是總是跌跌撞撞地前進;但是它也需要適當地使用已學到的動作來前進以完成任務,而不能一直原地踏步調整姿勢。
一種常見的策略是 Epsilon-Greedy 來解決,每次都以一定機率選擇探索,其大部分時候選擇使用當前的最佳策略。其餘也有用模仿學習(Imitation Learning) 讓模型模仿和分析專家的動作,藉此能更快速且安全的學習;亦或是元強化學習(Meta Reinforcement learning) ,也就是沿用元學習(Meta learning)的概念,讓模型「學會如何學習」,使得在面對新任務時快速適應,能夠從少量的經驗中迅速掌握新技能。
這篇文章並沒有講太多強化學習的演算法,我真正想做的只是為昨天還不懂的自己釐清研究脈絡,於是產出了這一張學習地圖,用來串連了我四散各處的知識與記憶。
不過寫一寫又冒出了更多的問題,像是「為什麼強化學習都要提 MDP?」、「為什麼 Value Function 用著用著就被拋棄了呢?」,若真把這些問題都一一解答,恐怕這篇文章是永遠無法收尾了,以後有機會再說吧!