Blog6

自然語言處理之15~Gemini做程式設計

2-15:Gemini做程式設計 大型語言模型,像Claude或ChatGPT等,本身就是極其複雜的程式碼,由它們來寫普通編程,真是牛刀小試、小菜一碟,A piece of cake。 我們讓Gemini設計一個”打磚塊”網頁遊戲,使用的是HTML5語法,這對AI來講輕而易舉。只不過,設計出來的網頁內容,究竟要放到哪個網站平台,如何讓介面看起來簡潔友善,這些反而比較要花時間。 打磚塊遊戲 (Breakout) – 手機觸控版 點擊螢幕玩遊戲 使用 **手指拖曳** 或 **← → 鍵** 移動擋板。 點擊、觸控或按下 **空格鍵** 開始遊戲! 上圖的遊戲,重新整理之後,可觸控拖曳球拍來回擊圓球。在此要注意的是,這類遊戲是直接建立在網頁中,並不是可獨立下載啟動的App。 大約20年前,網頁上的遊戲動畫,幾乎清一色都由Flash包辦了,很多從業人員靠它風生水起。直到蘋果賈伯斯質疑,網頁內嵌這種檔案會產生明顯資安問題,自此,這一群人紛紛從雲端跌落谷底。 圖2-15-1. 早期Flash動畫遊戲也曾做得細緻生動。  這種小遊戲、小軟體,原本是初階程式人員可以著墨的地方,但不知不覺中,AI已經正在取代這類人力了。 中階人員倒還有一定的生存空間。如下圖中,我們要求AI設計強化學習的遊戲,結果它學習到43000回合了,仍舊欲振乏力。像這種整合遊戲模組、數學計算的進階程式設計,目前還是需要資深工程師的協助。 https://mobile-learning-testing.com/wp-content/uploads/2025/12/brick.mp4

自然語言處理之15~Gemini做程式設計 Read More »

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

2-14:AI生成之人物一致性 新發表的Gemini 3當中,多模態(MultiModal)是被特別強調的重點,它能有效理解文字、圖像、語音和視訊的內容,並做適當的推理和處理。 ChatGPT文字功能很強,在一來一回多次問答中,仍能掌握住提問者的原始想法。但圖片生成卻差強人意,同一個人的相貌外型,經常在幾輪作畫之後,就開始走樣了。 我們比較兩種軟體在不同場景及服裝下,各自兩兩生成同一位女性的差異,下面後兩張圖片相比於前兩張,可看得出來,在多媒體人物一致性上面,Google確實更勝一籌。 這是令人振奮的好消息,它表示,困擾我們很久的Characters Consistency問題,已經改善了不少,AI至少有能力協助繪本作者,畫出書中前後連貫的主配角圖像。 於是我們引用古龍小說”多情劍客無情劍”,請Gemini 3畫出人物造型一致的各場景,它的表現,也確實讓人刮目相看。 這些場景是:1. 李尋歡近像。2. 李尋歡相遇阿飛 。3. 李尋歡決戰龍鳳環上官金虹。4. 阿飛勇鬥荊無命。 我們也找來電影劇照相比對,發現AI插畫雖不完全盡如人意,但也並未離題。 古龍的武俠小說,對書中人物個性、外型的描寫相當深刻,AI繪圖很容易掌握其特色。 金庸小說,則因為人物眾多、場面浩大,提示詞的使用,實在很難精準到位。 下圖中,郭芙斬斷楊過右臂這一段,Gemini的表現還算稱職,但楊過在襄陽城丟擲飛石擊殺蒙哥大汗,這橋段始終差之毫釐。

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

自然語言處理之13~三探AI推理能力

2-13:三探AI推理能力 Gemini 3發表之後,獲得各方一致好評。它在程式開發、自動化網站與產品設計方面,都有長足進步,而我們一直關心的「推理能力」,更是這次發表會的重頭戲。 它在GPQA Diamond測試中取得了91.9%頂尖成績,展現了博士級別的推理能力;在MathArena Apex測試中取得了23.4%的全新最高分,為數學領域的前沿模型樹立了新的標竿。 但是,「登高必自卑,行遠必自邇」,大型語言模型(LLM,Large Language Model),究竟是如何一步步進化至具備推理能力的呢? 圖2-13-1. LLM的三個訓練模型階段。  上圖是LLM的三個訓練模型階段。在主結構的Transformer建立好之後,必須開始餵養資料來訓練它。第一階段Pretraining預訓練,要使用取得的海量資料,訓練它學習文字接龍的方式,將一句話或一段話講得通順。 第二階段Finetuning微調,則在既有基礎之上,訓練它就某個課題一來一回做問答。這時候,是採用監督式學習,每個問題都會附帶標準答案,這個步驟很耗費人力成本,也無法窮舉所有可能的題目。 第三階段,應該是和推理能力最相關的部份了。我們會把模型進一步優化,先替輸出的文字打分數,再回饋給模型修正參數,讓它學會比較精準且符合人類習慣的語法。這裡使用的技術,叫做RLHF,”人為回饋強化式學習”。 圖2-13-2. RLHF用人為的方式幫模型輸出文字打分數。  RLHF,是在原有模型之外,再建立一個Reward Model做為裁判評分之用。建構好這個Model之後,用它計算原有模型輸出的損失函數,再次反向傳播修正權重值,讓輸出的答案更合理。 這個Reward Model,除了採用到人為回饋的部份,還加上先前提過的策略梯度,最常見的方法像PPO(Proximal Policy Optimization),是將文字序列視為時間序列來做運算。 圖2-13-3. PPO可協助決定較佳的文字序列輸出。  將文字序列視為時間序列,早在RNN時代就是這麼處理的,但在這裡,PPO是把每個尚待完成中的文字(context)當作狀態(state),對下一個接龍字詞(token)的選擇視為動作(action),藉此決定每個狀態的獎勵(reward),以形成最適的動作機率分佈。 這個PPO強化式學習機制,讓原本只懂做檢索的Transformer,好像具備了判斷高低優劣的”品味”,開始學會思考推理。 PPO結合學術研究,開發出了新的技術,比如像Soft Actor-Critic (SAC)等,它被應用在AI機器人的訓練上面,取得相當出色的成果。

自然語言處理之13~三探AI推理能力 Read More »

自然語言處理之12~再探AI推理能力

2-12:再探AI推理能力 雖然目前AI的推理功能,越來越受到各方重視,但有一個議題,始終爭論不休,那就是,AI究竟真正會思考了,還是它仍然只在做檢索查詢的動作? 我們傳統在查詢資料時,是習慣透過資料庫,將資料表裡面的數據取了出來。到了AI時代,訊息是隱含在神經網路的參數裡面,但所做的工作,其實都還是在查詢資料,只不過,這時候資料的呈現,是採用自然語言的形式。 但是,AI確實能夠一步一步的推理,幫我們把答案解出來啊!看看下面這個題目,是個國一程度的數學應用題。”有一個人,以每小時30公里的速度,走了30公里的路程,然後再以每小時10公里的速度走了30公里的路程,請問這個人的平均時速是多少?”。 通常在解這個題目時,我們會很直覺地,將時速30公里加上時速10公里,然後再除以2,得到平均時速20公里,因為兩種時速同樣走了30公里。 但ChatGPT懂得依照定義,將總路程除以總時間,得到15公里的平均時速。看起來,似乎ChatGPT是懂得思考的,但也有人懷疑,這是AI在預訓練(Pre-training)階段,從海量資料中,記憶了解題步驟,並非是它自己推理出來的。 我們再來看另一個題目,是和社會現象有關的,我先問ChatGPT是否瞭解印度的種姓制度,它當然是很清楚的,我再問它,”婆羅門禁止賤民的影子和他們的影子相重疊,真正的目的是什麼?”,它的回答如下所示: 我覺得這些答案並未直指核心,所以我再告訴它,”我認為最重要的目的在於做「實質隔離」,因為影子要重疊在一起,人跟人之間的距離必須夠近才會發生,所以主要的考量,是要利用距離來維持高種姓的優越性,你認為這樣的推論合理嗎?” 它的回答就更加深入了。 它補充說明說,物理距離=社會距離,所以禁止影子重疊,就是禁止低種姓靠近高種姓的身體與地位。 它的推論是更加深入了,但也不禁讓人懷疑,它其實是在利用我第二次的提示詞(prompt),再去做一次檢索(search)的動作。 目前的趨勢,Google在這方面好像有不錯的實質進展,他們DeepMind的研究副總裁,出生台北市的紀懷新博士提到,其合作團隊改採「中小型語言模型」,利用”Multi-step reasoning”的推理技術,已經可以考到奧林匹亞數學競賽的銀牌等級,未來似乎頗值得期待。

自然語言處理之12~再探AI推理能力 Read More »

自然語言處理之11~ChatGPT之推理初步

2-11:ChatGPT之推理初步 目前各個商業化的大型語言模型,如Grok、Gemini、Claude等,為凸顯其市場競爭力,都會特別強調其推理功能,也就是仿效人類舉一反三、觸類旁通的能力。但老字號的ChatGPT,即使是3.5版本,若能善用提詞技巧,它的推理能力,已經足夠讓人驚艷了。 推理能力,一般人比較會聯想到數理科學領域,那些需要繁複計算的解題過程。但不能忽視的是,普通人在處理平常事物的時候,如果具備有良好的文字思考邏輯能力,在很多方面,也是相對有優勢的。 我們先從簡單的測試開始,看看ChatGPT3.5能否理解半古典中文笑話。它若能分析出笑點所在,則它的能力,很可能不僅僅止於整理資料而已,或許它還能有幾分揣摩人類情感的天份。以下是我們給它的笑話,以及ChatGPT3.5所做的回應。 「 有一個女婿在過年期間去向丈母娘祝壽,他在進門時看到了門口新貼好的春聯上下聯,於是很應景的向岳母說了句“天增歲月娘增壽”,這時所有人都為他的急智大聲喝采;可他得意忘形,不知見好就收,竟然又脫口而出了第二句“春滿乾坤父滿門”,於是被所有親戚當場轟出了家門。」請問,這個笑話的笑點在哪裡? ChatGPT的解說,真是超乎我們的預期。它竟然知道修改過後的春聯,相對於原來的春聯,這當中的梗到底是好笑在哪裡。 於是,我們再出一題英文的笑話來考考它……….. 「One day, the human torch in the movie ‘Fantastic Four’ felt uncomfortable. Then he went to a hospital to check his body temperature. After the examination, the nurse told him “You are hot.”. And he replied to her “So are you.”」 What’s funny in the mentioned joke?

自然語言處理之11~ChatGPT之推理初步 Read More »

自然語言處理之10~ChatGPT表格處理

2-10:ChatGPT表格處理 ChatGPT3.5本身,即使只能算是相對陽春的版本,但可做的事情還真不少,除了文章摘要、詩文創作、修改文稿,還可以把二維表格,取其部份欄位數據,整理為CSV資料檔案格式。 我們令GPT將下列原始表格中,共6個欄位的資料,處理成4個欄位的新表格。新表格欄位名稱包括有產業別,2021年、2022年每月每家平均銷售額,以及這兩年的平均銷售額比值變動率。 上面是未處理前的原始表格,其第一列的欄位名稱部份,是有經過分割儲存格的處理,並且2022年還只有上半年6個月的資料,即使是用人的肉眼來判讀,有時都還難免會發生錯誤,但ChatGPT居然都能正確解讀無誤,實在讓人驚訝! GPT整理出來的新表格如下,它的計算數據經過查核,並無錯誤,可直接將其轉換成 CSV(Comma Seperated Values)檔案格式。 我們用得到的CSV檔案,請ChatGPT幫忙設計Python程式碼,用來繪製其3D散佈圖。它所提供的程式碼,我們只需要將輸入輸出的部份修改即可,執行後可得到以下的圖形。 如果純粹用人工手動方式,一般人設計Python程式來畫出2D散佈圖,基本上並沒有太大困難,但要畫出3D立體圖並且標記清楚,就沒那麼簡單了。ChatGPT設計程式的能力,一次又一次地,讓我們為它進步的幅度感到震驚!它正無聲無息地,在快速改變程式設計這個行業的樣貌。

自然語言處理之10~ChatGPT表格處理 Read More »

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

2-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~小型語言模型轉執行檔

2-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連線上網

2-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 »

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

Shopping Cart