【LLM Tokenizer】WordPiece 分词:BERT 背后的子词算法

大模型分词技术深度解析:BPE、WordPiece与Unigram算法对比与实践 在自然语言处理领域,分词是将原始文本转换为模型可处理离散单元的关键预处理步骤,其本质是解决文本的数字化表示问题。其核心原理在于通过字符、词或子词等不同粒度对文本进行切分,以平衡计算效率与语义完整性。这项技术的核心价值在于直接影响模型的序列长度、泛化能力及多语言支持,是优化模型训练效率和下游任务性能的基础。在实际应用场景中,开发者需根据具体任务需求,在BPE、WordPiece和Unigram等主流子词分词算法间进行权衡。例如,BPE算法因其简单高效的特点,在GPT系列模型中广泛应用;而WordPiece算法 阅读详情

​ 如果你读过 BERT 的论文,一定见过这样的分词结果:["token", "##ization"]。那个 ## 前缀是 WordPiece 的标志性记号。它和 BPE 系出同源,但在一个关键决策上做出了不同的选择。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

​ 在BPE 理论篇中,我们讲了 BPE 的核心逻辑:反复合并频率最高的相邻符号对。在BPE实践篇中,我们用 Python 从零实现了它。这篇文章聚焦 WordPiece—BERT、DistilBERT、ELECTRA 等模型背后的分词算法。你会发现,它和 BPE 的差异不大,但那一点差异背后的思想值得深究。

一、从 BPE 到 WordPiece:差异在哪

1.1 同样是合并,凭什么选?

​ BPE 和 WordPiece 的整体框架几乎一样:都是从小词表出发,逐步合并子词,直到词表达到目标大小。

  • 核心区别在于一个决策点:每轮合并选哪个 pair?

    • BPE:选出现频率最高的 pair
    • WordPiece:选使语言模型似然提升最大的 pair
  • 这是什么意思?

    BPE 只看"谁出现得多就合并谁",而 WordPiece 更精明,它会问把这两个子词合并后,整个训练语料被"解释"得更好了吗?

  • 用一个具体场景来感受这个区别。假设语料中有两个候选 pair:

    pair共现次数各自频率
    (e, r)100 次e 出现 5000 次,r 出现 3000 次
    (q, u)50 次q 出现 52 次,u 出现 2000 次

    在这里插入图片描述

    ​ BPE 的选择很简单:er 共现 100 次 > qu 共现 50 次,选 er。

    ​ 但 WordPiece 会多想一步:e 和 r 都是极高频字符,它们在语料中到处出现,即使完全随机排列也会频繁相邻。100 次共现只是"基础噪音",谈不上强关联。而 q 虽然只出现了 52 次,但其中 50 次后面都跟着 u,命中率高达 96%。这两个字符之间有极强的依赖关系。WordPiece 会优先合并 qu。

  • 简单总结:BPE 偏爱高频组合,WordPiece 偏爱强关联组合。

1.2 似然公式

​ WordPiece 评估每个候选 pair ( x , y ) (x, y) (x,y) 的合并收益时,用的是以下公式:
score ( x , y ) = P ( x y ) P ( x ) ⋅ P ( y ) \text{score}(x, y) = \frac{P(xy)}{P(x) \cdot P(y)} score(x,y)=P(x)⋅P(y)P(xy)​
​ 其中, P ( x y ) P(xy) P(xy) 是子词 x y xy xy(合并后)在语料中的出现概率, P ( x ) P(x) P(x) 和 P ( y ) P(y) P(y) 分别是子词 x x x 和 y y y 单独出现的概率。

  • 这个公式的本质就是点互信息(Pointwise Mutual Information, PMI):衡量两个符号共现的程度是否超过了"各自独立出现"的预期。

  • 对比 BPE 的选择标准:
    BPE: score ( x , y ) = count ( x , y ) \text{BPE: } \text{score}(x, y) = \text{count}(x, y) BPE: score(x,y)=count(x,y)
    ​ BPE 只看绝对频率,而 WordPiece 看的是相对关联强度。用一个类比来说:BPE 选"出场次数最多的搭档",WordPiece 选"默契度最高的搭档"。出场多未必默契,出场少未必不默契。

1.3 用公式验证直觉

​ 回到 1.1 的例子,用 PMI 公式算一下。假设语料总 pair 数为 100 , 000 100,000 100,000:

pair共现次数 P ( x y ) P(xy) P(xy) P ( x ) P(x) P(x) P ( y ) P(y) P(y)
(e, r)1000.0010.05 (e 5000次)0.03 (r 3000次)
(q, u)500.00050.00052 (q 52次)0.02 (u 2000次)

score ( e , r ) = 0.001 0.05 × 0.03 = 0.001 0.0015 ≈ 0.67 \text{score}(e, r) = \frac{0.001}{0.05 \times 0.03} = \frac{0.001}{0.0015} \approx 0.67 score(e,r)=0.05×0.030.001​=0.00150.001​≈0.67

score ( q , u ) = 0.0005 0.00052 × 0.02 = 0.0005 0.0000104 ≈ 48.1 \text{score}(q, u) = \frac{0.0005}{0.00052 \times 0.02} = \frac{0.0005}{0.0000104} \approx 48.1 score(q,u)=0.00052×0.020.0005​=0.00001040.0005​≈48.1

​ 根据PMI 分数可以发现,(q, u) 约 48,(e, r) 不到 1,差了将近两个数量级。公式精确地量化了 1.1 中的直觉:q 和 u 之间的关联强度远远超过 e 和 r。

  • 两种算法的选择

    BPE:      score(e,r) = 100  >  score(q,u) = 50   → 选 (e, r)
    WordPiece: score(e,r) = 0.67 <  score(q,u) = 48.1 → 选 (q, u)
    

    ​ 可以看到,对于同样的数据,两种算法选出了不同的合并对象。er 虽然出现得多,但 e 和 r 本身都是高频字符,它们共现 100 次并不意外。而 st 虽然出现得少,但相对于 s 和 t 各自的频率来说,它们共现的比例更高。说明 s 和 t 之间的关联更强。

二、训练过程详解

2.1 整体流程

​ WordPiece 的训练流程和 BPE 结构相同,只是评分函数不同:

  1. 初始化:将训练语料中的每个词拆成字符序列。词首字符保持原样,非词首字符加 ## 前缀
  2. 迭代合并:每轮计算所有相邻 pair 的 PMI 分数,合并分数最高的 pair
  3. 终止:词表达到目标大小时停止

2.2 ## 前缀的作用

​ ## 是 WordPiece 最显眼的标志。它的作用是区分词首和非词首子词。

  • 以单词 tokenization 为例,初始化时拆为:

    t  ##o  ##k  ##e  ##n  ##i  ##z  ##a  ##t  ##i  ##o  ##n
    

    ​ 只有第一个字符 t 没有前缀,其余都带 ##。这意味着 token 和 ##token 是两个不同的子词:前者出现在词首,后者出现在词中。

  • 为什么要这样设计?

    ​ 因为同一个字符串在词首和词中的语义角色不同。比如 re 在 return 的开头是"再次"的前缀,在 care 的结尾只是词根的一部分。同样两个字母,语义角色截然不同。WordPiece 通过 ## 把两者区分开:词首的 re 和词中的 ##re 是两个不同的 token,模型可以分别学习它们的语义。BPE 则不做这种区分,所有位置的 re 共享同一个 token。

  • 这个设计还带来一个实用好处:解码时能无损还原原始文本。看到 ## 就知道要和前一个 token 拼接(不加空格),没有 ## 就知道是一个新词的开头(前面加空格)。

    ["token", "##ization"]  →  "tokenization"
    ["un", "##happy"]        →  "unhappy"
    ["the", "quick", "fox"]  →  "the quick fox"
    

2.3 训练示例

​ 我们使用和 BPE 理论篇相同的语料走一遍 WordPiece 的训练过程:

corpus次数
“low”5
“lowest”2
“newer”6
“Wider”3

在这里插入图片描述

(1) 第一步:初始化

​ 将每个词拆成字符序列,非词首加 ##:

CorpusSplit
lowl, ##o, ##w
lowestl, ##o, ##w, ##e, ##s, ##t
newern, ##e, ##w, ##e, ##r
widerw, ##i, ##d, ##e, ##r

​ 得到初始词表:{l, n, w, ##o, ##w, ##e, ##s, ##t, ##r, ##i, ##d}(共11 个子词)

(2) 第二步:统计所有相邻 pair 的 PMI 分数
  • 先统计每个子词的出现次数(把每个词的字符序列乘以词频后累加):
子词出现次数来源
##e17lowest×2 + newer×6×2 + wider×3
##w13low×5 + lowest×2 + newer×6
##r9newer×6 + wider×3
l7low×5 + lowest×2
##o7low×5 + lowest×2
n6newer×6
w3wider×3
##i3wider×3
##d3wider×3
##s2lowest×2
##t2lowest×2

​ 子词总出现次数: 17 + 13 + 9 + 7 + 7 + 6 + 3 + 3 + 3 + 2 + 2 = 72 17+13+9+7+7+6+3+3+3+2+2 = 72 17+13+9+7+7+6+3+3+3+2+2=72

  • 再统计所有相邻 pair 的共现次数,然后用 PMI 公式 P ( x y ) P ( x ) ⋅ P ( y ) \frac{P(xy)}{P(x) \cdot P(y)} P(x)⋅P(y)P(xy)​ 计算分数

    pair共现次数 P ( x y ) P(xy) P(xy) P ( x ) ⋅ P ( y ) P(x) \cdot P(y) P(x)⋅P(y)PMI 分数
    (##s, ##t)22/72(2/72)×(2/72)36.00
    (w, ##i)33/72(3/72)×(3/72)24.00
    (##i, ##d)33/72(3/72)×(3/72)24.00
    (l, ##o)77/72(7/72)×(7/72)10.29
    (##o, ##w)77/72(7/72)×(13/72)5.54
    (##e, ##r)99/72(17/72)×(9/72)4.24
    (##w, ##e)88/72(13/72)×(17/72)2.61

    重点看两组对比:

    • (##e, ##r) 共现 9 次(频率最高),但 PMI 只有 4.24。 因为 ##e 出现了 17 次、##r 出现了 9 次,两者都是高频子词,即使随机排列也会频繁相邻——9 次共现并不意外。
    • (##s, ##t) 共现仅 2 次,PMI 却高达 36.00。 因为 ##s 和 ##t 各自只出现 2 次,而这 2 次全都相邻(都来自 lowest),命中率 100%——关联性极强。
  • 如果用 BPE(纯频率),第一轮会选 (##e, ##r)(共现 9 次最高)。但 WordPiece 选 PMI 最高的 (##s, ##t)——一个共现仅 2 次的 pair。

实践篇中的训练器代码会完整跑出每一轮的合并结果,这里聚焦第一轮的 PMI 计算过程,展示 PMI 评分如何改变合并优先级。

(3) 第三步:合并PMI最高的pair

​ (##s, ##t) 得分 36.00,合并为 ##st:

​ 词表从 11 个增长到 12 个。然后重新统计所有 pair 的 PMI,进入下一轮。后续几轮的合并顺序(实践篇中有完整运行结果)大致为:(w, ##i) → (##i, ##d) → (l, ##o) → …

  • 注意:和 BPE 对比,如果用纯频率选择,前几轮会合并 (##e, ##r)、(##w, ##e) 这些高频 pair。而 WordPiece 优先合并的是 (##s, ##t)、(w, ##i) 这些低频但强关联的 pair——合并顺序完全不同。

  • 之后,继续迭代。每轮选 PMI 最高的 pair 合并,直到词表达到目标大小。

  • 另外,需要注意,具体的合并顺序取决于语料的统计分布。在不同的语料上,BPE 和 WordPiece 可能产生相同的合并顺序,也可能截然不同——差异在大规模语料上更明显。

三、编码:贪心最长匹配

3.1 和 BPE 编码的本质区别

​ 训练策略的差异之外,WordPiece 和 BPE 在编码新文本时的策略也完全不同。

  • BPE 编码:按训练时的合并规则顺序逐条"重放"。先把文本拆成字节,然后依次应用规则 1、规则 2、规则 3…直到没有可应用的规则为止。编码时需要的是一张有序的合并规则表。

  • WordPiece 编码:完全不需要合并历史,而是用贪心最长匹配(Greedy Longest-Match-First) 从左到右扫描。编码时需要的只是一个词表集合(无需顺序)。

​ 这是一个设计上的简化:BPE 的编码依赖合并规则的顺序(规则 1 必须先于规则 2 执行),而 WordPiece 的编码只需要知道"哪些子词在词表里",不关心它们是怎么被合并出来的。

(1) 为什么 WordPiece 不需要顺序

​ 因为两者的编码算法根本不同。

  • BPE 编码是重放训练过程:从最细粒度(字节)出发,按训练时的合并顺序逐条尝试。如果先应用规则 3 再应用规则 1,结果可能完全不同——顺序就是一切。打个比方,BPE 像是按照菜谱一步步做菜,步骤顺序不能乱。

  • WordPiece 编码是查字典:拿到一个词,从左到右,每次在词表里找最长的匹配项。它不关心 token 这个子词是第几轮合并产生的,只关心"词表里有没有 token 这个条目"。就像你查字典不需要知道这个词是什么时候被收录的,只需要知道它在不在字典里。

  • 所以 BPE 训练后保存的是一张有序的合并规则表(顺序不能丢),WordPiece 训练后只需要保存词表集合(顺序无所谓)。

3.2 编码算法

  • WordPiece 对单个词的编码步骤:

    1. 从词的第一个字符开始,尝试匹配词表中最长的子词
    2. 如果当前子串不在词表中,缩短一个字符,再试
    3. 匹配成功后,移动到下一个位置,对剩余部分加 ## 前缀后重复
    4. 如果缩到单个字符仍不在词表中,返回 [UNK]
  • 以 tokenization 为例,假设词表中有 token、##ization、##ize、##ing 等子词:

    在这里插入图片描述

3.3 和 BPE 编码的对比

​ 用同一个词 tokenization,对比两种编码方式:

BPE 编码WordPiece 编码
策略按合并规则顺序逐条重放贪心最长匹配,从长到短尝试
需要的信息合并规则表(有序)词表集合(无需顺序)
过程先拆成字节,逐步合并先尝试最长,逐步缩短
子词标记无特殊前缀非词首子词加 ##
结果["token", "ization"]["token", "##ization"]
OOV 处理退化为字节,永远不会 UNK可能返回 [UNK]

​ 最后一行值得注意。假设你要编码 "café",而词表中没有 é 也没有 ##é:

  • BPE:é 的 UTF-8 编码是两个字节 [195, 169],BPE 从字节出发,最坏退化为这两个单字节 token,虽然丑但不会丢信息
  • WordPiece:贪心匹配走到 é 时,从长到短尝试都找不到包含它的子词,直接放弃整个词,返回 [UNK]。这样caf 的信息也一起丢了

​ BPE 永远不会 OOV(因为任何字节值都在初始词表中),而 WordPiece 遇到词表外的字符就只能投降。实践中这种情况极少(BERT 的词表覆盖了绝大多数 Unicode 字符),但在处理生僻符号、特殊 emoji 或小语种文字时,这个差异就会显现。

四、WordPiece 在 BERT 中的角色

4.1 BERT 的词表

​ BERT 使用了一个 30 , 522 30,522 30,522大小的 WordPiece 词表(bert-base-uncased)。这个词表是在 BooksCorpus(约 8 亿词的未出版书籍)和英文 Wikipedia(约 25 亿词,去除了列表、表格和标题)上训练的,合计约 33 亿词的纯英文语料。

​ 这意味着 BERT 的词表天然偏向英文。虽然 Wikipedia 中夹杂少量非英文字符(人名、地名等),但中文、日文等语言的子词合并次数极少,压缩率很低。这也是为什么后来 Google 又推出了多语言版本 bert-base-multilingual——在 104 种语言的 Wikipedia 上重新训练词表,让各语言都能获得合理的子词覆盖。

(1) 词表的具体组成
  • 5 个特殊 token

    token作用
    [PAD]填充短序列,使同一 batch 内所有序列等长
    [UNK]代替词表中找不到的未知字符
    [CLS]插在序列开头,其最终隐藏状态用作整句的分类向量
    [SEP]分隔两个句子(如问答任务中的问题和段落),也标记序列结尾
    [MASK]预训练时随机遮盖 token,让模型学习"完形填空"
  • 约 1,000 个无 ## 前缀的单字符(词首字符)

  • 约 29,000 个子词(包括完整词和 ## 前缀的词内片段)

(2) BERT 的分词流程
  1. BasicTokenizer:按空格和标点拆分,转小写(uncased 版本),处理 Unicode
  2. WordPieceTokenizer:对每个词做贪心最长匹配
  3. 在序列首尾添加 [CLS] 和 [SEP] 特殊 token

4.2 为什么 BERT 选了 WordPiece

​ BERT 诞生于 2018 年的 Google,而 WordPiece 早在 2016 年就在 Google 内部的机器翻译系统中使用了。选择 WordPiece 有历史和工程上的原因:

  1. 内部惯性:Google 内部已有成熟的 WordPiece 训练和编码工具
  2. PMI 的理论优势:基于互信息的合并在当时被认为比纯频率更合理
  3. ## 前缀的便利:BERT 需要做掩码语言模型(MLM),能区分词首和词中位置有助于模型学习

​ 但在 BERT 之后,大部分新模型都转向了 BPE。简单来说,BPE 的工程简洁性和字节级兜底能力在 LLM 时代更有优势。

五、总结

5.1 核心要点

  1. WordPiece 和 BPE 同属"自底向上合并"家族,框架相同,区别在于合并时的评分函数
  2. BPE 选频率最高的 pair,WordPiece 选 PMI 最高的 pair——前者偏爱高频组合,后者偏爱强关联组合
  3. 编码策略不同:BPE 重放合并规则,WordPiece 用贪心最长匹配。WordPiece 编码只需要词表集合,不需要知道合并顺序
  4. ## 前缀区分词首和词中子词,让编码-解码可以无损往返
  5. WordPiece 可能产生 [UNK],而 BPE 从字节出发永远不会 OOV

5.2 速查对比表

维度BPEWordPiece
合并依据频率最高PMI 最高
编码方式合并规则重放贪心最长匹配
编码所需有序合并规则表词表集合
子词标记无## 前缀
OOV 处理退化为字节返回 [UNK]
代表模型GPT、LLaMABERT、DistilBERT

​ WordPiece 在 BERT 时代是主流选择,理解它有助于你读懂 BERT 系列模型的分词逻辑。但如果你从零搭建新项目,当下的主流选择是 BPE。

【Token】大模型的核心基石:深入解析token与分词策略 它是连接人类自然语言与机器数字计算的桥梁,是LLM这座宏伟建筑的砖石。”时,模型看到的并非中文字符,而可能是一个如 [25345, 19976, 1029, 23333, 22178, 1062] 这样的整数序列。(LLM)的架构中,Token 是一个最基础且至关重要的概念。它远非简单的“词语”或“字符”可以概括,而是模型用以理解和生成语言的基本语义单元。从技术上讲,Token是通过一个预定义的分词器,将输入文本分割成的离散子词单元序列。不同的分词算法决定了Token的划分策略,直接影响模型的性能。 阅读详情

相关推荐

Tokenizer实战指南:BPE、SentencePiece与中文分词避坑

Tokenizer是大语言模型理解文本的首要环节,本质是将原始文本映射为语义原子(token)的预处理系统,而非简单切分。其核心原理涵盖Unicode标准化、子词学习(如BPE的字节对合并、SentencePiece的▁标记机制)和ID查表三阶段。技术价值在于控制词汇表规模、降低OOV率、适配多语言混合场景,并直接影响RAG检索、微调对齐与推理稳定性。典型应用场景包括Qwen/LLaMA等开源模型接入、PDF文本清洗、日文假名切分及医疗领域术语保留。本文聚焦BPE字节级实现与SentencePiece无空格

weixin_34236869的博客 332

大模型Tokenizer原理:深入理解BPE与WordPiece子词编码技术

考虑单词"unsupervised",BPE可能优先合并出现频率最高的字符对,而WordPiece会考虑合并后对整体句子概率的影响。具体来说,对于候选合并对(A, B),计算合并前的联合概率贡献与合并后的联合概率贡献之差,选择使整体似然提升最大的对。具体而言,对于输入单词,从右到左(或从左到右)遍历所有可能的分词位置,计算每种分词方案的概率,选择概率最高的方案。与BPE基于频率的贪心合并不同,WordPiece采用基于概率的训练目标,这导致了本质性的差异。“,单词"low"变为"l o w ``”。

weixin_45504565的博客 502

大模型输入处理:从分词到向量的7步工业级Pipeline

大语言模型(LLM)的输入处理并非简单文本切分,而是决定模型理解能力的基础环节。其核心原理在于将原始文本通过清洗、编码归一、规范化、分词、词表映射、特殊token注入和向量化等步骤,转化为模型可计算的数字序列。这一过程直接关联tokenization(分词)与vocabulary(词表)两大关键技术点,深刻影响语义保真度、上下文窗口利用率及跨语言鲁棒性。在法律、医疗、金融等垂域应用中,不当的输入处理常导致关键实体识别失准、金额/剂量误判等高风险问题。本文聚焦工程落地,系统拆解从原始文本到张量封装的完整链路,

afhu47033的博客 456

从 LLM 到 Agent Skill,龙虾的技术基础 · ② Token

本系列共 8 篇。

蓝色的杯子 436

BERT底层原理深度解析:从Tokenizer到Multi-Head Attention的硬核拆解

BERT作为现代大语言模型的地基,其核心在于双向自编码架构与掩码语言建模(MLM)的协同设计。它通过WordPiece子词切分平衡OOV率与序列长度,以可学习位置编码适配工业场景,并依赖三类Embedding相加融合实现信息解耦。Multi-Head Attention中Q/K/V矩阵独立参数保障语义有向性,而Feed-Forward网络的4倍维度放大则服务于非线性语义蒸馏。这些机制共同支撑了文本分类、命名实体识别、问答匹配等下游任务的稳定迁移能力,尤其在金融、医疗等专业领域微调与领域自适应中仍具不可替代的

weixin_29668665的博客 301

GPU加速Tokenizer:突破NLP预处理瓶颈的工程实践

Tokenizer是NLP流水线中常被忽视的关键环节,其本质是字符串处理与查表操作,在CPU上易成性能瓶颈。随着BERT、CLIP等模型广泛部署,传统CPU分词在批量推理和RAG场景下导致GPU空转、端到端延迟飙升。将Tokenizer迁移至GPU并非简单设备切换,而是需重构为张量化、静态查表、规则向量化的新范式,核心涉及固定长度批处理、显存固化vocab、CUDA内核或TensorRT集成等技术路径。本文聚焦PyTorch原生实现与工业级方案(如TensorRT-LLM)的落地差异,覆盖A100实测性能对

a304096740的博客 379

LLM分词技术深度解析:从BPE到Embedding的完整流程

在自然语言处理中,分词是将文本拆分为基本单元的关键预处理步骤,它直接影响模型对语言的理解能力。其核心原理在于通过算法将连续文本转换为离散的符号序列,为后续的数学建模奠定基础。这项技术的价值在于平衡词汇表大小与序列长度,提升模型对未登录词和跨语言文本的处理效率。在大型语言模型的应用场景中,分词作为文本到向量转换的第一步,决定了模型输入的表示质量。本文聚焦于Tokenization这一LLM基石技术,深入剖析了BPE、WordPiece等主流分词算法,并探讨了Embedding层如何将Token ID转化为语义

迷彩风情 465

文本预处理与张量表示:让模型真正读懂你的输入

深度学习模型本质上处理的是数值张量,无法直接理解字符串文本。要让模型真正“读懂”输入,必须经过文本预处理与张量表示:先清洗标准化,再利用tokenizer将文本拆分为子词并映射为token id,最后通过embedding查表转为稠密向量。BPE、WordPiece等分词算法决定了词表质量,而attention mask、position id等张量组件直接影响训练与推理效果。这一流程在NLP、大语言模型部署和本地推理中都是关键工程环节,尤其在中文场景下需注意全角空格、编码统一等细节。掌握从字符串到张量的完

weixin_34414196的博客 346

使用Tokenizer处理大模型Token生成任务全流程

从环境搭建到文本切分,深入讲解如何用Tokenizer高效处理大模型的Token生成任务。涵盖Miniconda环境隔离、Hugging Face分词机制、中文语义保留、长文本滑动窗口等关键技术点,解决专业领域术语切分不准、环境不一致导致的运行异常等常见问题,提升模型输入质量与工程可复现性。

weixin_42596246的博客 907

深入理解LLM核心:Token与Embedding的工作原理与实战应用

在自然语言处理与大型语言模型(LLM)领域,文本的数字化表示是核心技术基础。其核心原理是将人类可读的文本转换为机器可处理的数值形式,这一过程是实现语义理解与计算的前提。从技术价值看,高效的文本表示能显著提升模型处理效率、降低计算成本,并直接影响下游任务(如搜索、问答、生成)的性能。在实际应用场景中,这具体体现为两个关键技术:Tokenization(分词)将文本切分为模型可识别的子词单元,是控制上下文长度和计算成本的关键;Embedding(向量嵌入)则将离散的Token映射为连续的稠密向量,在向量空间中编

weixin_33859844的博客 389

Token 破局:从大模型核心概念到技术挑战与职业蓝海

文章摘要:Token是大语言模型处理文本的核心技术单元,通过分词器将自然语言转换为机器可处理的离散序列。当前面临四大挑战:长上下文窗口导致的注意力稀释和"迷失中间"效应、Token压缩的紧迫性、分词语义不对齐问题以及Token经济性压力。技术机会集中在Token压缩优化、稀疏注意力架构创新、多模态Token处理及推理服务化工程等领域。随着AI进入"Token经济"时代,相关技术突破将直接影响算力成本和商业价值,Tokenizer工程师、AI成本优化师等新兴职业正在崛起

yaxuaner的博客 351

SH9分词器Tokenizer的终局:无token化技术与大语言模型的架构重构(世毫九实验室原创研究)

回顾Tokenizer的发展历程,从2013年Word2Vec和GloVe的词级分词,到2015年BPE算法的引入,再到2018年WordPiece和SentencePiece的兴起,直至2021年ByT5等字节级模型的出现,这一技术演进的轨迹清晰地反映了一个根本性矛盾:离散化处理与连续语言本质之间的冲突。相比之下,字节级模型通过直接操作原始UTF-8数据,具备与生俱来的通用性与鲁棒性,能够处理任意语言的任意文本,且无未登录词(OOV)问题,对文本表面的细微变体也不敏感,但代价是序列长度显著增加。

shardylab.blog.youkuaiyun.com 764

电子技术设计——16×16点阵汉字显示设计

同时,设计还应注重提升显示品质,以保证汉字的稳定展示和观感舒适。本设计的目的是构建一个能够准确在LED点阵上展示汉字的系统,并允许用户通过输入设备来选择所需的汉字,我们将验证设计方案的实际操作性和效果,以确保其满足设计目标。在LED点阵显示和汉字信息处理技术的结合下,研究者们着手研究如何在LED点阵上有效地显示汉字,并提出了一系列显示算法和优化策略,旨在实现清晰且易于阅读的汉字显示效果。首先,你需要准备16×16的LED点阵面板,通常这些点阵是8×8点阵的两倍,因此可以由两个8×8的点阵组合而成。

weixin_68094467的博客 1533

GPU加速Tokenizer:原理、方案与生产级实操指南

Tokenizer作为NLP流水线的关键预处理组件,其本质是子词切分、ID查表与张量组装的组合操作。传统CPU实现虽兼容性强,但在高吞吐、长序列及多卡训练场景下易成性能瓶颈。本文聚焦‘GPU tokenizer’的技术内核——并非字符串运算上GPU,而是将查表映射与张量组装层重构为张量原语,依托tokenizers库+torch.compile实现零侵入加速,并覆盖昇腾、AMD等异构硬件适配路径。内容涵盖BPE/WordPiece底层原理、三类工业方案实测对比(含vLLM与自定义CUDA kernel)、P

weixin_34208283的博客 558

AgentVerse实战:构建多智能体协作系统的关键技术与应用场景

本文深入探讨了AgentVerse框架在构建多智能体协作系统中的关键技术及应用场景。通过分析智能体通信协议、环境交互机制和任务分解算法,展示了如何利用大型语言模型(LLM)实现智能体间的专业化分工与动态协作。文章还提供了智能软件开发团队和智能客服系统等典型应用案例,以及部署优化实践,为开发者构建高效的多智能体系统提供实用指导。

weixin_29254029的博客 361

MSPM0G3507电赛控制板设计:电机驱动与多传感器融合

微控制器是嵌入式控制系统的核心处理单元,其性能与外设集成度直接决定实时控制能力。基于Arm Cortex-M0+内核的MCU凭借低功耗、高性价比和丰富模拟资源,成为大学生电子设计竞赛等工程实践场景的主流选择。本文围绕MSPM0G3507展开,深入解析双路电机驱动(TB6612FNG)、多源传感采集(MPU6050+ADC电压监测)及抗干扰硬件架构等关键技术,强调电源隔离、信号完整性与鲁棒性设计对72小时封闭竞赛环境的关键支撑作用。典型应用涵盖巡线小车运动控制、姿态解算与蓝牙/Zigbee协同通信,为控制类赛

weixin_42588672的博客 542

LLM文字转数字四层解构:从Unicode到位置编码的完整链条

在大语言模型(LLM)中,‘文字转数字’是理解输入表示的核心基础概念,它并非简单编码,而是涵盖字符映射、子词切分、词表查表与位置编码的系统性过程。其原理根植于离散符号到连续向量的空间映射,通过统计建模(如BPE)压缩语义单元,再借正弦位置编码注入序列顺序信息,从而支撑Transformer对长程依赖的建模能力。该技术价值在于打通自然语言与数值计算的鸿沟,使语义可微分、可并行、可扩展;典型应用场景包括文本分类、机器翻译、问答系统等所有基于预训练语言模型的任务。本文聚焦LLM底层tokenization全流程,

weixin_26968079的博客 75

GameFramework教程✨六、怎样加载一个3D UI

怎样加载一个3D UI

星河造梦坊 1583

大语言模型推理全流程解析:从分词到采样,揭秘LLM生成黑盒

大语言模型(LLM)的推理过程是自然语言处理的核心环节,它基于Transformer架构的自回归生成原理,将用户输入的文本序列逐步转化为模型输出。这一过程的技术价值在于高效地将海量参数的知识转化为连贯、合理的文本响应,是实现智能对话、内容创作和代码生成等应用的基础。在实际工程实践中,推理流程通常涉及多个关键步骤:首先,通过分词器(Tokenizer)将原始文本转换为模型可处理的Token序列;随后,模型进行前向传播计算,并利用KV Cache机制缓存中间状态以加速后续生成;接着,语言模型头输出下一个Toke

weixin_34101784的博客 449

手把手入门YOLO到改进优化教程 | 【P5进阶篇】YOLOv8损失函数改进实战-损失函数IoU之KLD Loss

在本节,将从 KLD Loss(Kullback–Leibler Divergence Loss)的理论到实战代码实现,带你把 KLD Loss融合进 YOLOv8 的训练框架中。并通过训练日志与实验结果,验证 KLD Loss 在实际工程中的优势。

嵌入式阿齐Archie 2万+

【AI智能体】Claude Code 高级编程技巧实战项目详解

Claude Code 高级编程技巧实战项目详解

congge 1万+

语言模型演进:从N-gram到LLM的核心原理与工程实践

语言模型是自然语言处理(NLP)的基石,其核心任务是为词序列分配概率,并预测下一个最可能出现的词。这一概念源于对语言序列的统计建模,早期通过N-gram模型实现,但受限于数据稀疏性和上下文长度。随着深度学习的发展,基于神经网络的模型,特别是Transformer架构,通过自注意力机制解决了长距离依赖问题,并催生了预训练语言模型(PLM)范式。PLM通过在海量文本上进行掩码语言模型(MLM)或自回归语言模型(LM)等代理任务预训练,学习通用语言表示,再通过微调适配下游任务,极大提升了NLP应用的开发效率。其技

weixin_34238633的博客 479

从 Open SQL JOIN 走向 ABAP CDS Association:把查询写成可复用的数据模型

摘要: 本文通过飞行模型示例,对比了ABAP中三种表关联实现方式:Open SQL JOIN、CDS显式JOIN和CDS Association。重点解析了Association的本质是将表关系声明为数据模型语言,使用时通过路径表达式按需展开为JOIN。文章指出路径表达式在不同位置会默认展开为不同JOIN类型(如SELECT列表默认为LEFT OUTER),并演示了如何用[inner]强制指定INNER JOIN。最后结合S/4HANA实际案例,说明Association通过中心化关系定义和路径复用,能有效

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 384

Transformer输出层与反分词:从概率分布到可读文本的完整解析

在自然语言处理中,语言模型的核心任务是将高维语义表示转化为人类可读的文本。这一过程涉及两个关键技术环节:输出层负责将模型的隐藏状态映射到词表空间,通过Softmax函数生成下一个token的概率分布;反分词则负责将离散的token ID序列还原为连贯的文本。理解输出层的LM Head结构、Softmax的数值稳定性处理,以及贪婪搜索、集束搜索、核采样等生成策略的原理,对于优化文本生成质量至关重要。这些技术共同决定了模型输出的流畅性、多样性和准确性,广泛应用于机器翻译、对话系统、代码生成等场景。本文深入探讨了

weixin_30847865的博客 366

【单片机】STM32F103C8T6 最小系统板原理图

STM32F103C8T6是一款基于ARM Cortex-M3内核的32位微控制器,由STMicroelectronics(ST)公司生产。它是STMicroelectronics的STM32系列微控制器中的一员,被广泛应用于嵌入式系统和电子设备中。LQFP48封装(Low-profile Quad Flat Package,48引脚)SRAM(静态随机访问存储器):20 KB。支持JTAG调试和编程接口(可选)多个通用输入/输出口(GPIO)USB接口(用于USB设备模式)内置调试和编程接口(SWD)

q742971636的博客 6万+

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

大语言模型文本处理核心:分词与嵌入技术详解

在自然语言处理领域,将文本转换为计算机可理解的数值表示是基础且关键的一步。其核心原理在于通过分词算法将连续文本切分为离散的语义单元,再通过嵌入技术将这些单元映射为高维空间中的稠密向量。这项技术的价值在于,它为下游的语义理解、信息检索和文本生成等任务提供了结构化的、富含语义的输入。在工程实践中,无论是构建检索增强生成系统、进行模型微调,还是优化提示工程,精准的文本到向量转换都是决定应用效果的上限。特别是在当前热门的RAG架构和Agent应用中,嵌入模型的质量直接关系到知识检索的准确性。理解分词策略如BPE、W

weixin_34238633的博客 332

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

上一篇: 【BPE实战】从零实现 BPE 分词器:训练、编码与解码
下一篇: 【LLM Tokenizer】Unigram 分词:反向裁剪的概率模型
未收敛
博客等级 码龄11年 3312粉丝 163原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

未收敛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值