Blog6

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

自然語言處理之5~ChatGPT做多益測驗

2-5:ChatGPT做多益測驗 ChatGPT被稱為大型語言模型,想當然耳,它最擅長處理的必然是各類語言,包括中英文和程式語言。在模型訓練階段,它使用了大量文字(主要是英文),來進行翻譯、摘要、創作等工作,所以它也會是一個很棒的英文老師。 我們先用它來幫我們解答多益測驗的閱讀部份,在此,所引用的考題來源,是連結自本網站“英語檢定”導覽列,可由下面首頁點選進入: https://mobile-learning-testing.com 提問(prompt)的方式很簡單,只要使用下列文字即可: “請解答下列英語測驗題, 請先將全部題目閱讀一次之後, 再開始作答. ‘……….’ “ 將網頁題目複製後,貼到提問中的 ‘……….’ 部份,取代………即可(保留成對的單引號或雙引號)。但要注意,提問的時候,一定要請它先把全部題目閱讀一次之後再作答,因為這題閱讀測驗,本身有三個填空選擇題,分放在文章前、中、後段,如果只讀完填空題前一小段文字即做答,會產生誤答。 圖2-5-1. 使用ChatGPT,來閱讀一個短篇文章的英語測驗填空題。 上圖是測驗文章及題目內容。ChatGPT在閱讀題目時很有技巧,它看得懂有底線“_______”的地方,才是要填空的位置;它也知道,要去避開不是很重要又不太懂的部份,例如網頁上每題下方都有選項鈕來供點選做答,如右方所示 A   B   C   D  。但在複製貼到ChatGPT時選項鈕就看不到了,它也就視而不見了。 下圖是ChatGPT答題及解釋的內容,每個答案的對或錯它都有分析,幾乎都是一語中的,不多冗言。 未來我們會在多益聽力測驗的部份有所著墨,其在解答分析上需要多一點技巧,可等到GPT-4o等產品較普及後再來嘗試。 圖2-5-2. 使用ChatGPT,來分析填空選擇題的每個答案正確與否。

自然語言處理之5~ChatGPT做多益測驗 Read More »

自然語言處理之4~ChatGPT做網頁設計

2-4:ChatGPT做網頁設計 網頁設計,包括有前端和後端,合稱為全端。前端就是我們使用瀏覽器閱讀的頁面,常見的設計語法有HTML、CSS、JavaScript;後端是連結網頁資料庫的地方,PHP和mysql是普遍的軟體。 ChatGPT,對所有全端部份都能勝任。我們在此,僅顯示其前端設計功能,一葉知秋,它的網頁設計潛力看起來是頗值得期待。 我們在ChatGPT裡面,撰寫下列提問(prompt): “請用html和JavaScript語法, 建立一個複選(multi-choices)英語測驗題. 這個測驗題是有關’關係代名詞’的, 請將題目內容由上而下靠左對齊.” 圖2-4-1. 使用ChatGPT,來設計一個網頁英語測驗題。 上圖的關係代名詞複選測驗題的程式碼,是由ChatGPT所提供答覆。將程式碼複製貼上文書編輯器(例如記事本),再將其存成*.html檔案格式,然後快點兩次,就可以用瀏覽器閱讀其頁面了。 提問者只需用文字描述所想要的結果,其所生成的程式碼內部的指令,如按鈕(button)、核取方塊(checkbox),甚至顯示答案對或錯,一概都是ChatGPT負責寫就。讓人驚訝的,不但它使用的程式語法頗專業,它出的英語測驗題目,其難度也在多益之上。 例如答案二當中,”The person who I met……….”,常人會以為who要用受格whom才對,但實際上,使用主格who也是可以的。 圖2-4-2. 用瀏覽器開啟圖2-4-1的程式內容,得到一個關係代名詞的複選題。

自然語言處理之4~ChatGPT做網頁設計 Read More »

自然語言處理之3~ChatGPT做程式設計

2-3:ChatGPT做程式設計 使用ChatGPT整理資料或創作文字,適當的提問(prompt)是很重要的。好的提問可以做出有效的條件限制,讓它回答的內容,合理地限縮在你所需要的範圍內。 但一般人的日常對話,或者在社群平台輸入的文字,通常都比較隨興,不會刻意去講究文法和邏輯。因此在善用此項工具前,是需要花點時間學習,才能理解提問的重要性。 ChatGPT裡面,有非常強大的程式設計功能,因為它本身的神經網路機制,就是複雜又精巧的演算法。撰寫普通的程式碼,對它來講,僅是牛刀小試,但是提詞的技巧在此也益形重要。 圖2-3-1. 使用ChatGPT,來設計一個九九乘法表的程式碼。 上面的九九乘法表Python程式碼,是由ChatGPT所提供答覆,我們在提問階段,有給予一些限制,完整的提詞內容如下:”請設計一個Python程式, 可以輸出由左而右水平排列的九九乘法表. 其中, 乘數和被乘數需兩兩交換位置, 乘積的個位數需對齊. 請不要使用function, 只使用最常見之基本語法及最少之行數.”。 我們用prompt做出層層限制,其實是在用文字來代替程式碼的指令。這樣的方式,多嘗試幾次就比較能夠掌握了。複製上面的程式,再拿到Spyder軟體上執行後,得到下列的結果,看的出來,它的確有按照我們的要求在建立其邏輯。 圖2-3-2. 執行程式得到的九九乘法表,其輸出的的格式,有刻意用prompt去要求。

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

Shopping Cart