Author name: 楊慶忠

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

自然語言處理之6~ChatGPT的基礎Transformer

 2-6:ChatGPT的基礎Transformer 目前熱門的生成式AI技術,包括ChatGPT和Gemini及Llama等,它們都是建立在Transformer演算法的基礎之上。開發者會使用「Transformer」這個名稱,也許是因為它使用到多頭多層的架構,宛如組合積木般層層堆疊而上,有利於擴充其權重數至百億個或更多。 圖2-6-1. Transformer也是相當受歡迎的電影”變形金剛”。  而Transformer的核心,則在注意力(Attention)的運算。注意力機制源自人類的視覺行為,好比我們在看下面圖片時,我們會重點式的先看嬰兒臉部表情,以及標題列和內文第一行,再顧及嬰兒紙尿布的說明,而不會鉅細靡遺的把整張圖片都看完。 注意力機制早期是應用在電腦視覺上面,但真正受到眾人矚目的,是使用在自然語言處理之後的卓越表現。例如我們現在英翻中一個句子,”I am walking to the river bank.”,當翻譯到”我正走向河X”的時候,這個X,如果有注意到river和bank的關係,或者有參照到已經翻譯出來的中文部份,則接在”河”後面的字詞,”岸邊”要比”銀行”好多了。 我們對模型輸入文字時,第一步,是先將英文單字或者中文詞彙,利用詞嵌入(Word Embedding)技術,將其轉換成向量的型態,稱之為「詞向量」(Word Vector)。向量裡面純量元素的個數,名之為長度或「維度」,有時維度可達512或更多。一個句子裡面有好幾個單字,一個單字會使用到一個向量,把這幾個向量堆在一起就成了矩陣。 詞向量裡面某個維度數字的大小,可視為這個單字所具某種屬性的強弱。例如下圖中,4個單字的向量維度都是7,第1個維度living being表示其生物屬性,cat、kitten、dog都有一定大小,但houses就是負值了;第2個feline表示其貓科屬性,cat、kitten都很高,dog和houses都是負數了;而第7個維度plural表其名詞複數形屬性,最高的就是字尾有加s的houses。 各個單字,用詞向量表示後,彼此之間的相關程度,可以從這些向量相靠近的程度看得出來,如下圖的貓和狗的關係就勝過和汽車的關係。向量靠得越近,夾角越小,其cosine值越大。我們知道兩個向量的內積(dot product)值,是和cosine值呈正比,所以就可以用向量內積值來表示彼此相關的程度。 輸入句子所形成的矩陣,要進行自我注意力(Self Attention)之前,先要把維度減少,所使用的轉換矩陣,就是即將要訓練的權重矩陣。這個部份,都是把輸入矩陣X轉換成三個矩陣Q、K、V,這三個新矩陣,意義很相近,都是原始矩陣X降維的結果。所以可以進行Q、K之間的內積運算,將其得到的加權值,乘上V矩陣,就是有考慮到詞向量彼此關係的新矩陣Z了。 圖2-6-2. Q和K矩陣相乘時,K矩陣有先做了一個轉置(Transpose)的動作,將列轉成行,才能進行兩個矩陣的內積運算。註:中國大陸和台灣對於列跟行的定義,剛好相反,但如果使用row和column就沒有問題了。  輸入矩陣X所轉換的三個矩陣,Q、K、V,可以三個一組形成好幾組,這樣一來,要訓練的權重矩陣就可多出好幾倍,這就是多頭注意力(Multi-head Attention)的概念。甚至,還可以將輸出當作另一層的輸入,重複類似的計算步驟,使用多層訓練來得到更多的權重矩陣。 整個完整的架構,就如下圖所示。在左邊的編碼器(Encoder)和右邊的解碼器(Decoder)當中,各有一次的自我注意力運算,但在解碼器中,又多了一次一般注意力(cross attention)運算,它是把自己的Q矩陣,和編碼器的K矩陣做內積再乘上編碼器的V矩陣。這樣的操作是可以理解的,例如在做翻譯時,譯文必須參考原文,也要參考已經翻譯出來的部分。 我們把上面的架構圖,其執行注意力機制的過程,用下面一個簡單的動畫來綜合說明。 https://mobile-learning-testing.com/wp-content/uploads/2025/03/attention.mp4

自然語言處理之6~ChatGPT的基礎Transformer 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 »

進階語法之7~Google Colab之應用

2-7:Google Colab之應用 使用Python進行深度學習常可發現,只要訓練模型稍大一點,不含GPU的個人電腦就跑不太起來,GPU對今日的人工智慧工程師來說,已是非使用不可的基本元件了。 這時候,可考慮採用Google雲端硬碟所免費提供的資源,我稱之為「窮人的GPU」,雖然其使用的額度越來越受限制,但在一定範圍內還不會花到使用者一毛錢。 所以,您可先到自己的google雲端硬碟處,按下左上方的「新增」,然後移動游標至選單「更多」上面,這時會自動出現另一選單,你再點選其最下方的「連結更多應用程式」,然後在頁面的搜尋處,輸入「Colaboratory」搜尋,這時會出現Colaboratory的頁面,直接點選其「連接」按鈕,就可以新增其功能了。 這時候,再次到自己的google雲端硬碟處,一樣按下左上方的「新增」,然後同樣移動游標至選單「更多」上面,這時在另一選單的「連結更多應用程式」選項上端,你應該可以看得到了「Google Colaboratory」這一項,請點選它以建立一份新的筆記本(就是Python程式檔)。 也不要忘記,從筆記本功能表的「編輯」裡面的「筆記本設定」,點選「GPU」這一項,你將會發現,有無點選GPU,運算速度相差五倍以上。 你所開啟的新程式,是被放在虛擬空間中處理,如果要存取資料或檔案,記得要展開左邊的「drive」資料夾,從選項中複製絕對路徑至程式碼中。 在Google Colab上執行程式,主要是用於模型訓練階段,因為它需要把訓練資料多次輸入模型內,反覆求得最適權重,相當耗費運算資源及時間,而GPU可大幅縮短這訓練的時間。 訓練完畢後,接下來就是要做預測的工作了。這個階段,並不需要太多運算資源,也花費不了多少時間,因此可以把所訓練得到的權重從雲端下載,直接在個人電腦上進行預測即可。下圖是將雲端下載的權重放置於個人電腦的組態檔中,再配合OpenCV模組做預測的輸出畫面。 上圖是使用YOLOv4物件偵測技術,對外科手術器械進行智慧辨識。在雲端階段先上傳標記圖片資料集去訓練模型,而後再下載其權重對未知的圖片做框選分類及計數。 下圖則是市面上已出現的類似架構,但被應用在麵包店結帳系統。它可針對好幾款不同數量的麵包進行總價計算,在顧客擁擠時或無人商店中,有助於加快結帳速度及減少人為錯誤。

進階語法之7~Google Colab之應用 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 »

多益文法與字彙之8~比較級與最高級

2-8:比較級與最高級 形容詞比較級的句型,一般人都可以琅琅上口,例如He is younger than me.。這種口語化的表達,也可以把受格me改回成主格 I,但假使要嚴格講究文法,正確句型應該是He is younger than I am.,或者像He has fewer friends than I do. ,但日常會話都習慣省略be動詞或助動詞,然後把主格改受格。 如果要表示比較程度差異大,可用much來修飾,例如He is much younger than me.,如果差異程度較小,則用a little來修飾,像He is a little younger than me.。或者要表示具體數據的差異,可把它寫成如He is five years younger than me.。 要注意的是more這個字的用法,它放在長音節的形容詞前面,是當作副詞來形成比較級,如more expensive、more beautiful。但它本身就可以當作形容詞比較級來用,它同時是many(可數)和much(不可數)的比較級”比較多”的意思,所以除了說His friends are more than mine.,你也可以說His money is more than mine。 最高級形容詞,前面通常要加the,後面會加in、of,用來做限定範圍之內的比較,例如He is the richest

多益文法與字彙之8~比較級與最高級 Read More »

多益文法與字彙之7~介系詞與介副詞

2-7:介系詞與介副詞 先前提到的「完全不及物動詞」,照理它後面是不應該放置受詞的,但事實上,只要附接一些介系詞,不少完全不及物動詞還是可以連結受詞。例如He laughed. 、He laughed at me.,前句的laugh不須加受詞,後句的laugh附上介系詞at之後就可以加受詞me了。 類似的例子還有 listen to、wait for、look at等等,其加上介系詞後還保有原來的意思。但有時候,會衍生出新的解釋,例如look after表照顧,look into有調查的意思,count on則有仰賴的意思。 如果完全不及物動詞接了介系詞後,還是不放置受詞,我們就稱這種介系詞為介副詞,因為它的功能在於修飾動詞,角色如同副詞一般。例如 I prefer to take a rest rather than stay up,up在此是當副詞用,修飾完全不及物動詞stay,解釋成”熬夜”的意思。 以此類推,「及物動詞」後面應該也可以放介副詞,但跟前述稍有不同的是,它放了介副詞,還是可以連結受詞。例如Please turn on the light., 當中turn是及物動詞,on是用來修飾它表開啟的狀態,是個介副詞,後接名詞the light。如果將句子改成Please turn the light on. ,就更好理解及物動詞中的介副詞功能。 同樣地,「及物動詞」後面也是可以放介系詞,只是句型結構要調整一下,比如像The victim accused him of murder.,其中accuse是及物動詞,後面接受詞him,然後再接介系詞of及另一受詞murder。類似的句型,還有像The landlord exempted peasants from heavy duties. 圖2-7-2. turn down,有”音量調小”和”拒絕”的意思。 我們常用的動詞go,究竟是及物動詞還是不及物動詞呢?go shopping、go

多益文法與字彙之7~介系詞與介副詞 Read More »

Shopping Cart