Blog7

強化式學習之14~很重要又難理解的Policy Gradient

3-14:很重要又難理解的Policy Gradient 使用神經網路在做分類訓練時,輸出層的節點值,必須先轉換成機率分佈,再和標記值(標準答案)相比對,以計算彼時參數應該被修正的程度。 一旦模型訓練完成,進入到推論(inference)階段,就不會再有標準答案了,這時候,要直接從機率分佈選取一個最大的,做為判斷的種類。如下圖中的x3節點將會被選取,因為它的機率值是0.4,大於其他的節點值。 圖3-14-1. 神經網路輸出層的預測值是機率分佈。  在強化學習當中,從某個狀態來選擇某種動作,早期的做法相類似,也是去選取動作值(action value)最大的那一個,但這樣的處理,衍生出了一些問題。 它會讓決策僵化,只想遷就眼前最大的獎勵,而不願去多方嘗試最佳路徑。為改善此缺失,實作上通常還會再引入隨機變量epsilon,來增加探索性,這就是為什麼我們問ChatGPT同一個問題,它常常會給出不同答案的原因。 強化式學習發展至今日,結合了神經網路之後,最新的做法,也是在輸出層節點形成機率分佈,但動作的選取,不再獨厚機率值最高的那一個了。 圖3-14-2. 強化式學習神經網路。  上圖左邊是輸入神經網路的狀態(state),右邊是經過神經網路計算後,得到的動作機率分佈。在選擇動作時,是採用隨機(stochastic)的方式,機率大的當然被選取的機會就高,但機率小的,仍然有較低的機會被選取到。 看得出來,這種選取方式,就是將隨機變量epsilon,直接放進決策過程中了。它不但讓程式語法變得更簡潔,背後的數學思考也更加深邃。 我們將這種學理應用在迷宮遊戲中,和DQN(Deep Q-Network)相比較,發現它學習的進步幅度非常明顯,因為它一邊學一邊修正,十分有效率。 圖3-14-3. 策略梯度的演算法,讓AI學習更加有效率。  Policy Gradient,策略梯度,是要逐步修正神經網路裡面的參數值,讓輸出的動作機率分佈,有助於提升每回合時間序列的報酬值(return)。 這是相當不好理解的關鍵,它不像監督式訓練,每次都附帶有標準答案來比對修正。事實上,它每次的「標準答案」,都是來自神經網路中途參數的預測,換句話說,它自己提供數據來訓練自己,這是強化式學習很特殊的地方。

強化式學習之14~很重要又難理解的Policy Gradient Read More »

強化式學習之13~DQN與聶老師

3-13:DQN與聶老師 2016年3月,DeepMind公司的AlphaGo電腦程式,以4:1的成績,擊敗世界圍棋冠軍韓國李世乭。到了當年年底,忽見中國大陸騰訊野狐圍棋網站中,在眾人一片錯愕下,橫空出世了一位絕代高手。此神秘高人戰力之強深不可測,在巨星雲集、諸帥環伺之際,竟秋風掃落葉打遍網內無敵手。他在連續幾盤擊敗聶衛平後,在螢幕上顯示了一行繁體中文字「謝謝聶老師」。 有人推測,這位”高手”,應該是AlphaGo的相關版本,因為這款大名鼎鼎的軟體,其背後的靈魂人物,正是來自台灣的師大資訊博士黃士傑。 聶衛平是個傳奇人物,他在好幾屆的「中日圍棋擂台賽」,都是擔任中國方的壓軸強棒。他可以力挽狂瀾、扭轉乾坤,每次中方戰將前線潰敗至丟盔棄甲,戰力崩盤到僅剩下他這最後一棒時,他總能憑藉一己之力起死回生,將擂台上還留有的一票日本高手,全部殺得片甲不留。 圖3-13-1. 聶衛平氣定神閒對戰眉頭深鎖小林光一,小林光一落敗回日本後,馬上將自己理了個大光頭,以示”檢討”。  DeepMind早在2014年1月26日就被Google蒐購,它的核心技術 —「深度強化式學習」,是獲得Google青睞的主要因素,著名的DQN(深度Q網路),就是由他們提出來的。 DQN,Deep Q Network,顧名思義,就是把強化學習的Q-learning,和深度神經網路結合在一起,這讓原本依據Q-table索引來定義的離散狀態,得以用深度學習來擴展至連續狀態。但也因為agent動作的預測,是改採神經網路來進行,導致整個模型架構變得複雜許多,非得使用GPU來訓練參數不可了。 上圖是一個9×9的迷宮,使用DQN技術,經過300回合訓練所得到的步數分佈數據。主角由中心位置(5,5)開始走,設法避開左上角(1,1)的魔王,儘量以最少的步數8去找到右下角(9,9)的寶藏。 可以看得出來,即使已經接近300回合的練習,仍然會有大於8的步數出現,因為這個時候epsilon仍有約0.05,也就是約20次就會有1次的隨機決定動作。但整體而言,神經網路的參數訓練部份,已經逐漸趨向穩定了。 使用DQN,其神經網路搭配強化式學習一起訓練,必然加倍消耗運算資源,不但訓練回合數比單純使用Q-table來得多,而且每一回合所使用的時間,也隨之暴漲了好幾個數量級,這不禁讓我們想起黃仁勳的名言「算力即國力」。 但這個改變是無可避免的,因為來到AI機器人時代,離散的狀態是一定要改成連續的狀態,這時候,比DQN更加被廣泛使用的PPO(Proximal Policy Optimization),也早已步上更寬廣的舞台了。 圖3-13-2. AI機器人雙雄爭霸時代,背後都需要更好的深度強化學習演算法來精益求精。 

強化式學習之13~DQN與聶老師 Read More »

強化式學習之12~製作執行檔

3-12:製作執行檔 我們所製作的AI遊戲,是使用Python語言來編寫,目前都是採用Spyder軟體來存取訓練的成果,但並不是每個人都準備有這種編譯軟體。如果,想要把所得到的AI結果,推展到一般人也能接觸得到,有兩種方法,其一是將它轉成***.exe執行檔,其二是把它放到網路上。 我們這個單元先簡要地介紹執行檔的做法。第一步,利用pip install pyinstaller的指令,安裝好pyinstaller模組;然後,到開始功能表的Anaconda3資料夾中,找到Anaconda Prompt介面(類似命令提示字元),切換到工作資料夾,去執行pyinstaller -F ***.py的命令,便可將***.py轉成執行檔。 https://mobile-learning-testing.com/wp-content/uploads/2025/05/reinpon7.mp4 上面的選項 -F,是設定轉換後只要生成***.exe執行檔就好。這個執行檔在被生成後,我們把它複製貼到原來的***.py旁邊,用以載入相關的數據、音效、圖片檔等。花費最多時間載入的是 .npy檔案,它的大小超過1G Bytes,它是訓練了1萬1千次的Q-table,本身是多軸多維的numpy陣列。

強化式學習之12~製作執行檔 Read More »

強化式學習之11~訓練與實行

3-11:訓練與實行 我們先前每個AI遊戲的練習,都是讓程式跑了很多個小時之後,才能看到訓練的成效。這在訓練模型階段是不可避免的,訓練人工智慧的過程,本就是最消耗運算資源的。 https://mobile-learning-testing.com/wp-content/uploads/2025/04/reinpon6.mp4 一旦模型訓練到合乎我們的預期後,就可以把訓練結果直接拿來應用,不需要再每次都花那麼多時間了。如果是神經網路,就是把得到的權重係數儲存再載入,而我們現在的強化式學習,則是把多次修正後的Q-table存成 ***.npy檔案,然後在另一個相近的程式中載入再執行。 https://mobile-learning-testing.com/wp-content/uploads/2025/04/reinpon62.mp4 這個AI遊戲,我們將畫面像素,由400×400增加至600×600,但訓練的時間反而減少了,這是因為我們讓裡面的人物每走一步要跨過20個像素,所以狀態數會減少。即便如此,所儲存的Q-table,仍佔了超過1G的容量,因此在載入檔案階段,有花了一些時間。 在人工智慧模型建立過程中,就監督式訓練而言,最花時間的,其實是在準備資料和整理資料階段。但對強化式學習而言,這個階段的時間倒是可以節省下來,因為它所修正的資料,是由它自己計算而得的。

強化式學習之11~訓練與實行 Read More »

強化式學習之10~藍波之AI版本

3-10:藍波之AI版本 先前第8單元的AI版本無人駕駛遊戲,如果把它的物件設計成各種實際個體,透過Pygame模組的2D美工和程式技巧,很快的就可以將它轉成AI版本的藍波遊戲,這個遊戲主角是源自於古早的電影「第一滴血」。 「第一滴血」中的藍波(Rambo),可以在槍林彈雨中深入虎穴,痛擊歹徒搶救人質,簡直神通廣大無所不能。演員出身的美國前總統雷根曾戲稱,萬一再有類似越戰人質的事件,一定要派藍波去搶救才行。 https://mobile-learning-testing.com/wp-content/uploads/2025/04/reinpon5.mp4 這個AI遊戲,只不過將畫面像素,由300×300增加至400×400,但訓練的時間,竟長達了12個小時。其原因在於,雖然狀態項目一樣,但每個項目的元素數目增加了不少,如果再形成多維陣列,則其狀態的排列組合就多了好幾倍。 即便如此,這和現實工作場景的狀態數相比較起來,仍然是小巫見大巫。目前的Q-learning演算法,是使用類似查表的方式修正其Q值,如果狀態數大幅增加之後,就有可能會使用到DQN的技術了。 DQN,Deep Q Network,它的Q值修正,是在原有的動作值函數基礎之上,再加入了深度神經網路的技巧,也因此消耗更多的計算資源。照理,是可以使用Google Colab來加速其神經網路的計算,但Colab並不支援Pygame的顯示視窗,所以到目前為止,我們的AI遊戲都還是使用未安裝GPU的個人電腦,來進行簡單的Q-table計算。

強化式學習之10~藍波之AI版本 Read More »

強化式學習之9~黃仁勳之GTC演講

3-9:黃仁勳之GTC演講 Nvidia執行長黃仁勳,近日主持GTC(GPU Technology Conference)會議,介紹了好幾種新技術。其中最大的亮點,當然非AI機器人莫屬。 他當中提到的Isaac、Newton,其實是同一個人,就是艾薩克·牛頓(Isaac Newton),歷史上最偉大的物理學家。黃仁勳特別強調物理法則的重要性,它決定了機器人強化學習(Reinforcement Learning)裡面的可驗證獎勵。 當然,他也先爬梳了從生成式AI之後,歷經AI代理人(AI Agent),再到Physical AI的可循脈絡。其實”Physical”在這裡的翻譯,”實體的”要比”物理世界的”來得好,表越過純粹數位資訊處理階段,來到有實際感知能力的AI機器人領域。 在這裡,我們還是必需再次強調「強化式學習」的重要性。機器人產業,是一個前景可期的兵家必爭之地,台灣在電腦硬體方面的領先地位無庸贅述,如果在軟體演算法方面也能追上國際水平,則這百年一遇的機會,我們必然會是舞台上不可或缺的主角之一。

強化式學習之9~黃仁勳之GTC演講 Read More »

強化式學習之8~AI版本無人駕駛遊戲

3-8:AI版本無人駕駛遊戲 我們前面所訓練的迷宮遊戲,寶藏和魔王都是固定在不變的位置,主角要完成任務並不困難。這個單元,我們讓寶藏和魔王都可以動起來,並在迷宮中挖出兩個深坑陷阱,以提高遊戲的難度。 主角碰到魔王、掉進深坑、找到寶藏,該回合就會結束。或者走了七百步甚麼都沒有碰到,那一回合也會結束。 https://mobile-learning-testing.com/wp-content/uploads/2025/03/nomandrive.mp4 這個訓練,只要將各個角色設計成不同的美工造型,就可以把這個遊戲轉換成敵後爆破遊戲,或者無人駕駛遊戲,甚至可以進一步將其擴充至3D的場景。 因為遊戲難度提升了,訓練的回合數也就增加到了一萬回合以上。但如果要把技術應用到實務工作上,如無人搬運、機器人等,訓練回合多於數十萬或者數百萬以上,都是很平常的。

強化式學習之8~AI版本無人駕駛遊戲 Read More »

強化式學習之7~AI版本動態遊戲初探

3-7:AI版本動態遊戲初探 我們在前面的單元,曾使用Q-learning來訓練迷宮遊戲的主角(agent),讓他可以摸索出最佳路徑,以找出固定位置的寶藏目標物,並避免誤闖大魔王所在地。 這個單元,我們嘗試讓目標物變得可以移動,看看是否仍然有機會成功訓練agent,讓他也可以找到移動中的目標。 我們直接引用前面設計好的球和磚塊,把磚塊當作目標物而把球當作agent,先讓磚塊循著一定的軌跡移動,再觀察經過一段時間訓練後,球是否有機會決定出最短路徑來擊中磚塊。 https://mobile-learning-testing.com/wp-content/uploads/2025/02/dynamic.mp4 經由上面的訓練,我們可以看出來,只要訓練回合數夠多,在簡單的架構下,主角依舊很有機會找到移動式的寶藏。但如果魔王也是移動式的,這樣的演算邏輯是否還可以擴充套用,就必須再加上新的元件來驗證。 一般遊戲中的寶物和敵人,都有可能隨情境變動其位置,甚至不少遊戲的空間還是以3D的方式來呈現。但若要將AI訓練的部份再加進遊戲中,則必須一步一步來測試策略是否仍然可行。因為除了演算法要行得通之外,運算資源的使用,也會隨著狀態(state)、動作(action)的增加,快速提升其需求量。

強化式學習之7~AI版本動態遊戲初探 Read More »

強化式學習之6~AI版本打磚塊遊戲

3-6:AI版本打磚塊遊戲 前一單元,我們使用Q-learning演算法進行2維遊戲,讓球在3個牆面1個地板及拍子間移動,令拍子可不斷地回擊到球而得到分數,讓球儘量的不碰撞地板上來延續回合。這一單元,我們將其擴充為為完整的打磚塊遊戲。 我們在原先的架構上,只再加上磚塊的部份,所以整個演算法的邏輯,仍舊是維持原有的狀態及動作。它的策略很簡單,只要拍子不斷的回擊到球,就有機會把磚塊全部打光。所以在球打到拍子的時候,我們給予一個很大的正reward,球打到地板的時候,給予一個很大的負reward。 https://mobile-learning-testing.com/wp-content/uploads/2025/01/reinpon4.mp4 強化式學習,在未來智慧機器人及無人駕駛產業興盛之後,很有機會成為人工智慧的顯學。這些產品的光機電控制元件背後,驅動硬體運作的軟體演算法,必然是和強化式學習相關的。要跨入這一領域,必須要有一定的學理基礎,和足夠的程式設計能力。 對初學者來講,想要把開發的演算法,找到機器人或電動車來套用測試,談何容易。變通的方式,就是將類似的演算邏輯,使用電腦遊戲來實踐,這不但經濟實惠,還可以很快看到訓練成果。當然,除了Python程式設計技巧,還需要熟悉諸如pygame的遊戲模組。 圖3-6-1:智慧機器人和無人駕駛產業,正蓄勢待發。

強化式學習之6~AI版本打磚塊遊戲 Read More »

強化式學習之5~AI版本個人乒乓球遊戲

3-5:AI版本個人乒乓球遊戲 前一單元運用Q-learning演算法,進行所謂1維半的遊戲,讓兩個有時間差的乒乓球,在上下牆面及還擊拍子間來回動作。我們稱之為一維半,是因為兩個球在行進時有固定時間差,而且都是做直線運動,所以還不能算是二維遊戲。 這個單元,我們進入到二維運動的初步狀態,讓球在四個牆面及還擊拍子間來回動作。遊戲的計分,同樣都是拍子有回擊到球就得一分,否則該回合就結束。遊戲設計的重點,仍然是要決定代理人(agent)有哪些狀態(state)和動作(action),然後再把這些狀態和動作,放進Q-table陣列各軸當中。 https://mobile-learning-testing.com/wp-content/uploads/2025/01/reinpon3.mp4 上圖的二維遊戲是AI打磚塊遊戲的初步,看起來像是個人版本的AI打乒乓球遊戲,或者像是自己一個人玩的壁球遊戲。 這種初步遊戲,可以幫忙先確定所使用的Q-learning,在磚塊還沒建構之前,在二維空間的演算是否行得通。若然確實可行,後續部份就可以再把磚塊放到裡面去了。

強化式學習之5~AI版本個人乒乓球遊戲 Read More »

Shopping Cart