子詞標記化
子詞標記化將文字分割成小於單字但大於字元的單元,例如「標記」加「化」。
概述
It is the standard way modern language models turn text into the discrete IDs they actually process, balancing vocabulary size against meaning.
深入探討
單字太多,無法一一列舉(詞彙量會很大,會漏掉生僻單字),而單字的意義不大,導致序列很長。子詞標記化是一種折衷方案:它將常用單字保持完整,但將罕見或複雜的單字分解為有意義的片段。 「不快樂」可能會變成「un」、「happi」、「ness」。主要演算法包括 Byte-Pair Encoding(GPT 使用)、WordPiece(BERT 使用)和 Unigram/SentencePiece(T5 和許多多語言模型使用)。這種方法可以優雅地處理看不見的單字,在相關單字之間共享片段(「play」、「playing」、「played」),並支援任何語言。每個片段對應到一個整數 ID,這些 ID 是模型嵌入層轉換為向量的內容。
技術洞察
不同的演算法以不同的方式選擇子詞:BPE 自下而上地合併頻繁對,WordPiece 選擇最能增加語料庫可能性的合併,而 Unigram 從大量詞彙開始,並修剪對可能性影響最小的標記。 WordPiece 使用「##」前綴標記單字內部片段,而 SentencePiece 將空格視為特殊符號,因此它可以直接在原始文字上工作,而無需對空格進行預分割,非常適合沒有空格的語言。
戰略影響
速度與規模
語言工作流程可以在不犧牲一致性的情況下更快地移動。
交通與覆蓋範圍
它擴展了跨語言和溝通方式的訪問。
更明確的決策
團隊可以花更多時間進行判斷,而自動化則可以處理重複。
子詞標記化的未來
子詞標記化將保持主導地位,因為它快速且緊湊,但它的弱點,數學、程式碼和罕見腳本中的尷尬分割,加上跨語言的標記成本不均勻,正在推動對字節級和無標記模型的研究。期待更聰明、可能學習或自適應的標記器和更好的多語言公平性,這樣非英語文本就不會因為每個句子有更多的標記而受到懲罰。
現實世界的實施
BERT 使用 WordPiece 標記化,標記「##ing」等延續片段來重建原始單字。
T5 和許多多語言模型使用 SentencePiece,它直接處理日語等無空格語言。
聊天模型將罕見的技術術語分割成已知的片段,而不是在未知的單字上失敗。
分詞器在「run」、「running」和「runner」之間分享子詞,讓模型有效地概括形態。
風險與防護欄
幻覺的事實可以悄悄地進入報告、支持流程或研究成果。
及時的敏感性可能會在類似的請求中產生不一致的結果。
如果存取控制薄弱,敏感文字資料可能會暴露。
實施路線圖
在推出之前定義輸出格式、語氣和品質標準。
當準確性很重要時,請使用可信任來源進行地面回應。
為高風險輸出保留人工審查檢查點。
追蹤故障模式並定期重新訓練提示或工作流程。
不斷探索
Free newsletter
Get the daily AI briefing
Three verified AI stories every weekday morning, written in plain English. Free forever, no ads.
One email each weekday. Unsubscribe in one click. We never sell or share your address.
Test yourself
Take the Subword Tokenization quiz
Instant feedback on every answer, and a shareable certificate with a verifiable ID once you pass a course.
Support free AI education. AI Understanding is a 501(c)(3) nonprofit — no ads, no paywall, ever. Make a donation
常見問題
What is Subword Tokenization?
子詞標記化將文字分割成小於單字但大於字元的單元,例如「標記」加「化」。這是現代語言模型將文本轉換為它們實際處理的離散 ID 的標準方法,平衡詞彙量大小和含義。
與使用整個單字相比,子詞標記化解決了什麼問題?
全詞詞彙量龐大,但仍漏掉生僻詞;子詞使詞彙表易於管理並優雅地分割未知單字。
BERT 使用的子字標記化演算法中哪一個是?
BERT 使用 WordPiece,它選擇最能增加訓練語料庫可能性的合併。
WordPiece 通常如何標記延續單字的片段?
WordPiece 在單字內部子字前面加上「##」前綴,因此「playing」變成「play」加上「##ing」。
為什麼 SentencePiece 非常適合日語等語言?
SentencePiece 對原始文字進行操作,並將空格編碼為特殊符號,因此即使單字之間沒有空格,它也能正常工作。
每個子詞片段在到達模型之前最終會映射到什麼?
每個子字都分配有一個整數 ID,嵌入層將其轉換為模型可以處理的向量。