Blog6

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

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

自然語言處理之2~大型語言模型

2-2:大型語言模型 現今熱門的大型語言模型,比如像ChatGPT、Gemini等,採用的都是Transformer架構。這種架構,可以將巨量訓練資料快速平行處理,但必須使用到多部AI伺服器在雲端運算,並不是一般中小型企業能負擔的起的。 所以經過一番優勝劣敗激烈交鋒,目前能提供商品化服務的,僅寥寥幾家。即使研發能力傑出如臉書(Meta),最終還是退出了第一線的競爭。 但臉書開發出來的大型語言模型第二版LLama 2,被該公司免費公開,讓其它研究資源有限的單位,可以下載其源碼,經過微調的程序,就可以套用在各自的系統當中。 圖2-2-1. Meta公司的LLAMA 2被釋出為開源碼,造福不少財力有限的研究單位。 一般中小型公司,轉而聚焦在邊緣運算當中,希望開發出來的模型,在桌上型電腦,或者平板甚至手機就可以使用,如此不但可改善網路遲延(Latency),未來創造的商機更是不可限量。 對個人工作者而言,ChatGPT也已從當初的玩具階段,晉身到工具水平了。現在它的文字輸出品質,早非昔日吳下阿蒙,做簡報做表格它樣樣勝任愉快;在畫圖方面,除了人物的一致性尚待加強,採用寫實風格作畫,真是栩栩如生、躍然紙上。 圖2-2-2. 向Copilot要求”請用寫實風格,畫出一張黃色柴犬的微笑圖片。”它就幫你畫出這樣的圖片。

自然語言處理之2~大型語言模型 Read More »

自然語言處理之1~編碼器與解碼器

2-1:編碼器與解碼器 在RNN早期階段,它常被使用在翻譯上,在某個時序輸入一個詞,就可以在同一時序得到相對應的輸出,這跟早期翻譯的模式很接近。 尤其是用英文來翻譯法文或西班牙文,這種一進一出的架構,對語系相近的文字很有利。但如果是翻譯中文和英文,問題就比較多了。 中文句子不像英文,可以利用句子當中的空格,把單字分開為各個詞彙。中文句子每個字都是並排靠攏在一起,例如像「我打遍天下無敵手」,其實包括了「我」、「打遍天下」、「無敵手」這三個詞彙。所以中翻英輸出和輸入長度常常是不一樣的。 類似這種情況,在文章摘要和文字創作都會出現。所以,序列對序列(Sequence to Sequence,Seq2Seq),這種架構就自然而然的被推出來了。這種架構包含一個編碼器和一個解碼器,容許輸入和輸出長度不同,如下圖所示。 圖2-1-1. 編碼器與解碼器構造。 上圖上是在訓練階段,解碼器輸出必須和標記值比對,以回饋修正模型權重值;上圖下則是在預測階段,用「文字接龍」的方式,逐一輸出整個句子或段落。 目前的文字生成,除了摘要和創作,還包括製表、繪圖甚至寫程式,但設法提升傳統翻譯精準度,在自然語言模型發展過程中,實在有很基本的貢獻。 一般人學習英文,常常感覺英文單字背了又忘、忘了又背,原因在於盎格魯、薩克遜是日耳曼人分支,且法國諾曼第威廉公爵,也曾在11世紀跨海統治過英倫,把法文詞彙帶進英文當中,英文字彙因而是德語加上法語的總和,所以英文難學是必然的。但在AI鋪天蓋地席捲而來之際,把英語學好,總是會比別人多佔一些優勢。 圖2-1-2. 威廉公爵的領地諾曼地(Normandy),是二戰盟軍反攻的主戰場。

自然語言處理之1~編碼器與解碼器 Read More »

自然語言處理

第二章:自然語言處理 影像分類辨識,可說是深度學習最基本的功夫,它所延伸出來的影像分割及物件偵測等,結合傳統的圖形識別(Pattern Recognition)技術,在電腦視覺領域上大放異采。 用它充當機器人的雙眼時,展現出來的識別功能,讓人刮目相看。如果再引入增強式學習,就是炙手可熱的無人駕駛和無人搬運了。在這個階段,和智慧影像處理相關的科技新知,成了很多鎂光燈的焦點所在。 但值此同時,另一支潛力績優股,卻正在悄然潛行。它日後綻放的光芒,掩蓋了所有其它的人工智慧同儕,它就是「自然語言處理」(NLP,Natural Language Processing)。 自然語言處理,也是採用深度學習神經網路,但屬於RNN(Recurrent Neural Network)架構。RNN我們稱之為循環神經網路,是使用同一組的神經層,在不同時間做一序列的不同輸出,如下圖所示。 圖2-1. RNN循環神經網路構造。 上圖左邊是RNN的基本構造,右邊展開後,可以看到在時間序列上,上一次的輸出,也會是下一次的部份輸入。這種結構具有記憶的功能,所以對文句這種字詞間有前後關聯的資訊,在處理上就比較有利。 這種RNN結構只有短期記憶功能,所以後來逐步將長期記憶也加進去,隨之也考慮文字輸入、輸出長度應該會不同,甚至輸出和輸入字詞間也會有不同程度的關聯………。 最後,乾脆揚棄這種無法平行處理大量數據的時間序列,改採可以建立大型語言模型的變形金剛–Transformer,進而讓自然語言生成的GPT橫空出世。從此,人工智慧真正進入風起雲湧的時代了。 圖2-2. 變形金剛來了!

自然語言處理 Read More »

Shopping Cart