Blog7

強化式學習之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 »

強化式學習之4~Q-learning

3-4:Q-learning 增強式學習裡面,有一個很基本的技巧,叫做Q-learning。Q是Quality的意思,指在某種狀態下,採取某個行動的價值,或者說在幾個可供選擇的行動中,各個行動品質的量化評估。 Q-learning的演練例子當中,除了先前提過的迷宮遊戲之外,Open AI公司所提供的Gym Cart-Pole,「木棒平衡滑車」遊戲 ,是被引用次數相當多典型範例,它訓練滑車左右快速移動,來讓繞軸轉動的木棒可以維持平衡。 上圖的實驗是不容易複製的,除了程式設計之外,還要有精準的機械控制模組來協作,一般人是沒辦法模仿的。 所以變通的方式,就是純粹用電腦動畫遊戲來模擬看看。但模擬過程的計算還真不好處理,因為木棒的軌跡,除了移動還有轉動,要做得維妙維肖,除了程式語言,還要有力學的演算技巧。只是一般設計程式的人,往往連「角速度乘以曲率半徑等於線性速度」,這樣的物理基礎都沒有,所以設計出來的動畫遊戲,就如下圖這般形似而神異了。 Cart-Pole這個訓練遊戲的重點,是在決定整個環境(environment)有哪些狀態(state),代理人(agent)有哪些動作(action)。只不過它的四個狀態中,木棒角度和角速度就會難倒很多人,嚴格來講,這個練習並不適合讓初學者來嘗試。 值得慶幸的是它的代理人動作倒還很簡單,就是滑車在某個位置時,要決定下一步是朝左移一格、朝右移一格或靜止不動這三種。我們把這三種動作維持不變,場景改成類似個人版的乒乓球遊戲,狀態就可大幅簡化成三個物體的位置,如此,初學者就可以很清楚,在套用Q-learning的時候,Q-table的四軸陣列,應該要如何建立起來了。 https://mobile-learning-testing.com/wp-content/uploads/2024/12/pon.mp4 上圖的訓練遊戲,它的reward值,在球接觸到拍子的狀態,應該是一個大的正數,在球接觸到地板的狀態,應該是一個大的負數,其他的狀態,給予 -1的reward即可。它可據此算出各個狀態的最適行動Q值,來決定下一步應該採取的行動。 這整個場景像是一維半(1.5D)的乒乓球遊戲,因為兩個球都只能在垂直方向移動,如果可以讓一個球在二維平面(2D)上持續移動,那就是個人乒乓遊戲的AI版本了。

強化式學習之4~Q-learning Read More »

強化式學習之3~隨機決策

3-3:隨機決策 早先提到的CNN神經網路中,其遮罩的係數(也就是權重),一開始是用隨機的方式來指定,在多次的訓練之後,會利用越來越小的誤差,逐步修正到比較合適的權重值。中間的步驟,也有用拋棄層(Dropout Layer)來做隨機處理的。 而增強式學習的隨機選擇考量,則是因為訓練初期獲得的資訊量有限,所以讓模型勇於嘗試各種可能性,在歷經了各種情況且反覆摸索之後,計算出最大報酬值以找出最好的策略。 前者隨機的部份是在訓練開始就全部完成,後者是在訓練過程逐次降低其比重。兩者相似的地方,就是隨機計算的處理都很快速,只不過一個是在神經層,另一個在時間序列當中。 蒙地卡羅模擬(Monte Carlo Simulation),是著名的隨機運算技術,它利用亂數產生器得到大量隨機數據,分析其統計分佈,進而引用來估計實際問題的答案,常被應用在增強式學習當中。 圖3-3-1. 提到蒙地卡羅的博弈產業,很容易聯想到隨機決策。 我們把先前的9×9迷宮訓練例子,用Python軟體再做一次比較完整的介紹。 編輯的軟體名稱為”Spyder”,是下載自Anaconda網站。程式在執行的時候,除了輸出的數據,也呈現出動態的迷宮視窗。”O”型的藍色圈代表尋找寶藏的主角(agent),經過數十回合的摸索與計算,終於找到最佳的路徑策略。 在這裡隨機選擇的比重,第1回合自然是100%,接下來就以0.8的等比級數下降。剛開始的前10個回合的機率都在10%以上,到了30回合以後漸趨為零,因為這時候得到的數據,已足夠自主判斷接下來的路徑了。當然這只是基礎的範例,比較大的問題訓練回合數可達幾萬甚至幾百萬。 https://mobile-learning-testing.com/wp-content/uploads/2024/08/mymaze.mp4 我們在”人工智慧入門”這一單元的貼文,暫時告一段落,隨後會用不定期的方式,進行這方面的發文。緊接著,我們將進入到”Python程式設計”單元,介紹實務上的一些常用指令,歡迎有心想鑽研技術細節的朋友,繼續閱讀本社團貼文。

強化式學習之3~隨機決策 Read More »

Shopping Cart