技術筆記-RL01-開始來爬「強化學習」這座山

更新於 發佈於 閱讀時間約 7 分鐘

Reinforcement Learning (強化學習) 的理論非常有趣,可能是因為其中許多方法,與人類的學習歷程極為相似,如試錯,獎懲,改進策略,持續優化等等。現在準備來爬這座山了,我把學習階段大致分成三個小山峰,依序為 Q-Learning --> DQN --> Actor-Critic,準備好好享受這段旅程。


小孩乖乖就有獎賞,小狗坐好就有點心,小生命的習性,自然而然就被塑造了;若再加上負面的「懲罰」效果更加立竿見影,這是很初階的學習行為。概念延伸,一個人能夠努力不懈,得到傲人的成就,不也是「社會」這個環境不斷給予回饋的結果嗎?所以「環境」中的「行為」加上「獎懲」,應該可以算是學習過程中,非常底層的邏輯。雖然現實世界中,似乎很多「努力卻得不到回報」,「環境詭譎觀察不出頭緒」的狀況,但其實原則並未失效。


比如說「錢多事少離家近」可能是許多人的有效獎賞,但對於某些歷盡滄桑人士,或是功成名就人士,獎賞已經失效,取而代之的也許是,平靜與恬淡的舒爽自在,才能給予最大的生活驅動力。其實因著看世界的角度改變,「環境」維度也就跟著改變,也許從來沒有「客觀存在的事實」,當事人完全可以主導,對環境結構的認知,而形塑獨特的一套「行為 -> 獎懲」的機制。對環境的認知,可以到「見山不是山」的境界,行為可以是「心思裡的柔細思想」(沒錯,思想是是一種內部行為),獎賞可以是「自我實現的意義感」等等。總之,這門學問很有意思就是了。


Q-Learning

在開始爬山以前,當然要先準備一些裝備,數學就是輕薄短小,功能強悍的好工具,用精簡的代號描述複雜的現象。在一個環境狀態 S (State) 中,做出動作 A (Action),得到獎賞 R (Reward),然後環境因著動作的影響,就變成 S′ 狀態,如此週而復始,無限循環。當然我們可以設定一個終止條件,讓遊戲結束,但數學的領域是可以處理「無限步數」的情形,非常強大。而隨著學習步驟的進行,期望做出的動作將越來越好,所謂的好,不僅是使「當下立即」的獎賞最大,更要考慮未來的每一步能獲取的獎賞,合理的期望就是「未來無限步的獎賞」總和。


而很久之後的獎賞,不應該跟立即性的獎賞,產生同樣的效益。比如說某個投資策略,將在「一百年後」,產生驚人效益,使當事人成為富翁!這是無意義的,也許只會讓「當事人的兒子」成為富翁,所以效益應該是隨著步驟的進行而遞減的。描述此現象只要引進「效益遞減因子 𝛾 」(gamma),0 < 𝛾 < 1,第 t 步驟就乘以 𝛾 的 t 次方,如此得出以下這個優美的式子,就是鼎鼎大名的 Q-value:

raw-image

意義就是在環境在 s 狀態下,做出 a 動作,產生立即獎賞 R,和未來每一個步驟,打折的 R,加總起來的期望值。期望值,是因為未來每個步驟所採取的 Action 有隨機成分,其計算就是靠不斷遞迴的實驗,蒐集 Reward 而得,這種算法就是經典的 Bellman Equation:

raw-image


在一個陌生環境中,每一個動作會產生的回饋皆不知,只能隨機亂試,也就是 Q 的初始值是隨機給定的。但隨著試驗的次數增多,回報的平均值就會逐步趨於穩定,然後就可以選最大 Q-value 的動作執行。但如此又產生了「先入為主」的問題,比如說,像吃角子老虎的多選一遊戲,或類似多個廣告版位的選擇問題,先得獎的或先被點閱的選擇動作,因為被賦予的 Q-value 比較高,就會「永遠選擇」,而其他選擇有可能更好,只是因為初期探索,「尚未發現」而已。這是個困難的問題,就是探索 (Exploration) 和利用 (Exploitation) 的兩難。若我們只有有限賭注的機會,比如說 100 元可以賭 100 次,到底先用幾次隨機探索,再根據探索結果去下好注?這沒有答案,難啊。(好像人生,幾歲要嫁娶啊?要交幾任才夠啊?)


所以此模型多了一個參數 ε (epsilon) 用來表示「隨機探索」的機率,只能靠人工憑經驗設定。而隨著實驗次數的增加,這探索機率也可以遞減,所有再加一個 ε 遞減因子,當「經驗非常豐富」時,就不再需要探索了,除非環境又產生結構性變動,才需要重新探索。這個過程,非常合理也充滿美感。以下為當選定某個動作後,Q-value 更新的邏輯,由原本的 Q-value,加上「與新的 Q-value 的差值」乘以 α ,α 就是「學習率」:

raw-image


爬呀爬,以上已經完成 Q-Learning 的全部過程。如果 State and Action 的數量是有限且不是誇張多的狀況下,只要用一個 Q-table 紀錄 Q-value 更新的結果,可以輕易地解決。如「井字遊戲」這種問題,隨便訓練個幾百次就永不會輸了。這之前做過,但不需在此著墨過多,因為顯然問題太過簡化,現實世界的大部分問題,根本就列舉不出來,到底有幾種狀態!比如以投資問題來說,「當前的市場狀態」,這啥,有幾種?n 種嗎,無限種吧。如此 Q-Table 已經無用武之地了,需要來攀第二個山頭:DQN。


DQN

DQN (Deep Q-Network) 就是把原本用「查表」的 Q-value,改為一個神經網路,基本觀念就這樣而已。但幾個衍伸的問題必須解決:一是訓練的目標值如何決定,二是資料量如何提升。


Q-Learning 的任何一個列舉的 (S, A),目標值皆可精確算出,如規定某個迷宮遊戲,達到目的的那一步獎賞值就是 1,其他步數也能遞迴的算出;經由 Q-value 現值與目標值的差異計算,可順利完成訓練程序。而 DQN 的情形呢,其現值是取決於特定的 (S, A),加上神經網路的參數 θ,以式子 Q(s,a;θ) 表示,而其目標值呢?會用到同樣的網路,只是輸入變成 s′ 和「所有可能的 a′」,取最大的輸出值為主。如此導致在每步驟優化網路參數的同時,目標也不斷改變!當學習基準不固定,結果可想而知,就是容易「大幅震盪」,誤差值不易收斂,學不到規則。


因此 DQN 引入另一個網路,稱為「目標網路」,其結構與主網路一模一樣,只是在訓練過程中不要每次更新參數,而是每隔一段時間才更新一次,且是將主網路的參數,原封不動的 copy 到目標網路。也就是在學習的初期,先假設一個目標,因為有學習率 α 小於 1 的關係,學習的方向會介於「經驗值」與「假設的目標」之間;而在一段時間之後,把學習結果保存下來,作為新的目標,如此不斷重複,可使誤差值比較容易收斂。基本上還是「自己跟自己學習」的神奇過程,覺得會設計出這種算法的人,真的很厲害。


以上是針對「目標值」的巧妙設計,接下來要設法增加「資料量」,因為神經網路需要大量資料才能發揮效果。基本想法就是盡量「重複利用」既有資料。假設以金融交易日頻資料為例,雖然是典型的時間序列,但對於「狀態」的判斷是否真的跟時序資料相關?這取決於對狀態「屬性」的設計,我想應該是可以找到不相依於時序關係的屬性描述的。假設每一天面對金融市場盤面時,都能就當下的狀況「就事論事」,而不是被已經過去的事影響決策,這應該是還不錯的態度。因此每一組資料,包含 (S, A, R, S′),應該可以儲存起來,重複隨機抽取以供訓練。


以上已經大致爬了兩個山頭,觀念建立的差不多了,下次要進到程式實作部分,實際在金融交易的領域把它套用上去。站穩腳步之後,再來爬 Actor-Critic 這第三個山峰。


Newman 2025/4/1

導覽頁:紐曼的技術筆記-索引












就是先建立基本觀念,而先搞清楚其中一些名詞的定義,是很好的方法。第一個名詞稱為「環境」,數學代號為 S (State)。






avatar-img
24會員
114內容數
漫步是一種境界。
留言
avatar-img
留言分享你的想法!
newman的沙龍 的其他內容
稍微看一下 Telegram 官方文件,哇!好強喔,功能說明的第一項赫然出現「可以取代整個網站」!口氣真的很大。雖然我的需求應該很低,但能夠確認前面是一座豐富的寶藏,還是很令人興奮的,待基本功能掌握之後,可以再評估和決定要不要往下挖。 發送訊息 要達成這第一個目標,首先必須建立一個 bot。
Line Notify 即將停止服務,隨著時間越來越緊迫,隱約聽到許多人在哀嚎。印象中有許多廠商,把 Line Notify 用得淋漓盡致,甚至可以一個客戶建一個群組,把許多客製化服務都用程式管理的井井有條,得到很好的滿意度。但這種好康,無限免費的即時訊息,沒有了,時間就在 2025/3/31!公告
「通知」這種功能現在已經非常稀鬆平常了,三不五時手機跳出訊息或聲音,不勝其擾!但不要因噎廢食,對於「真正重要的事件」,即時通知還是非常必需的。像是刷卡通知,應該沒有人會關掉吧!所以對於一個交易系統而言,牽涉到金錢的進出,通知功能是一定要的啦。有 line notify 相伴的年代,輕鬆愉快:
如題,這應該是很容易犯的錯誤,據說 git 能使時光倒流!它就是這麼厲害,所以光是刪除檔案重新 commit 是沒用的,必須執行以下步驟: # 1. 將檔案移出納管範圍,但注意加 --cached 就不會實體刪除檔案
這一趟越走越興奮的旅程,從 測試富邦新一代 api 開始,很自然的開始 用 python 造出自己的 gui 程式,本來也不想學太多有的沒的,頂多三五分鐘用 api 監控一次市場行情,就可以玩出很多策略了,沒想到 api 一個小小的不完美,迫使我把手伸進 socket 領域了。 原來我想監控的
開始玩 python gui,首先稍微交代一下背景,這種 client-server 的應用架構,一直以來是我所唾棄的方式,因為:每個前端都需要安裝,所以若要部署給多人使用,很麻煩,每個人的電腦環境千奇百怪,難保平台與各種軟體均能相容。所以出問題時原因難查,若軟體是銷售的,也容易有爭
稍微看一下 Telegram 官方文件,哇!好強喔,功能說明的第一項赫然出現「可以取代整個網站」!口氣真的很大。雖然我的需求應該很低,但能夠確認前面是一座豐富的寶藏,還是很令人興奮的,待基本功能掌握之後,可以再評估和決定要不要往下挖。 發送訊息 要達成這第一個目標,首先必須建立一個 bot。
Line Notify 即將停止服務,隨著時間越來越緊迫,隱約聽到許多人在哀嚎。印象中有許多廠商,把 Line Notify 用得淋漓盡致,甚至可以一個客戶建一個群組,把許多客製化服務都用程式管理的井井有條,得到很好的滿意度。但這種好康,無限免費的即時訊息,沒有了,時間就在 2025/3/31!公告
「通知」這種功能現在已經非常稀鬆平常了,三不五時手機跳出訊息或聲音,不勝其擾!但不要因噎廢食,對於「真正重要的事件」,即時通知還是非常必需的。像是刷卡通知,應該沒有人會關掉吧!所以對於一個交易系統而言,牽涉到金錢的進出,通知功能是一定要的啦。有 line notify 相伴的年代,輕鬆愉快:
如題,這應該是很容易犯的錯誤,據說 git 能使時光倒流!它就是這麼厲害,所以光是刪除檔案重新 commit 是沒用的,必須執行以下步驟: # 1. 將檔案移出納管範圍,但注意加 --cached 就不會實體刪除檔案
這一趟越走越興奮的旅程,從 測試富邦新一代 api 開始,很自然的開始 用 python 造出自己的 gui 程式,本來也不想學太多有的沒的,頂多三五分鐘用 api 監控一次市場行情,就可以玩出很多策略了,沒想到 api 一個小小的不完美,迫使我把手伸進 socket 領域了。 原來我想監控的
開始玩 python gui,首先稍微交代一下背景,這種 client-server 的應用架構,一直以來是我所唾棄的方式,因為:每個前端都需要安裝,所以若要部署給多人使用,很麻煩,每個人的電腦環境千奇百怪,難保平台與各種軟體均能相容。所以出問題時原因難查,若軟體是銷售的,也容易有爭
你可能也想看
Google News 追蹤
Thumbnail
靈感用盡、鍵盤不再響,盯著喜歡、分享、留言的數字,心跳跟著小鈴鐺七上八下⋯⋯vocus 2025 年 4 月限定新商品,要為創作者打氣! 🚨「創作者打氣包」 最懂創作者的vocus,為創作者打造 ✨ 打氣包,包什麼?!四件道具挺創作者 一、【打氣復活卷】 專屬你的打氣小語,成功登記免費
Thumbnail
全新 vocus 挑戰活動「方格人氣王」來啦~四大挑戰任你選,留言 / 愛心 / 瀏覽數大 PK,還有新手專屬挑戰!無論你是 vocus 上活躍創作者或剛加入的新手,都有機會被更多人看見,獲得站上版位曝光&豐富獎勵!🏆
Thumbnail
自學,不只是自己學習課業 更多的是學習面對自己、世界 同時擴展視野、看見可能 充滿曲折的路 是自己讓她變得美好
Thumbnail
今天在將軍村上課對我以及孩子來說都是一種全新的體驗。這幾週在實人我不斷對教育有突破性的認識,這種感受是很興奮、很舒暢的,把自己打碎再重建,期許自己能保持這樣的循環,建立起一個全新且更理想的自己。
Thumbnail
從過往的扣分思維開始轉變吧,給自己加分,才是沒有天花板的成長人生。 人生追求的不是只有考試滿分而已,有更多事物等待去發掘去學習,慢慢把知識逐步疊加,當某天回過身來,就會突然發現,原來已經在某個賽道上走出好長一段距離。或者至不濟,也比從前的自己多出好遠的距離!
Thumbnail
新學季的第二天實習,帶著新的思考與星期二的學習來到了今天,今天我給自己的目標是觀察不同形式的互動與引導形式,然而從品師的課程,與綠光種子教室的課後輔導過程中,我看見並學習到了珍貴的事物。
Thumbnail
引導,是教學現場中最基本也細節繁雜一個步驟,今天突如其來的試煉,讓我意識到了自己的不足,以及有夥伴支援的力量,這是一次相當珍貴的經驗!
Thumbnail
設計思考的生活運用 在我們求學的過程中,因為升學主義的影響,我們往往習慣於認為答案只有一個標準。「刻意練習」往往會變成如何穩定自己的分數。然而,隨著踏入社會,現代社會因AI和網路全球化的發展而發生了巨大的變化。雖然許多傳統社會中的基礎邏輯和框架在當代社會中仍然存在,但學習模式已經發生了變革。社群媒
Thumbnail
過去多多少少都有在學習語言和運動甚至是藝術 有繼續學習的 也有已經放棄的 感謝曾經風吹日曬也堅持去上課的自己 或許對工作、對生活毫無幫助 卻讓自己生活似乎有點意義 新領域-塔羅 今年似乎是學習的一年 想學很久的塔羅 可能是我到處釋放出學習的意願 可能是宇宙接收到我想學的訊息
Thumbnail
「學習歷程」, 108課綱下的一大特色產物, 顧名思議,意指孩子在這學期中,學習的過程與經歷,諸如: ❦ 這門課的學習目標為何? ❦ 我在這門課學到了什麼? ❦ 修習課門課之後,我改變了什麼? ❦ 學習的心得、感想及自省。 ❦ 我有什麼想要繼續發展?或新期待? 好讓未來在高三升學之際
Thumbnail
靈感用盡、鍵盤不再響,盯著喜歡、分享、留言的數字,心跳跟著小鈴鐺七上八下⋯⋯vocus 2025 年 4 月限定新商品,要為創作者打氣! 🚨「創作者打氣包」 最懂創作者的vocus,為創作者打造 ✨ 打氣包,包什麼?!四件道具挺創作者 一、【打氣復活卷】 專屬你的打氣小語,成功登記免費
Thumbnail
全新 vocus 挑戰活動「方格人氣王」來啦~四大挑戰任你選,留言 / 愛心 / 瀏覽數大 PK,還有新手專屬挑戰!無論你是 vocus 上活躍創作者或剛加入的新手,都有機會被更多人看見,獲得站上版位曝光&豐富獎勵!🏆
Thumbnail
自學,不只是自己學習課業 更多的是學習面對自己、世界 同時擴展視野、看見可能 充滿曲折的路 是自己讓她變得美好
Thumbnail
今天在將軍村上課對我以及孩子來說都是一種全新的體驗。這幾週在實人我不斷對教育有突破性的認識,這種感受是很興奮、很舒暢的,把自己打碎再重建,期許自己能保持這樣的循環,建立起一個全新且更理想的自己。
Thumbnail
從過往的扣分思維開始轉變吧,給自己加分,才是沒有天花板的成長人生。 人生追求的不是只有考試滿分而已,有更多事物等待去發掘去學習,慢慢把知識逐步疊加,當某天回過身來,就會突然發現,原來已經在某個賽道上走出好長一段距離。或者至不濟,也比從前的自己多出好遠的距離!
Thumbnail
新學季的第二天實習,帶著新的思考與星期二的學習來到了今天,今天我給自己的目標是觀察不同形式的互動與引導形式,然而從品師的課程,與綠光種子教室的課後輔導過程中,我看見並學習到了珍貴的事物。
Thumbnail
引導,是教學現場中最基本也細節繁雜一個步驟,今天突如其來的試煉,讓我意識到了自己的不足,以及有夥伴支援的力量,這是一次相當珍貴的經驗!
Thumbnail
設計思考的生活運用 在我們求學的過程中,因為升學主義的影響,我們往往習慣於認為答案只有一個標準。「刻意練習」往往會變成如何穩定自己的分數。然而,隨著踏入社會,現代社會因AI和網路全球化的發展而發生了巨大的變化。雖然許多傳統社會中的基礎邏輯和框架在當代社會中仍然存在,但學習模式已經發生了變革。社群媒
Thumbnail
過去多多少少都有在學習語言和運動甚至是藝術 有繼續學習的 也有已經放棄的 感謝曾經風吹日曬也堅持去上課的自己 或許對工作、對生活毫無幫助 卻讓自己生活似乎有點意義 新領域-塔羅 今年似乎是學習的一年 想學很久的塔羅 可能是我到處釋放出學習的意願 可能是宇宙接收到我想學的訊息
Thumbnail
「學習歷程」, 108課綱下的一大特色產物, 顧名思議,意指孩子在這學期中,學習的過程與經歷,諸如: ❦ 這門課的學習目標為何? ❦ 我在這門課學到了什麼? ❦ 修習課門課之後,我改變了什麼? ❦ 學習的心得、感想及自省。 ❦ 我有什麼想要繼續發展?或新期待? 好讓未來在高三升學之際