Just GripToken and Pattern

Token and Pattern | 模 與 樣

應該是從大型語言模型(LLM)出來之後,我才開始一直在思考Token這件事。

我最一開始誤解了,我以為Token是意義的最小單位。

而當我慢慢再多了解一點之後,才發現Token只不過是一個代號,將內容切分成可以分別辨識的顆粒度。

隨手打開Apple的字典,裡面寫著

token | noun

  • symbolA small thing that you use to show something else

而其切分的方式,並不像是ASCII定義著每個字符的代號,讓每一台認得ASCII的電腦可以查表辨識,而是根據每個LLM各有的方式切分。

例如OpenAI有提供Tokenizer讓你嘗試,或者你可以找到類似這種工具比較不同模型切Token的方式

例如:

Hello World! → [Hello][ World][!]

你好嗎 → [你好][嗎]

而如果你想再深入一些,非常推薦Andrej Karpathy的介紹影片。

最開始我誤解的是,以為每個Token是根據意義去切分的,例如說 [你好] 在這個情境裡,不是被切成 [你] [好],會讓我覺得有趣。但其實,讓我訝異的是,工程師們只想找到一個有效率可以代表內容的方法。

這讓我開始用一個新的角度去想,原來:

Token本身沒有意義

或者說:

Token的意義來自於處在的Context之間的關係

這一個思考角度的轉變有點像是海德格(Heidegger)在思考「存在」的角度轉變。

相對於站在一個完全客觀的角度去思考某個獨立存在的個體(Entity),海德格在思考的是關於那個「存在」(Being)的意義。這個存在是在形容那個關係本身,也像是在敘說那個Token存在某個Context的時候湧現的意義,就是那個存在。

寫到這邊,我發現這段有點難以解釋,希望之後有篇幅在慢慢深入,在我一邊學習的過程中。

來舉個例子吧

請試著念出以下兩行字👇

Coren S, Porac C, Ward LM 1979 Sensation and Perception. Harcourt Brace and Company (p368) Coren S, Porac C, Ward LM 1979 Sensation and Perception. Harcourt Brace and Company (p368)

我相信可以很輕易地唸出 A,B,C,D,E,F 以及 10,11,12,13,14。

而當我們在仔細看一下,在圖片中的B以及13是完全一樣的圖片。

在這個範例之中,B/13就是Token,而它本身的意思是由Context決定的。

在無意識的便是過程當中。我們的腦迅速的將

上行的形狀辨識成B

下行的形狀辨識成13

完全不需要耗費額外的思考力氣,彷彿那個Token有著自己的意義一樣。

但是,意義真的被固定了嗎,還是應該說,只是我們的腦自動的選擇了最高機率的意義呢?(簡直就像是大型語言模型一樣)

如果一個Token有固定意義,那在下面的圖片中,到底他是什麼呢?

abc-121314

當我嘗試看著這個圖片的時候,中間的形狀的意義不斷地在 B/13 之間切換著,

就像是腦子一定要指定一個最高機率的意義一樣。

到這裡可以看到這一個Token可以有多個意義,而這個意義存在於與上下/前後文(Context)的關係之中,而這個關係就讓我想到了海德格的「ready-to-hand」的概念,或者如果你是設計背景,可能更了解吉布森(James J. Gibson)的Affordance的概念。

Token → Entity - 那個客觀存在的

Meaning → Being - 那個從處在的Context裡湧現的

而我們在閱讀的時候,為什麼會自動有辦法感受到意義,是因為我們隨時都在這個世界裡,像是海德格的「Being-in-the-world」,我們隨時都帶著自己的背景知識,自己的視角去看待這個世界,而這些就是你在觀看的時候的Context。

再次回到這個Just Grip的系列文章的主題,我想要找到一個可以具體溝通抽象概念的方式,而討論Token是其中一個不可排除的第一步。

文章過了一半,我們還沒有討論到標題上的第二個字,Pattern。

我一直在想中文用什麼字去形容Token和Pattern最恰當,也許可以使用:

Token → 模

Pattern → 樣

Token就像是每個單元基礎的零組件,像是樂高一樣,而拼湊出來的車子就是Pattern。

從「模」建構有了「樣」

但Pattern不只是視覺上的,不同的聲音節奏就是由音符Token組成的Pattern,

在頻率變化之間;在不斷重複之間。

而LLM的Multi-modal就需要能夠將各種不同的Input拆解成能夠一起被理解的Token,讓它們能自由在彼此的Context之間找到意義。對於LLM來說,他的Context就是在於那個高維空間裡。

重新回到B/13,其實對我們的視覺來說,他已經是個Pattern,在圖像上,他就是個左邊有一條細長垂直長方形,而右邊有兩個向左開口的半圓弧線。我們學習過可能是B或者是1和3。

對於語言模型來說,Token很好定義,但對於我們人來說,卻是更細微並且沒有直接定義的。

最有趣的是當我們看著天空中的雲朵,各種想像會自然地浮現。

嘉義的一片田地...

圖片的Token應該怎麼去理解,對於我來說好難想像。

但在與OpenAI與Google的圖像生成的模型互動的過程中,

我感覺到現在的大型模型已經可以很好的支援不同Input的轉換。

就像是人類一樣,我們認識這個世界的方式,就是混合了各種不同的Input一起理解的。

咖啡的顏色以及味道,家人朋友的樣子和聲音,金屬的冰冷觸感以及聲響。

在學習大型語言模型相關知識的過程中,

我也更理解自己作為人認識這個世界的方式。

關於模(Token)與樣(Pattern)的主題,還有很多可以深入的部分,

但我想在這篇文章中大概觸及了一部分。

最後,我想分享最近用Claude Code製作的一個互動故事網頁:

關於Crystal Mind(大型語言模型)的故事

You can also find the English ver. if you prefer.

crystal mind

持續學習💪