news 2026/4/23 12:34:34

AIGC大语言模型之词元和嵌入向量

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
AIGC大语言模型之词元和嵌入向量

AIGC大语言模型之词元和嵌入向量


前言

词元和嵌入向量是人工智能生成内容(AIGC)中使用LLM的两个核心概念。

一、LLM的分词

1、分词器

是在模型处理文本之前, 分词器会将文本分解成词或者子词。这个是根据特定的方法和训练过程进行的。

2、分词器如何分解文本

3、开源分词器

分词器/库核心思想/算法标志性特点主要使用者
OpenAI BPE(tiktoken)Byte-level BPE直接在字节流上操作,高效压缩GPT-2,GPT-3,GPT-4,GPT-40, GPT-5
SentencePieceBPE, Unigram语言无关,无需预分词,空格视为LLaMA, T5,多语言模型
WordPieceMax-Likelihood需要预分词,词中片段用 ## 标记BERT 及其家族
Hugging FacetokenizersBPE, WordPiece,Unigram…集大成者,高性能Rust 实现,完整流水线Hugging Face 生态所有模型

4、词级、子词级、字符级与字节级分词

二、词元嵌入向量

语言是词元的序列,如果我们子啊足够大的词元集上训练一个足够好的模型,它就会开始捕获训练数据集中出现的复杂模式:

1、文本嵌入(用于句子和整篇文档)

虽然词元嵌入是LLM运作的关键, 但许多LLM应用需要处理完整的句子,段落甚至文本文档,这催生了一下特殊的语言模型,他们能够生成文本嵌入-- 用单个向量来表示长度超过一个词元的文本片段。

我们可以这样理解文本嵌入模型:它接收一段文本, 最终生成单个向量, 这个向量以某种形式表示该文本并捕获其含义.生成文本嵌入有多种方法。常见的方法之一是对模型生成的所有词元嵌入的值取平均值,然而,高质量的文本嵌入模型往往是专门为文本嵌入任务训练的

2、这边我们自己预训练文本词

  1. 准备预训练数据集(清洗、去重、tokenizer)
  2. Tokenizer设置(词元、分词策略)
  3. 输出模型
# 导入 SentencePiece 库:用于无监督训练子词(BPE/Unigram)模型以及后续编码/解码 import sentencepiece as spm def train(input_file, vocab_size, model_name, model_type, character_coverage): """ 重要说明(官方参数文档可查): https://github.com/google/sentencepiece/blob/master/doc/options.md 参数含义: - input_file: 原始语料文件路径(每行一句,SentencePiece 会做 Unicode NFKC 规范化) 支持多文件逗号拼接:'a.txt,b.txt' - vocab_size: 词表大小,如 8000 / 16000 / 32000 - model_name: 模型前缀名,最终会生成 <model_name>.model 和 <model_name>.vocab - model_type: 模型类型:unigram(默认)/ bpe / char / word 注意:若使用 word,需要你在外部先分好词(预分词) - character_coverage: 覆盖的字符比例 * 中文/日文等字符集丰富语言建议 0.9995 * 英文等字符集小的语言建议 1.0 """ # 这里使用“字符串命令”式的调用来指定训练参数 # 固定 4 个特殊符号的 id:<pad>=0, <unk>=1, <bos>=2, <eos>=3 # 这与下游 Transformer 常用配置一致,便于对齐 input_argument = ( '--input=%s ' '--model_prefix=%s ' '--vocab_size=%s ' '--model_type=%s ' '--character_coverage=%s ' '--pad_id=0 --unk_id=1 --bos_id=2 --eos_id=3 ' ) # 将传入参数填充到命令字符串 cmd = input_argument % (input_file, model_name, vocab_size, model_type, character_coverage) # 开始训练;会在当前工作目录下生成 <model_name>.model / <model_name>.vocab spm.SentencePieceTrainer.Train(cmd) # ===== 英文分词器配置 ===== en_input = 'data/data.txt' # 英文语料:一行一句 en_vocab_size = 32000 # 词表大小:翻译任务常见为 16k/32k en_model_name = 'eng' # 输出前缀:会生成 eng.model / eng.vocab en_model_type = 'bpe' # 使用 BPE(也可尝试 unigram) en_character_coverage = 1.0 # 英文字符集小 → 用 1.0 train(en_input, en_vocab_size, en_model_name, en_model_type, en_character_coverage)

总结

https://chensongpoixs.github.io/

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/17 1:42:33

SpringBoot+Vue 高校实习管理系统平台完整项目源码+SQL脚本+接口文档【Java Web毕设】

摘要 随着高等教育规模的不断扩大&#xff0c;高校实习管理逐渐成为学校和企业合作的重要环节。传统实习管理方式存在信息不对称、流程繁琐、效率低下等问题&#xff0c;难以满足现代教育管理的需求。高校实习管理系统通过信息化手段&#xff0c;实现实习信息的统一管理、学生实…

作者头像 李华
网站建设 2026/4/23 12:24:49

CompressO视频压缩终极指南:完全免费的专业级解决方案

CompressO视频压缩终极指南&#xff1a;完全免费的专业级解决方案 【免费下载链接】compressO Convert any video into a tiny size. 项目地址: https://gitcode.com/gh_mirrors/co/compressO 在视频内容日益丰富的今天&#xff0c;大体积视频文件常常成为存储和分享的痛…

作者头像 李华
网站建设 2026/4/3 20:32:20

19、单输入单输出系统频率非参数优化与分层分散控制

单输入单输出系统频率非参数优化与分层分散控制 单输入单输出系统频率非参数优化 在单输入单输出(SISO)系统中,我们考虑对频率 $\omega_i$($i = 1, \cdots, N + 1$)的精细网格上的 $K(j\omega_i)$ 进行优化,而非像之前那样对状态空间模型进行优化。 在 SISO 情况下,要…

作者头像 李华
网站建设 2026/4/23 12:10:11

20、分层分散控制与生物强化抑制抗生素抗性策略解析

分层分散控制与生物强化抑制抗生素抗性策略解析 1. 分层分散控制 在大规模系统的控制中,分层分散控制是一种有效的策略。 1.1 局部系统聚合 考虑一个由 $N$ 个单输入单输出(SISO)局部子系统组成的系统。每个局部子系统的表示如下: - 输出与输入关系:$v_i = P_i(s)u_{…

作者头像 李华
网站建设 2026/4/18 17:29:51

24、线性控制系统的可防护与不可防护子空间解析

线性控制系统的可防护与不可防护子空间解析 1. 恶意节点检测测试 为了判断系统中是否存在恶意节点,每个诚实传感器 (i) 会对所报告的测量序列 ({z}) 进行如下测试。当且仅当测试在任意时刻 (t) 失败时,传感器才会判定系统中存在恶意节点。 测试内容为:在每个时刻 (t),检…

作者头像 李华
网站建设 2026/4/17 7:04:16

Golang 最常用的库介绍

简介 Go 语言生态系统经过多年的发展&#xff0c;已经积累了大量优秀的第三方库。本文将介绍 Golang 开发中使用最广泛的库&#xff0c;帮助开发者快速了解和选择合适的工具。 一、Web 框架类 1. Gin GitHub Stars: 77k 用途&#xff1a; Web 框架 Gin 是目前最流行的 Go …

作者头像 李华