大语言模型中的嵌入模型

news2025/4/9 18:27:48

本教程将拆解什么是嵌入模型、为什么它们在NLP中如此重要,并提供一个简单的Python实战示例。

分词器将原始文本转换为token和ID,而嵌入模型则将这些ID映射为密集向量表示。二者合力为LLMs的语义理解提供动力。图片来源:[https://tzamtzis.gr/2024/coding/tokenization-by-andrej-karpathy/]

什么是嵌入模型?

在LLMs的语境中,嵌入模型是一种神经网络,旨在将文本(如单词、短语、句子)表示为连续向量空间中的密集向量。这些向量表示能捕捉文本项之间的语义关系,是现代NLP系统的基石。

例如:

  • "king"和"queen"这两个词的嵌入向量可能在向量空间中非常接近。
  • "king"和"man"之间的向量关系可能与"queen"和"woman"之间的关系类似。

想象完这些语义关系在向量空间中的样子后,我们可能会认为单词直接变成了这些能保留语义关系的向量。这种想法在讨论LLM处理流程中的令牌时可能会引起一些混淆。让我们稍微澄清一下关于分词的内容。

分词器和嵌入模型有什么区别?

在使用BERT、GPT等大语言模型(LLMs)时,经常会遇到两个关键概念:分词器嵌入模型。虽然它们相关,但在处理单词的流程中扮演着不同的角色。

LLMs处理原始文本的一般流程如下:

  1. 原始输入文本:我们输入给模型的纯文本(例如“我爱机器学习”)。
  2. 分词器:将原始文本拆分为更小的单元(令牌)并将其转换为数字ID。
  3. 嵌入模型:将这些数字令牌ID映射到连续向量空间中的密集向量表示,捕捉语义含义。
  4. Transformer模型:使用自注意力层处理嵌入并生成预测(如下一个单词、情感、分类等)。

现在我们对流程中的分词器和嵌入模型有了更清晰的认识,让我们进一步明确什么是分词器,什么是嵌入模型。

什么是分词器?

分词器是流程中的第一个组件,负责:

  • 将文本拆分为令牌:一个令牌可以是一个单词、子词甚至是一个字符。例如,句子“我爱机器学习”可能被分词为:

['我', '爱', '机器', '学习']

  • 将令牌转换为ID:每个令牌被映射到模型词汇表中的唯一数字ID。例如:

['我', '爱', '机器', '学习'] → [101, 2173, 5956, 3627]

分词器使用预定义的词汇表(在模型训练期间构建)以确保训练和推理之间的一致性。分词器通常采用以下技术:

  • WordPiece(BERT使用):将罕见词拆分为更小的子词单元。例如,“unbelievable”可能被分词为["un", "##believable"],其中##表示子词。
  • 字节对编码(BPE)(GPT使用):类似于WordPiece,但编码方式不同。

推荐观看Andrej Karpathy的这个视频:https://youtu.be/zduSFxRajkE?si=KGKPLninpxnHu3jN

什么是嵌入模型?

嵌入模型在分词之后发挥作用,其职责是:

  1. 将令牌ID转换为密集向量:每个令牌ID被映射到连续向量空间中的一个固定大小的向量(例如,BERT-base的向量大小为768)。这些向量称为嵌入。
  2. 捕捉语义含义:生成的嵌入表示令牌的含义,使得相似的单词或令牌在向量空间中更接近。

例如:

  • "king"和"queen"这两个词的嵌入向量可能非常接近。
  • 子词如“un”和“##believable”可能组合成“unbelievable”的有意义嵌入。

嵌入模型本质上是一个查找表,但它也可以编码上下文信息(例如,在BERT等模型中,嵌入是上下文感知的)。

分词器和嵌入模型如何协同工作

让我们在LLM流程的更大背景下连接分词器和嵌入模型:

  1. 分词器:分词器为模型准备输入文本。例如:
输入文本:"我爱机器学习" 
分词器输出:[101, 2173, 5956, 3627]

这里,[101, 2173, ...]是令牌ID。

2. 嵌入模型:令牌ID随后传递给嵌入层,将其转换为密集向量表示:

令牌ID:[101, 2173, 5956, 3627] 
嵌入向量:[[0.1, 0.2, ...], [0.4, 0.5, ...], ...]

这些向量在训练期间学习,表示每个令牌的含义。

3. Transformer层:嵌入通过Transformer层(如自注意力)处理,计算上下文表示并生成预测。

为什么这种区分很重要?

理解分词器和嵌入模型之间的区别至关重要,因为:

  1. 分词器定制:在特定领域任务(如法律或医学文本)中,可能需要自定义分词器来处理专业术语(如“诉讼”、“MRI扫描”)。
  2. 预训练嵌入:你可以微调嵌入层以适应你的领域。例如,在医学文本上训练的嵌入与在一般新闻文章上训练的嵌入会有显著差异。
  3. 错误调试:下游任务中的问题通常源于分词问题,如词汇表外(OOV)单词或次优的分词策略。

一个类比来澄清概念

将LLM想象成一个工厂:

  • 分词器:分词器就像原材料处理器,将文本拆分为工厂可以处理的单元。
  • 嵌入模型:嵌入模型是生产线上的第一台机器,将这些原材料转换为中间产品(密集向量),供工厂的其他部分处理。

没有分词器,嵌入模型就不知道要处理什么。没有嵌入模型,Transformer层就没有有意义的输入。

分词器和嵌入模型的实战示例

from transformers import AutoTokenizer, AutoModel

# 第一步:加载分词器和模型
tokenizer 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2328005.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【从零实现Json-Rpc框架】- 项目实现 - 服务端主题实现及整体封装

📢博客主页:https://blog.csdn.net/2301_779549673 📢博客仓库:https://gitee.com/JohnKingW/linux_test/tree/master/lesson 📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正! &…

开源的 LLM 应用开发平台Dify的安装和使用

文章目录 前提环境应用安装deocker desktop镜像源配置Dify简介Dify本地docker安装Dify安装ollama插件Dify安装硅基流动插件简单应用练习进阶应用练习数据库图像检索与展示助手echart助手可视化 前提环境 Windows环境 docker desktop魔法环境:访问Dify项目ollama电脑…

从零构建大语言模型全栈开发指南:第五部分:行业应用与前沿探索-5.1.2行业落地挑战:算力成本与数据隐私解决方案

👉 点击关注不迷路 👉 点击关注不迷路 👉 点击关注不迷路 文章大纲 从零构建大语言模型全栈开发指南-第五部分:行业应用与前沿探索5.1.2 行业落地挑战:算力成本与数据隐私解决方案1. 算力成本挑战与优化策略1.1 算力成本的核心问题1.2 算力优化技术方案2. 数据隐私挑战…

NodeJS--NPM介绍使用

1、使用npm install命令安装模块 1.1、本地安装 npm install express 1.2、全局安装 npm install express -g 1.3、本地安装和全局安装的区别

DeepSeek与ChatGPT的优势对比:选择合适的工具来提升工作效率

选DeepSeek还是ChatGPT?这就像问火锅和披萨哪个香! "到底该用DeepSeek还是ChatGPT?” 这个问题最近在互联网圈吵翻天!其实这就跟选手机系统-样,安卓党iOS党都能说出一万条理由,但真正重要的是你拿它来干啥!&am…

25大唐杯赛道一本科B组知识点大纲(下)

5G/6G网络技术知识点(10%) 工程概论及通信工程项目实践(20%) 5G垂直行业应用知识点(20%) ⭐⭐⭐为重点知识,尽量要过一遍哦 大唐杯赛道一国一备赛思路 大唐杯国一省赛回忆录--有付出就会有收…

Python+Playwright自动化测试-1-环境准备与搭建

1、Playwright 是什么? 微软在 2020 年初开源的新一代自动化测试工具,它的功能类似于 Selenium、Pyppeteer 等,都可以驱动浏览器进行各种自动化操作。它的功能也非常强大,对市面上的主流浏览器都提供了支持,API 功能简…

生产管理系统如何破解汽车零部件行业追溯难痛点

在汽车零部件制造行业中,生产追溯一直是企业面临的核心挑战之一。随着市场竞争的加剧和客户需求的日益复杂,如何确保产品质量、快速定位问题源头、减少批次性返工,成为了每个企业亟待解决的问题。而生产管理系统,作为智能制造的重…

【XTerminal】【树莓派】Linux系统下的函数调用编程

目录 一、XTerminal下的Linux系统调用编程 1.1理解进程和线程的概念并在Linux系统下完成相应操作 (1) 进程 (2)线程 (3) 进程 vs 线程 (4)Linux 下的实践操作 1.2Linux的“虚拟内存管理”和stm32正式物理内存(内存映射)的区别 (1)Linux虚拟内存管…

umi框架开发移动端h5

1、官网:https://umijs.org/ 2、创建出来的项目 yarn create umi yarn start3、推荐目录结构 . ├── config │ └── config.ts ├── public//静态资源 ├── dist ├── mock │ └── app.ts|tsx ├── src │ ├── .umi │ ├── .um…

3.9/Q2,Charls最新文章解读

文章题目:Association between remnant cholesterol and depression in middle-aged and older Chinese adults: a population-based cohort study DOI:10.3389/fendo.2025.1456370 中文标题:中国中老年人残留胆固醇与抑郁症的关系&#xff1…

Java Lambda 表达式提升效率

lambda 表达式的应用场景 Stream 的应用场景 Lambda/Stream 的进一步封装 自定义函数式接口(用 jdk 自带的函数式接口也可以) https://docs.oracle.com/javase/tutorial/java/javaOO/lambdaexpressions.html import java.io.Serializable;/*** 可序…

人工智能混合编程实践:C++ ONNX进行图像超分重建

人工智能混合编程实践:C++ ONNX进行图像超分重建 前言相关介绍C++简介ONNX简介ONNX Runtime 简介**核心特点**图像超分辨率重建简介应用场景前提条件实验环境项目结构使用C++ ONNX进行图像超分重建sr_main.cpp参考文献前言 由于本人水平有限,难免出现错漏,敬请批评改正。更多…

K8S学习之基础七十四:部署在线书店bookinfo

部署在线书店bookinfo 在线书店-bookinfo 该应用由四个单独的微服务构成,这个应用模仿在线书店的一个分类,显示一本书的信息,页面上会显示一本书的描述,书籍的细节(ISBN、页数等),以及关于这本…

Python不可变数据类型全解析:原理、优势与实战指南

目录 引言:为什么Python要区分可变与不可变? 一、不可变数据类型的核心特性 二、五大不可变数据类型深度解析 三、不可变数据类型的三大核心优势 四、不可变数据类型的典型应用场景 五、不可变 vs 可变:如何选择? 六、实战技…

Apache Doris 2025 Roadmap:构建 GenAI 时代实时高效统一的数据底座

在全球 290 位开发者的协作下,Apache Doris 在 2024 年完成了 7000 次代码提交,并发布了 22 个版本,实现在实时分析、湖仓一体和半结构化数据分析等核心场景的技术突破及创新。 2025 年,Apache Doris 社区将秉承“以场景驱动创新…

二极管正负极区分

二极管正负极区分 二极管是一种具有单向导电性的半导体器件,正确区分正负极对于其使用非常重要。以下是几种常见的二极管正负极区分方法: 1. 外观标识 有标记的二极管 色环或色点:许多二极管在表面会有一个色环或色点,这个标记…

【c++深入系列】:类与对象详解(中)

🔥 本文专栏:c 🌸作者主页:努力努力再努力wz 💪 今日博客励志语录: 不是因为看到希望才坚持,而是坚持了才能看到希望 那么上一篇博客我讲解了什么是类和对象以及类和对象是怎么定义的&#xff0…

汽车 HMI 设计的发展趋势与设计要点

一、汽车HMI设计的发展历程与现状 汽车人机交互界面(HMI)设计经历了从简单到复杂、从单一到多元的演变过程。2012年以前,汽车HMI主要依赖物理按键进行操作,交互方式较为单一。随着特斯拉Model S的推出,触控屏逐渐成为…

《AI大模型应知应会100篇》第56篇:LangChain快速入门与应用示例

第56篇:LangChain快速入门与应用示例 前言 最近最火的肯定非Manus和OpenManus莫属,因为与传统AI工具仅提供信息不同,Manus能完成端到端的任务闭环。例如用户发送“筛选本月抖音爆款视频”,它会自动完成: 爬取平台数据…