【人工智能】如何理解transformer中的token?

如何理解transformer中的token?

      • **一、Token在Transformer中的作用**
      • **二、文本分詞的常見方法**
        • **1. 基于詞典的分詞(Dictionary-based Tokenization)**
        • **2. 子詞分詞(Subword Tokenization)**
          • **(1) WordPiece算法**
          • **(2) BPE(Byte-Pair Encoding)**
          • **(3) SentencePiece**
        • **3. 字符級分詞(Character-level Tokenization)**
      • **三、分詞步驟與算法選擇**
        • **具體步驟(以BPE為例)**
        • **算法對比**
      • **四、實際工具與代碼示例**
        • **1. Hugging Face Tokenizer**
        • **2. 自定義BPE分詞**
      • **五、關鍵注意事項**
      • **六、總結**
    • 相關參考

一、Token在Transformer中的作用

Token 是Transformer模型的基本輸入單位,可以理解為模型處理的“原子單元”。它的作用類似于人類語言中的“詞”或“字符”,但具體定義取決于分詞方法。
核心意義

  1. 離散化連續文本:將無限可能的字符串映射到有限數量的Token集合(詞匯表)。
  2. 保留語義信息:通過合理劃分,使Token能攜帶單詞、短語或字符級別的含義。
  3. 統一模型輸入:所有文本需轉換為相同長度的Token序列,便于模型處理。

二、文本分詞的常見方法

1. 基于詞典的分詞(Dictionary-based Tokenization)

? 原理:使用預定義的詞典(如WordNet、停用詞表)匹配最長或最短單詞。
? 步驟

  1. 預處理:去除標點、數字、轉換為小寫。
  2. 查詞典:按最長匹配或最短匹配切分單詞。
  3. 未登錄詞處理:將未在詞典中的詞視為一個Token。
    ? 示例
    文本:"I love NLP!" → Tokens:["I", "love", "NLP", "!"]
    ? 優點:簡單高效,適用于已知領域文本。
    ? 缺點:無法處理未登錄詞(如新造詞“ChatGPT”)。
2. 子詞分詞(Subword Tokenization)

通過統計合并高頻字符序列,生成子詞單元(Subword Units),解決未登錄詞問題。常用方法包括:

(1) WordPiece算法

? 原理

  1. 統計頻率:統計所有可能的子詞片段(如"unhappy"拆分為"un", "ha", "ppy")。
  2. 合并策略:合并出現頻率最高的子詞對,直到無法進一步合并。
    ? 示例
    文本:"unhappy" → 初始子詞:["u", "n", "h", "a", "p", "p", "y"]
    合并后:["un", "happy"](假設"un""happy"高頻出現)。
    ? 應用:BERT、GPT等模型采用WordPiece。
(2) BPE(Byte-Pair Encoding)

? 原理

  1. 初始切分:將文本按字符拆分(如"apple"["a", "p", "p", "l", "e"])。
  2. 統計合并:每次合并出現頻率最高的相鄰字符對。
    ? 示例
    文本:"apple apple" → 初始字符對:"ap", "pp", "pl", "le"等。
    合并后:["a", "p", "p", "le"]["a", "pp", "le"]
    ? 應用:GPT-2、GPT-3等模型采用BPE。
(3) SentencePiece

? 原理

  1. 無詞典訓練:直接從原始文本中學習子詞邊界,無需預定義詞典。
  2. 統一編碼:對多語言文本生成統一詞匯表。
    ? 示例
    文本:"I love NLP! 你好世界!" → Tokens:["I", "love", "NLP", "!", "你", "好", "世界", "!"]
    ? 應用:XLM-R、mBERT等多語言模型。
3. 字符級分詞(Character-level Tokenization)

? 原理:將每個字符視為一個Token(如中文的每個漢字)。
? 示例
文本:"我愛NLP!" → Tokens:["我", "愛", "N", "L", "P", "!"]
? 優點:無需詞典,處理罕見詞能力強。
? 缺點:詞匯表大小過大(如中文字符集達10萬+),模型參數需求高。

三、分詞步驟與算法選擇

具體步驟(以BPE為例)
  1. 預處理
    ? 刪除標點符號、數字、轉換為統一小寫(可選)。
    ? 示例:"Hello, World! 2023""hello world"
  2. 初始切分:按字符拆分文本。
    ? 示例:"hello world"["h", "e", "l", "l", "o", " ", "w", "o", "r", "l", "d"]
  3. 統計字符對頻率
    ? 構建所有可能的相鄰字符對及其出現次數。
    ? 示例:"he", "el", "ll", "lo", "o ", " w", etc.
  4. 合并高頻字符對
    ? 按頻率從高到低排序,依次合并字符對,直到達到預設的詞匯表大小。
    ? 示例:假設"ll"頻率最高,合并為"ll" → 新Token列表:["h", "e", "ll", "o", " ", "w", "o", "r", "l", "d"]
  5. 生成詞匯表
    ? 記錄所有合并后的子詞和單字符Token。
  6. 文本編碼
    ? 將原始文本映射為詞匯表中的索引。
    ? 示例:"hello world"[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
算法對比
方法優點缺點適用場景
WordPiece平衡詞匯表大小與未登錄詞處理依賴預定義詞典或初始分詞策略中英文、已知領域文本
BPE無需詞典,適合大數據集合并過程復雜,內存消耗大大規模語料(如GPT系列)
SentencePiece跨語言支持,無詞典依賴訓練時間較長多語言、混合語種文本
字符級分詞完全處理未登錄詞詞匯表爆炸,模型參數量大小語種、罕見詞頻繁場景

四、實際工具與代碼示例

1. Hugging Face Tokenizer
from transformers import BertTokenizer# 加載預訓練模型的Tokenizer(基于WordPiece)
tokenizer = BertTokenizer.from_pretrained("bert-base-uncased")# 分詞示例
text = "I love NLP! This is an example."
tokens = tokenizer(text, truncation=True, padding="max_length", max_length=10)
print(tokens["input_ids"])  # 輸出Token索引
print(tokens["tokens"])      # 輸出Token字符串

輸出

input_ids: [101, 1976, 2363, 2003, 1994, 15851, 1999, 2002, 30522, 2000]
tokens: ['[CLS]', 'I', 'love', 'NLP', '!', 'This', 'is', 'an', 'example', '[SEP]']
2. 自定義BPE分詞

使用tokenizers庫實現BPE:

from tokenizers import Tokenizer# 初始化BPE Tokenizer
tokenizer = Tokenizer()# 添加訓練數據(假設語料庫為.txt文件)
tokenizer.train(files=["corpus.txt"], model="bpe")# 分詞
text = "hello world!"
tokens = tokenizer.encode(text)
print(tokens)  # 輸出整數索引
print(tokenizer.decode(tokens))  # 輸出恢復的文本

五、關鍵注意事項

  1. 特殊字符處理
    ? 在預處理階段刪除或保留標點符號(如[CLS][SEP]在BERT中的作用)。
  2. 大小寫敏感
    ? 英文通常統一為小寫,中文保留原樣。
  3. 未登錄詞處理
    ? 對未在詞匯表中的詞,BPE會自動拆分為子詞(如"ChatGPT"["Chat", "G", "PT"])。
  4. 跨語言支持
    ? 使用SentencePiece或XLM-R Tokenizer處理多語言文本。

六、總結

? Token是Transformer模型的“原子單位”,其劃分方式直接影響模型性能。
? 分詞算法選擇
? 中英文 → WordPiece/BPE。
? 多語言 → SentencePiece。
? 小語種 → 字符級分詞。
? 工具推薦
? Hugging Face Tokenizer(預訓練模型適配)。
? tokenizers庫(自定義BPE/SentencePiece)。

通過合理選擇分詞方法,可以顯著提升模型對文本的理解能力,尤其是在處理未登錄詞和跨語言場景時。

相關參考

【大語言模型知識】Transformer架構概述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/72961.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/72961.shtml
英文地址,請注明出處:http://en.pswp.cn/web/72961.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

AI風向標《AI與視頻制作全攻略:從入門到精通實戰課程》

課程信息 AI風向標《AI與視頻制作全攻略:從入門到精通實戰課程》,夸克網盤和百度網盤課程。 課程介紹 《AI與視頻制作全攻略:從入門到精通實戰課程》是一套全面融合AI技術與視頻制作的實戰課程,旨在幫助創作者從基礎軟件使用到高級視頻剪輯…

mayfly-go開源的一站式 Web 管理平臺

mayfly-go 是一款開源的一站式 Web 管理平臺,旨在通過統一的界面簡化 Linux 服務器、數據庫(如 MySQL、PostgreSQL、Redis、MongoDB 等)的運維管理。以下從多個維度對其核心特性、技術架構、應用場景及生態進行詳細解析: 一、核心…

車輛模型——運動學模型

文章目錄 約束及系統移動機器人運動學模型(Kinematic Model)自行車模型含有加速度 a a a 的自行車模型系統偏差模型 在機器人的研究領域中,移動機器人的系統建模與分析是極為關鍵的基礎環節,本文以非完整約束的輪式移動機器人為研…

go命令使用

查看配置信息 go env配置go國內源 export GO111MODULEon export GOPROXYhttps://goproxy.cn測試 go install github.com/jesseduffield/lazydockerlatesthttps://github.com/jesseduffield/lazydocker

Chrome-Edge-IDEA-Win 常用插件-工具包

Chrome-Edge-IDEA-Win 常用插件-工具包 Chrome-Edge-IDEA-Win 常用插件-工具包谷歌插件chropathJSONViewOctotree - GitHub code treeXPath Helper書簽側邊欄篡改猴Print Edit WEEdge瀏覽器插件IDEA插件CodeGlance Pro 代碼迷你縮放圖插件Alibaba Cloud ToolkitAlibaba Java Co…

西門子V90伺服系統介紹

深入淺出地了解V90伺服驅動系統的核心特性和優勢,掌握其自動優化功能,使設備獲得更高的動態性能;同時,了解其自動抑制機械諧振頻率的特性,有助于在實際應用中減少機械振動和噪音。 方便快捷地熟悉V90的使用方式。通過伺…

【FastGPT】利用知識庫創建AI智能助手

【FastGPT】利用知識庫創建AI智能助手 摘要創建知識庫上傳文檔創建應用準備提示詞準備開場白關聯知識庫AI回答效果 摘要 關于FastGPT的部署,官方提供了docker-compose方式的部署文檔,如果使用的是podman和podman-compose的同學,可以參考這篇…

最新!Ubuntu Docker 安裝教程

源自: AINLPer(每日干貨分享!!) 編輯: ShuYini 校稿: ShuYini 時間: 2025-3-1 更多:>>>>大模型/AIGC、學術前沿的知識分享! 看到很多部署大模型的時候,都是基于docker安裝部署的。…

html5炫酷3D立體文字效果實現詳解

炫酷3D立體文字效果實現詳解 這里寫目錄標題 炫酷3D立體文字效果實現詳解項目概述技術實現要點1. 基礎布局設置2. 動態背景效果3. 文字漸變效果4. 立體陰影效果5. 懸浮動畫效果 技術難點及解決方案1. 文字漸變動畫2. 立體陰影效果3. 性能優化 瀏覽器兼容性總結 項目概述 在這個…

電腦如何設置幾分鐘后自動關機

摘要:本文提供Windows、macOS和Linux系統設置定時自動關機的詳細方法。 目錄 一、Windows系統設置方法 設置定時關機 取消關機計劃 二、macOS系統設置方法 設置定時關機取消關機計劃 三、Linux系統設置方法 設置定時關機 取消關機計劃 四、注意事項五、擴展&#x…

Android音視頻多媒體開源庫基礎大全

從事音視頻開發工作,需要了解哪些常見的開源庫,從應用到底軟系統,整理了九大類,這里一次幫你總結完。 包含了應用層的MediaRecorder、surfaceView,以及常見音視頻處理庫FFmpeg和OpenCV,還有視頻渲染和音頻…

若依前端框架增刪改查

1.下拉列表根據數據庫加載 這個是用來查詢框 綁定了 change 事件來處理站點選擇變化后的查詢邏輯。 <el-form-item label"站點選擇" prop"stationId" v-has-permi"[ch:m:y]"><el-select v-model"queryParams.stationId" pl…

Java 第十一章 GUI編程(3)

目錄 內部類 內部類定義 內部類的特點 匿名內部類 格式&#xff1a; 內部類的意義 實例 內部類 ● 把類定義在另一個類的內部&#xff0c;該類就被稱為內部類。 ● 如果在類 Outer 的內部再定義一個類 Inner&#xff0c;此時類 Inner 就稱為內部類 &#xff08;或稱為嵌…

Transformer-GRU、Transformer、CNN-GRU、GRU、CNN五模型多變量回歸預測

Transformer-GRU、Transformer、CNN-GRU、GRU、CNN五模型多變量回歸預測 目錄 Transformer-GRU、Transformer、CNN-GRU、GRU、CNN五模型多變量回歸預測預測效果基本介紹程序設計參考資料 預測效果 基本介紹 Transformer-GRU、Transformer、CNN-GRU、GRU、CNN五模型多變量回歸預…

3DMAX曲線生成器插件CurveGenerator使用方法

1. 腳本功能簡介 3DMAX曲線生成器插件CurveGenerator是一個用于 3ds Max 的樣條線生成工具&#xff0c;用戶可以通過簡單的UI界面輸入參數&#xff0c;快速生成多條樣條線。每條樣條線的高度值隨機生成&#xff0c;且可以自定義以下參數&#xff1a; 頂點數量&#xff1a;每條…

LiteratureReading:[2023] GPT-4: Technical Report

文章目錄 一、文獻簡明&#xff08;zero&#xff09;二、快速預覽&#xff08;first&#xff09;1、標題分析2、作者介紹3、引用數4、摘要分析&#xff08;1&#xff09;翻譯&#xff08;2&#xff09;分析 5、總結分析&#xff08;1&#xff09;翻譯&#xff08;2&#xff09;…

vm_pwn入門 -- [GHCTF 2025]my_vm

先看基本邏輯 int __fastcall main(int argc, const char **argv, const char **envp) {unsigned __int16 IP; // [rspCh] [rbp-14h] BYREFunsigned __int16 SP; // [rspEh] [rbp-12h] BYREFunsigned __int16 cmd_count; // [rsp10h] [rbp-10h] BYREFunsigned __int16 i; // [r…

CA 機構如何防止中間人攻擊

在現代互聯網中&#xff0c;中間人攻擊&#xff08;Man-in-the-Middle Attack&#xff0c;簡稱 MITM&#xff09;是一種常見的網絡攻擊方式&#xff0c;攻擊者通過攔截和篡改通信雙方的信息&#xff0c;進而竊取敏感數據或執行惡意操作。為了防止中間人攻擊&#xff0c;證書頒發…

Elasticsearch快速上手與深度進階:一站式實戰教程

目錄 1. Elasticsearch 簡介 2. 安裝與啟動 方式 1&#xff1a;Docker 快速安裝&#xff08;推薦&#xff09; 方式 2&#xff1a;手動安裝 3. 基礎操作 3.1 創建索引 3.2 插入文檔 3.3 查詢文檔 3.4 更新文檔 3.5 刪除文檔 4. 高級查詢 4.1 布爾查詢 4.2 范圍查詢…

聞所聞盡:穿透聲音的寂靜,照見生命的本真

在《楞嚴經》的梵音繚繞中&#xff0c;"聞所聞盡"四個字如晨鐘暮鼓&#xff0c;叩擊著每個修行者的心門。這個源自觀世音菩薩耳根圓通法門的核心概念&#xff0c;既是佛門修行的次第指引&#xff0c;更蘊含著東方哲學對生命本質的終極叩問。當我們穿越時空的帷幕&…