首页 > 其他分享 >大语言模型的token和向量

大语言模型的token和向量

时间:2024-12-27 13:29:49浏览次数:6  
标签:模型 语义 Token token 文本 比如 向量

现在大语言模型火了,像 ChatGPT 什么的,能回答问题、写文章,。但它们为啥这么聪明呢?这就和向量、Token 有关系。那怎么通过向量、Token来理解我们的问题呢。看完这篇文章就知道了

token

Token 就像是语言里的小积木,是文本中最小有意义的部分。

英文里,单词常常就是 Token,不过有时候长单词会被拆成子词,比如“unbelievable”拆成“un”“believ”“able”。

中文呢,因为字词没空格,得用工具分成一个个字词,像“我爱自然语言处理”,可能分成“我”“爱”“自然语言”“处理”这些 Token。

Tokenization 的方法与策略

  • 基于空格的分割:这在英文里很好用,比如 “I am a student.”,按空格就能分成 [“I”, “am”, “a”, “student.”] 这些 Token。但遇到像 “don't” 这样的缩写,就不太行了,而且中文没有空格,不能用这个方法。
  • 规则基础的分割:按照设定好的规则来分,比如把标点去掉,数字统一处理。像 “Hello, world! 123”,去掉标点就变成 [“Hello”, “world”, “123”]。不过这样可能会丢掉一些重要信息,比如引号里的内容,而且规则得根据具体情况调整。
  • 字节对编码(BPE):它会统计文本里字节对出现的频率,把经常一起出现的字节对合并成新的子词单元。比如 “low lowing lowest”,先发现 “lo” 出现多,就合并,最后可能得到 [“low”, “lowing”, “lowest”]。这个方法能处理没见过的词,但分出来的子词可能不太好理解,而且计算有点复杂。
  • 字节级 BPE:在字节级别用 BPE 算法,对多种语言混合的文本或者特殊符号处理得很好,不过计算量更大,需要更多存储空间。
  • WordPiece:和 BPE 类似,不过它在合并字节对的时候,会考虑对语言模型有没有帮助,会根据大量文本学习怎么分最好。但需要很多数据来训练,不然可能分不好。
  • Unigram Language Model:从很多 Token 开始,慢慢去掉对语言模型不太重要的,留下有用的。这样能根据实际情况调整 Token 集合,但计算成本高,训练时间长。

Token 在模型中的作用与影响

在大语言模型里,文本要先变成 Token 序列,每个 Token 会被编成一个数字编号。比如有个简单的词汇表 {“I”: 1, “love”: 2, “natural”: 3, “language”: 4, “processing”: 5},那么 “I love natural language processing.” 就会被编成 [1, 2, 3, 4, 5]。接着这些编号会变成向量,模型就能通过向量来理解文本的意思。

模型推理生成文本时,会根据输入的 Token 序列和学过的知识,算出下一个 Token 可能是什么,比如算出 “is” 的概率是 0.1,“a” 的概率是 0.05 等等,然后选概率高的或者用其他方法确定下一个 Token,这样就能生成连贯的文本。

选择不同的 Tokenization 方法对模型性能影响很大。词汇量大,模型能表达的意思就多,但计算也更复杂,要花更多时间和空间。处理没见过的词时,如果 Tokenization 方法好,模型就能把没见过的词拆成认识的部分,从而大概理解意思。而且合理的 Tokenization 还能让输入序列变短,计算更快,比如把 “New York” 当成一个 Token 处理,就比分开处理 “New” 和 “York” 更高效。

向量

从数学来讲,向量有大小和方向。在大语言模型里,向量用来表示单词、句子甚至整篇文档。比如把每个单词变成一个固定长度的向量,语义相近的单词,它们的向量在空间里的距离就会比较近,像 “猫” 和 “狗” 的向量距离就比 “猫” 和 “苹果” 的近。

向量的维度很重要。维度高,能表示的语义信息就多,模型能力就强,像做复杂的文本分类、理解语义、生成自然的文本等都能做得更好,但计算也更难,训练时间长,还可能出现过拟合。维度低,计算简单,但可能没法很好地表示复杂的语义,在遇到有隐含意思或者有歧义的文本时,模型就容易理解错。一般大语言模型里,词向量维度从 256 维到 1024 维甚至更高都有,句子和文档向量维度会根据模型和任务再调整。

 向量化的目的与优势

向量化主要是为了让计算机能处理文本这种非数字的数据。计算机处理数字快,把文本变成向量,就能利用计算机的计算能力来分析文本。比如在文本分类任务中,把文本变成向量后,计算机就能通过计算向量快速判断文本属于哪一类,而不是只简单地匹配文字。

向量化还能准确地抓住数据的特征和关系。在词向量空间里,语义相近的词向量距离近,不同的词向量距离远。比如 “国王” 和 “王后” 的向量相似度就比和 “苹果” 的高,模型就能根据这个理解它们的语义联系,在回答问题、生成文本时就能更符合逻辑。而且向量形式的数据做矩阵运算快,能利用高效的矩阵运算库,让模型训练和推理更快,能处理更多文本,满足实际应用中快速处理大量数据的需求。

向量在模型中的应用场景

在大语言模型里,词向量很基础。通过像 Word2Vec、GloVe 这些方法在大量文本上训练,词向量能抓住单词的语义信息。比如在情感分析任务中,模型可以根据词向量判断文本的情感倾向。

句子和文档也能变成向量。句子向量通常是把句子里单词的向量加权求和得到,文档向量也类似。这样得到的向量能用来计算文本相似度、做分类和聚类。比如在信息检索中,通过计算查询语句和文档向量的相似度,能快速找到相关文档;在文本聚类中,根据向量相似性把文本分类,能发现文本的潜在主题和模式。

在模型输入和输出时,向量化也很关键。输入文本要先变成向量,模型处理后输出也是向量,然后再变成文本。比如在文本生成任务中,模型输出的向量要解码成单词序列,才能生成连贯的文本;在机器翻译中,源语言文本变成向量输入,模型输出目标语言文本的向量,再解码成翻译结果。

向量在注意力机制里也很重要。注意力机制通过计算向量之间的相关性,给输入文本的不同部分分配不同权重,让模型能关注重要信息,提高性能。比如在阅读理解中,回答问题时,注意力机制能让模型聚焦在相关文本上,提取关键信息,回答更准确,避免无关信息干扰,让模型能更好地理解复杂文本,输出更有针对性的答案。

那Token 和向量怎么配合

文本被分成 Token 序列后,模型会用一种叫词嵌入的技术把 Token 变成向量。比如 Word2Vec,它通过让神经网络学习大量文本中单词的上下文信息,来调整单词对应的向量值,让语义相近的单词向量距离近。像 “苹果” 和 “香蕉” 如果经常在相似上下文中出现,它们的向量就会接近。

基于 Transformer 架构的模型(像 GPT、BERT 等),在嵌入层直接把 Token 变成向量。模型会给每个 Token 一个固定维度的向量,通过模型的参数矩阵和 Token 的编码(比如独热编码或者整数编码)相乘得到。比如模型嵌入层维度是 512,词汇表大小是 10000,那么一个 Token 的向量就是 512×10000 的参数矩阵和它的编码向量相乘得到的 512 维向量。这样就能快速把 Token 变成模型能处理的向量,而且随着模型训练,向量会不断优化,更好地表示 Token 的语义和语言特征。

 向量如何表征 Token 的语义

向量在空间里的位置和数值分布能表示 Token 的语义。语义相近的 Token,向量位置近,某些维度的数值也相似。比如表示颜色的 “红色”“蓝色”“绿色”,它们的向量在和颜色相关的维度上数值可能相似,其他维度有差异。通过计算向量的距离(像欧几里得距离、余弦距离)或者相似度(像余弦相似度),模型能判断 Token 语义的相似程度。

在模型推理和理解语言时,向量的这种语义表示能力很有用。比如在文本分类任务中,模型根据文本中 Token 的向量判断主题类别;在情感分析中,通过分析向量里的情感倾向信息确定文本的情感态度。向量之间的运算也能模拟一些语义关系,像 “国王 - 男人 + 女人 = 王后”,通过向量运算能得到和 “王后” 向量相近的结果,这说明模型能理解一些语义逻辑关系,提升语言理解和处理能力,更好地应对各种复杂的语言情况和任务。

 两者协同工作的机制

在大语言模型训练时,Token 和向量紧密配合。输入文本先被分成 Token 序列,然后通过词嵌入层变成向量。模型通过学习大量文本,不断调整向量的权重和参数,让向量更好地表示 Token 的语义和语言结构。比如在基于 Transformer 架构的语言模型训练中,模型通过多头注意力机制对不同位置的 Token 向量加权计算,学习 Token 之间的依赖关系和语义关联。这里 Token 的顺序和组合对模型学习语法和语义规则很重要,向量则是模型计算和推理的基础数据形式,承载 Token 的语义信息,让模型能深入理解和分析文本。

在模型推理阶段,输入文本先变成 Token 序列再变成向量输入模型。模型根据学过的知识,通过对向量的运算处理,生成输出文本的概率分布,然后选合适的 Token 输出,生成连贯文本。比如在问答系统中,模型把用户问题变成 Token 向量,在已有的知识里找相关信息,通过向量运算推理,找到答案的向量表示,再解码成 Token 序列回答用户。Token 和向量的协同工作,让模型能快速准确理解用户问题,生成合理回答,实现自然流畅的人机交互,提高模型的实用性和应用价值。

标签:模型,语义,Token,token,文本,比如,向量
From: https://blog.csdn.net/liu62615/article/details/144758637

相关文章

  • 模拟混合专家模型——滑块匹配领域应用学习
            混合专家模型(MixtureofExperts,简称MoE)是一种高效的神经网络架构,它将多个专业化的子模型(即“专家”)与一个门控网络相结合,以处理复杂任务。        混合专家模型的核心思想是将一个大问题分解为多个小问题,每个小问题由一个在该领域有专业知识的专家模......
  • 【启智社区】【大语言模型原理与实践】1.大语言模型的发展
    大语言模型(LargeLanguageModels,LLM)是一种由包含数百亿以上权重的深度神经网络构建的语言模型,使用自监督学习方法通过大量无标记文本进行训练。自2018年以来,包含Google、OpenAI、Meta、百度、华为等公司和研究机构都纷纷发布了包括BERT、GPT等在内多种模型,并在几乎所有自然语言处......
  • 创建用于预测序列的人工智能模型,调整模型的超参数。
    上一篇:《创建用于预测序列的人工智能模型(四),评估模型的能力》序言:人工智能模型的研发过程实际上是一个多阶段的迭代过程,包括数据准备、模型架构设计、训练和验证,而超参数的调整和优化则始终贯穿其中,是提升模型性能的重要环节。调整学习率在前面的例子中,你可能还记得,我们使用......
  • 大模型来了会淘汰掉什么行业?哪些大模型的岗位是刚需?
    随着科技的不断发展,越来越多的大型模型被开发出来。虽然这些大型模型可以解决许多复杂的问题,但是它们也会对某些行业造成影响。以下是一些可能会被大型模型淘汰掉的行业:人工客服:随着大型模型的出现,人工智能辅助客服的功能将得到极大的提升。这意味着传统的人工客服可能需......
  • 13. OSGI(动态模型系统)
    OSGi(OpenServiceGatewayInitiative),是面向Java的动态模型系统,是Java动态化模块化系统的一系列规范。a)动态改变构造OSGi服务平台提供在多种网络设备上无需重启的动态改变构造的功能。为了最小化耦合度和促使这些耦合度可管理,OSGi技术提供一种面向服务的架构,它能使这些......
  • 利用GaussDB的可观测性能力构建故障模型
    ​D-SMART高斯专版已经开发了几个月了,目前主要技术问题都已经解决,也能够初步看到大概的面貌了。有朋友问我,GaussDB不已经有了TPOPS了,为什么你们还要开发D-SMART高斯专版呢?实际上TPOPS和D-SMART虽然都可以用于Gaussdb的运维监控,不过其分工还是十分明显的。TPOPS是华为GaussDB自带......
  • 颠覆认知!Meta 发布全新“概念模型”,或将迎来“乐高式”进化
    最近科技圈又迎来一项重磅突破!Meta悄然发布了一篇名为"LargeConceptModels:LanguageModelinginaSentenceRepresentationSpace"的论文,直接提出了一个颠覆性的AI模型架构,很有可能把我们带入NLP(自然语言处理)的下一个时代!https://arxiv.org/pdf/2412.08821你可能对......
  • 《LLM入门教程》大模型教程笔记5:一、面向开发者的提示工程——2. 提示原则——原则二:
    项目地址:llm-cookbook教程在线阅读:面向开发者的LLM入门教程openAIPython库版本:1.52.1文章目录第二章提示原则二、原则二给模型时间去思考2.1指定完成任务所需的步骤复杂任务需求代码示例(原)代码示例(基于原代码修改)存在问题改进prompt(进一步告知大模型需要的输出格......
  • Qt 模型Model/视图View/代理Delegate
    一、模型/视图/代理架构简介1、应用程序中往往要存储大量的数据,并对它们进行处理,然后可以通过各种形式显示给用户,用户需要时还可以对数据进行编辑。2、Qt中的模型/视图架构就是用来实现大量数据的存储、处理及其显示的。3、MVC设计模式:(1)、模型(Model)是应用对象,用......
  • 使用纯css3画一个火箭的模型
    要使用纯CSS3来绘制一个火箭的模型,你可以利用CSS的伪元素(:before和:after),边框(border),线性渐变(linear-gradient),以及转换(transform)等属性。以下是一个简单的火箭模型的示例:<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport&......