視覺 Transformer

影像詞元化(image tokenization)

影像詞元化是把一張圖片轉成一串 Transformer 能吃下的詞元的總體動作。Transformer 是一台序列機器:它需要一列向量。詞元化就是你選定的「從像素產生這列向量」的策略——單位多大、如何排序,以及最關鍵的:每個詞元是一個連續向量,還是一個從固定詞彙表裡取出的符號,就像文字裡的一個字詞。

大致有兩大家族。連續詞元化把每個詞元保持為實數值向量;樸素 ViT 的圖塊嵌入就是典型例子——每個 16x16 圖塊變成一個學到的 D 維向量,完全不做量化。離散詞元化則把每個區域映射到一個有限碼本(codebook)裡的某一項,產生整數詞元 ID,就跟文字詞彙表一樣。離散碼來自一個學到的量化器,例如 VQ-VAE 或 VQGAN,或 DALL-E 用的 dVAE;BEiT 系列預訓練 ViT 的方式,就是遮住圖塊並預測它們的離散碼,與遮罩語言模型如出一轍。

為什麼「離散還是連續」這個選擇如此關鍵?離散詞元讓你能把整套語言模型的機制原封不動地搬到影像上:你可以把影像當成一串符號來建模、在詞彙表上做 softmax、做下一個詞元或遮罩詞元的預測,並把文字與影像生成統一在同一個自迴歸模型裡。代價是一個量化瓶頸——把每個區域四捨五入到最近的碼本項會丟失細節、可能讓重建變模糊,因此碼本大小與使用率(codebook usage)成了核心設計問題。連續詞元保留資訊、對純辨識任務也更簡單,但無法直接套進「離散符號」的生成配方。

要注意,「詞元化」比「切圖塊」更廣。切圖塊只是其中一種詞元化器(一個由等大方塊構成的規則網格),但詞元也可以由一個卷積莖(輸出當成詞元的特徵圖)產生、由 DETR 的物件查詢(object query)產生、由超像素產生,或由「學習式合併」把相似區域融合成較少的詞元以提升效率而產生。詞元化器的選擇,決定了下游一切的粒度、內建偏好與成本。

離散影像詞元並不是可解讀的字詞——碼本索引 482 並不像「貓」那樣帶有固定含義。把它們當成帶有穩定語意的東西是常見的錯誤;它們的意義是與「把它們還原成像素的解碼器」糾纏在一起的。

又稱
visual tokenization影像詞元化image-to-tokens