GPT雜談之一:技術面的問號

GPT-4o token怪怪?更大的問號在於模型可能訓練不足。

小結:GPT-4o token怪怪?更大的問號在於模型可能訓練不足。

這是一篇間接技術者無架構的隨筆。

背景

LLM的token是什麼?

機器無法直接處理文字,因此需要經過處理,Tokenization便是語言模型處理文字時通常會經歷的一步——tokenization這個詞在不同領域均有出現,而在語言模型就是將文字拆一個個token,後續賦予一個向量。

LLM tokenization的演算法是什麼?

目前常見的BPE原本是用來壓縮的演算法,在NLP領域運用的大致邏輯是把詞分成字符後,依序用另一字符替換出現頻率最高的一對字符,然後一直循環到結束。(詳情可以看相關的介紹影片,會更精準且清晰)

所以應該加入更多詞彙嗎?

先撇開「那中文怎麼拆」的問題,我們是否還需要擴充詞表?畢竟看起來擴充詞表後能夠讓模型「認識」更多常見字。

但一味擴充詞表並不一定帶來益處。

擴充詞表看似「只是」加新的詞彙,但在訓練過程中新加進來的若未被訓練到,則可能導致模型失敗;使用資料訓練這些新加入的,也有可能會破壞模型,使其效益未必優於原先的模型(去脈絡的簡單結論)。

除此之外,過長的token也可能影響tokenization的層級。有時加入過長的token,反而可能讓模型忽略一些token間的語意相近性——假設我將「臺北醫學大學」、「高雄醫學大學」各自算作一個token,那麼模型不一定會發現這兩個token之間具有相近結構及語意,此時就需要再經過訓練使其學習、理解。

由此,儘管看上去理論上擴充詞表很讚,但有時不擴充詞表,多訓練模型,反而可能表現更好,關鍵其實不只是簡單的詞彙數量多寡或長短,而是token是否切得巧妙,得以讓模型學習語法及句構的相關知識。

有點相關的小延伸

正體中文的優質本土語料庫自是重要,然而適合正體中文的tokenization演算法是什麼?或者說臺灣繁體中文是否存在BPE等常見方式不足以捕捉、駕馭的特殊性?這或許也值得討論或發展。

為什麼說GPT-4o可能沒訓練好這些新加內容

說完背景,拉回時事。

近日GPT-4o的demo在社群上引起討論。

無論是Meta的Llama 3或OpenAI最新發表的GPT-4o中,都有更新所使用的tokenizer。若使用Python調用OpenAI開源的tiktoken就能看見GPT-4o更新的中文詞彙多麼「神奇」。

除了加入的詞彙的很「蛤」(詞彙扁平化,一時想不到更好的形容詞),測試相關詞彙後,能夠推測除了資料沒有清乾淨,也有模型訓練不足的情形。

所以呢?

寫這篇隨筆倒不是想酸OpenAI或是只是表達看衰,看到GPT-4o Demo的使用情境,也期待有更多元的應用讓不同社群得以更便利或轉型,釋放生產力。

從技術者或研究者的視角,仍認為LLM有很多值得討論的地方,這樣的問題也值得檢視並作為自我提醒。

以使用者的視角來看,如果我想使用或推薦組織使用ChatGPT作為工具,至少,在中英翻譯方面,會建議他們還是先使用GPT-4。

下一篇(如果有)來聊GenAI在組織內可以怎麼應用。

分享文章