強化式學習雜記

強化式學習 #
說到機器學習領域中的 「強化式學習」(Reinforcement Learning),首先讓人想到的也許是 DeepMind 在 Atari Game 及 AlphaGo 上的成功,或者是 Agent + Environment 的經典框架,又或者是是 Yann LeCun 2016 年有名的烤蛋糕比喻:
If intelligence is a cake, the bulk of the cake is unsupervised learning, the icing on the cake is supervised learning, and the cherry on the cake is reinforcement learning (RL).”
如果說智慧是一塊蛋糕,那麼蛋糕的主體是無監督式學習,蛋糕上的糖霜是監督式學習,而蛋糕上的櫻桃則是強化式學習。
此比喻引發了學術界、尤其是強化式學習社群不少的討論,因為這似乎暗示了強化式學習是一種沒有效率的機器學習方法。
在後續(2019)的更新中 LeCun 改以「自監督式學習(self-supervised learning)取代「無監督式學習」(unsupervised learning)以更精準的描述使用資料本身結構來產生標記的做法。
三種典範 #
How Much Information is the Machine Given during Learning?
LeCun 也許是想用烤蛋糕的比喻來強調三種機器學習方式在資料運用上的差異。
蛋糕主體:自監督式學習 #
- 自監督式學習方法讓模型學習從資料的某一部分預測另外一部分,例如文字接龍或是預測圖片被遮住的一那部分。
- 在有意義的資料中,特定部分和其他部分並不會是完全獨立無關的,也就是說資料中存在著某種內在關係或結構。像是是汽車配有輪子,或是文章前後的連貫。
- 如果模型能學會由資料的一部分合理的預測另外一部分,表示成功掌握到一些資料本身的特徵。
- 自監督式學習只需要將資料進行適當的整理拆分後就可以用於訓練,不需要額外的人工標記。
糖霜:監督式學習 #
- 監督式學習是讓模型預測特定的任務目標,例如做貓狗圖片的分類。
- 學習的目標是讓模型的預測盡量接近標準答案,模型會找出資料中與預測目標相關的特徵,無關的資訊則被忽略。
- 由於數據集一般需要人工標記,取得大量高品質的訓練資料並不容易。
櫻桃:強化式學習 #
- 允許模型與環境互動並得到回饋,但訊號可能久久才能獲得一次。例如下圍棋經由一連串長時間的操作,只有終局時才能得到一次勝或負的結果回饋。
- 雖然 Agent 與環境互動的資料紀錄可以很多,但僅能利用稀疏的獎勵作為訓練的訊號,因此通常要透過模擬環境才能取得足夠的資料。
強化式學習框架 #
經典的強化式學習框架通常包含幾個要素:環境(Environment)、代理人(Agent)、行動(Action)、獎勵(Reward)、觀察到的狀態(Observation)。
代理人觀察環境的狀態,據以做出行動,環境受代理人的行動以及其他機制影響而演變,並給予代理人回饋,回饋有可能是獎勵、有可能是懲處、更常是沒有,接著代理人重新觀察更新過的環境狀態,持續循環進行下去。代理人的目標是做出理想的行動選擇以最大化從環境得到的累積獎勵。這種「代理人與環境互動」的高階框架雖然直覺且容易理解,但也相當開放。在考慮實際問題時往往需要將細節先具體定義下來。
想像這樣的情境:你走在回家的路上,可以隨時停下來或繼續往前走,你有可能平安前進或被車撞到,而你的目標是回到家裡。
這可以很容易的被轉化成一個簡單的小遊戲,遊戲中你可以觀察到路口、車子、紅綠燈(observation),你可以選擇走或停兩種行動(action),當你被車撞遊戲就失敗結束,順利回到家會得到 100 分的通關分數(reward),背後運行的遊戲本身就是環境(environment),而你就是做出行動的代理人(agent)。事實上,電玩遊戲正是強化式學習研究的主戰場之一,因為遊戲環境可以很容易且快速的重複執行模擬。
強化式學習精神 #
簡單的「過馬路」遊戲對人類來說相當簡單,只要在看到紅燈或車子時停下來就行,但這種簡單其實是建立在許多隱含的理解之上:我們都已經知道如何辨識紅綠燈和汽車、理解交通號誌的規則、甚至是向前走會離家更近這種不需要思考的遊戲規則,但這一切對一個 Agent 來說全都是未知。
替 Agent 手動撰寫一些規則當然不是問題,但理想上我們並不想要用千百條規則來面對千變萬化的狀況或是為新的問題客製化。正如同我們用監督式學習和標注好的數據集來訓練影像分類模型,我們也希望找出一套通用的強化學習方法讓 Agent 藉由與環境互動自行學習出成功的策略,而不必依賴事前對環境的了解。
有別於自監督和監督式學習的標記代表著預測任務的正確答案,強化式學習的獎勵則是用於優化 Agent 對行動策略或狀態的價值評估,間接取得好的累積報酬表現。 換句話說前者的設計是直接學習「目標」,而強化學習則是學習「達成目標的策略」,畢竟 Agent 只能透過行動去得到結果,本質上並沒有直接「輸出遊戲結果」這回事。
訓練數據的本質 #
我曾經對自監督式學習、監督式學習、強化式學習的分野感到疑惑,因為模型訓練本質上都一樣是「透過反向傳遞優化參數,以讓模型輸出更貼近某種標準答案」,故最主要的差異似乎是在於標記的來源不同而已:自監督式學習利用資料自帶的結構來產生標記、監督式學習直接使用人工或其他整理好的數據集標記、而強化式學習則使用獎勵。
LeCun 關於三種機器學習方式的蛋糕比喻提醒了我關於效率面上的不同,進一步讓我想到三種不同的目標設計其實也反映了三種對模型的要求與期望,也更可以想像三者各有自各的發揮空間。
- 自監督式學習:要求模型學會資料的內在結構
- 監督式學習:要求模型學會預測任務目標
- 強化式學習:要求模型優化策略取得好的長期報酬
對照大型語言模型的訓練 #
2024 年底, Andrej Karpathy 在 X (Twitter) 上提到今日獲得巨大成功的 LLM 訓練過程與 LeCun 比喻中的觀念相當一致:
…he (Yann LeCun) was conceptually exactly right about that at least with today’s stack and hindsight (pretraining = meat, SFT = icing, RLHF = cherry, ie the basic ChatGPT training pipeline).
…以今日的後見之明來說 Yann LeCun 的觀念是完全正確的,基本的 GhatGPT 訓練流程是 「預訓練」= 主體,「監督式微調」 = 糖霜,「人類回饋強化學習」= 櫻桃。
It’s hard to understand now, the Atari RL paper of 2013 and its extensions was the by far dominant meme. One single general learning algorithm discovered an optimal strategy to Breakout and so many other games. You just had to improve and scale it enough. My recollection of the…
— Andrej Karpathy (@karpathy) November 17, 2024
預訓練 Pre-Training #
受益於 GPU 與 Transformer 演算法的發展,大型語言模型成功的使用人類共同累積的龐大文字資產進行預訓練,要求模型學會自然語言的內在結構,可謂「熟讀唐詩三百首,不會作詩也會吟」。
監督式學習微調 Supervised Fine-Tuning #
由於預訓練並沒有針對任何特定功能性的任務,接著需再以高品質的問答資料集進行監督式學習微調語言模型,讓模型能夠學習如何生成有用的、符合指令的回答,要求模型學會正確的預測任務目標:專注於「應答」。
人類回饋強化學習 Reinforcement Learning with Human Feedback #
高品質問答資料集有限,也難以涵蓋各式各樣的情境跟細節,最後再以強化式學習的方法微調模型讓產生的回答更符合人類的偏好與價值觀。實務上的做法會先以人類偏好的訓練資料集訓練出一個能夠針對一段文字給出 reward 的獎勵模型(這個模型能評斷一段文字是否符合人類偏好)。接著再讓 LLM 作為代理人,以獎勵模型為環境,讓 LLM 與獎勵模型互動,優化自己的策略(action = choose next token)。當 LLM 能產出高reward 的回答時。也代表他更符合人類的偏好了。
People Spirit #
「預訓練」建立了 LLM 強大的自然語言根基,「監督式學習微調」引導出 LLM 問答的能力,而「人類回饋強化學習」則讓 LLM 的表現大大貼近人類。
大型語言模型是否是通向 AGI 的道路猶未可知,但其展現出的高水準人類語言表現能力已毫無疑問是時代性的突破。從 2020 年 GPT-3 釋出並展現了巨大的潛力到現在不過數年時間,能夠流暢應答的 AI 已被視為理所當然,可預期這些「類人類」大型語言模型將將對人類社會產生很大的影響。縱然強化式學習本身能應對的情境有其限制,卻也很有意思的在這一波浪潮中佔了一席之地。