Author name: 楊慶忠

自然語言處理之9~AI生成之人物一致性

1-9:AI生成之人物一致性 ChatGPT3.5,是不提供影像生成功能的,但在ChatGPT4.0/4o版本當中,所使用到的DALL·E 3繪圖技術,倒是被應用在微軟的Copilot平台,可以免費經由Edge瀏覽器來開啟使用。 一般繪圖的風格,可以很粗略地劃分為寫實、插畫、卡通等,其中的寫實風格(realistic style),是畫風最細緻的表達方式,很多人喜歡拿來生成人物,但也會面臨同樣的難題,就是即使想要畫同一個人,前後的圖畫通常外表會相去甚遠。 例如,我們給它一個提詞,”Yang是一個台灣中年人,他身材微胖,頭髮是黑色的,臉型稍長,常常穿著一件藍色牛仔褲,請用寫實風格,幫我畫一張Yang在河邊(/街上)的圖畫。”,提詞的內容,只不過一個在「河邊」,另一個在「街上」,得到的圖案,差異竟如此之大。 這是因為,我們對人物外型細節的描述不夠精準。如果對同一個人的樣貌特徵,包括姓名、年齡、性別、髮型、臉型、膚色、衣服、裙褲等,前後都可以有一致性的描述,則情況可以改善很多。 我們稍微修改一下提詞為,”Lin是一位台灣年輕女性,她的短髮是金色的,她身材瘦小,皮膚白皙,臉是圓的,喜歡穿著一件粉紅色T-shirt,和一條綠色裙子。請用寫實風格,幫我畫出一張Lin在河邊(/在餐廳吃飯)的圖畫。”,就可以得到下面改良的結果。 除了人物出現的場合,我們可再把衣著調整一下,這不會太過改變人物的外貌,但可視為場景的轉換,”Lin是一位台灣年輕女性,她的短髮是金色的,她身材瘦小,皮膚白皙,臉是圓的,喜歡穿著一件紫色外套,和一條藍色牛仔褲。請用寫實風格,幫我畫出一張Lin在床上看手機(/在家裡和柴犬擁抱)的圖畫。” 使用免費的生成式AI,或者戲稱為「窮人的AI」,若運用好的提詞(prompt),可補原有軟體之不足。但時代總是在進步的,這種角色一致性(characters consistency)的問題,會隨技術的改善逐步迎刃而解。

自然語言處理之9~AI生成之人物一致性 Read More »

自然語言處理之8~小型語言模型轉執行檔

1-8:小型語言模型轉執行檔 大型語言模型像ChatGPT等,是不容易被安裝在個人裝置之中,但小型語言模型,如果把它的功能,限縮在某些特定的用途上,例如單純翻譯中英文就好,或者只具備對話功能也可以,則其開發的軟體就不會太大,要轉換成執行檔就變得可行了。 在這個單元,我們所建立的小型語言模型,所提供的只有單一聊天功能,程式碼檔案不大,可利用前面提到的pyinstaller模組,直接轉換成執行檔。我們在此訓練資料的來源,是免費下載自PTT網頁平台(批踢踢)相關的對話資料集,所使用的文字並未多做修飾。 https://mobile-learning-testing.com/wp-content/uploads/2025/05/reinpon9.mp4 在執行對話時,可以察覺到答覆時有略為停頓了一下,這是因為所載入的神經網路權重,其容量多達1.24GB,而我們用的是陽春型的CPU,做如許張量計算有點吃力。如果CPU的速度夠快,或者改用GPU,就不會有這種停頓的感覺了。 到目前為止我們已經觀察到,Python這個程式語言,可連結網路、轉換檔案、建立視窗,很適合用於第一線的實務工作。邊緣裝置如果安裝這種執行檔再加上GPU,則雲端運算常出現的網路遲延(Latency),將不復存在。

自然語言處理之8~小型語言模型轉執行檔 Read More »

自然語言處理之7~AI連線上網

1-7:AI連線上網 我們以Python程式所開發的語言模型,如果想要提升它的可及性,可經由網路連線讓一般人也接觸得到,這同時也可避免原始程式碼外露的風險。另一方面,原始資料如果檔案太大,本就不適合安裝在個人裝置當中。 在這個單元,我們所採AI模型網路連線的技術,是目前普受歡迎的Flask模組。它是一種輕巧的網頁伺服器模組,可結合Python和HTML語法,讓使用者經由固定IP,連接到開發者的個人電腦,取用既經訓練好的語言模型,進行文字處理或生成的工作。 https://mobile-learning-testing.com/wp-content/uploads/2025/05/reinpon8.mp4 我們網頁上的輸入介面,和ChatGPT一樣陽春,而輸出的結果,更加陽春許多。因為是小型語言模型,僅限於英翻中的內容,沒有摘要、創作、簡報等等功能。 ChatGPT之所以使用雲端連線,是不得不然的技術性考量,因為它的神經網路參數,少則數十億,多則數百億,檔案太過龐大,是不可能被安裝在個人電腦上。 但現今的趨勢,一般則是認為,語言模型應該朝小型化發展,小到可以放在邊緣裝置裡面才好。如此,它所點燃的商機,才可能呈現爆炸性的成長。

自然語言處理之7~AI連線上網 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 »

自然語言處理之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 »

Shopping Cart