大型语言模型入门:深入浅出理解“Embedding”

大型语言模型入门:深入浅出理解“Embedding”在上一篇 大型语言模型入门 了解人工智能的未来 主要讲了下什么是大语言模型 在探讨大语言模型的核心基础架构 Transformer 之前 需要先了解什么是 Embedding

大家好,欢迎来到IT知识分享网。

在上一篇《大型语言模型入门:了解人工智能的未来》主要讲了下什么是大语言模型,在探讨大语言模型的核心基础架构 Transformer 之前,需要先了解什么是 Embedding。

在这个信息爆炸的时代,我们每天都会接触到海量的数据:文字、图片、视频……这些数据就像是一座座孤岛,分散在广阔的信息海洋中。对于我们普通人来说,从这些孤岛中找到自己需要的信息,就好比是在没有指南针的情况下航行。而在人工智能的世界里,有一项魔法般的技术——“Embedding”,它就像是为数据世界提供的一把万能钥匙,帮助我们高效地理解和处理这些看似杂乱无章的数据。

Embedding 技术的奥秘

想象一下,如果我们有一个无边无际的图书馆,里面藏书无数,但所有的书都是随机摆放的。如果让你找到所有讲述“宇宙”的书籍,这无疑是一项艰巨的任务。但是,如果图书馆里的书能根据内容自动分类,所有关于“宇宙”的书都聚集在一起,那么这个任务就简单多了。这正是嵌入技术的魔力所在——它能将复杂的数据转化为简单的数值表示,让相似的内容自然而然地聚集在一起。

在机器学习和人工智能领域,无论是处理文字、图片还是其他类型的数据,我们都面临着如何从复杂庞大的数据中提取有用信息的挑战。原始数据往往包含了太多的细节,直接处理这些数据既费时又低效。而通过嵌入技术,我们可以将这些数据转换成由简单数字组成的向量(也就是一串数字序列),这些向量在一个更小、更易于处理的空间内捕捉并表示了原始数据的核心特征和信息。

在讨论 Embedding 这个英文专业术语时,若寻求一个贴切的中文对等词汇,我倾向于使用“向量化”。简而言之,Embedding 过程是将数据集映射至向量空间,以便对数据执行向量化操作。其核心目的在于确定一套恰当的向量,这些向量能有效地代表和描述原始数据集。

这里有两个数学概念

  • “向量”,在数学中,向量(也称为欧几里得向量、几何向量),指具有大小(magnitude)和方向的量。它可以形象化地表示为带箭头的线段。箭头所指:代表向量的方向;线段长度:代表向量的大小。与向量对应的量叫做数量(物理学中称标量),数量(或标量)只有大小,没有方向。
  • 矩阵:矩阵是一个由数构成的矩形阵列,排列成行和列。矩阵可以用来表示数据集合、执行线性变换、解线性方程组等。
大型语言模型入门:深入浅出理解“Embedding”

上图是一个平面直角坐标系中的向量示意图,由平面向量基本定理可知,有且只有一对实数(x,y),使得向量:

大型语言模型入门:深入浅出理解“Embedding”

因此把实数对 (x,y) 叫做向量a的坐标,记作a=(x,y)。这就是向量a的坐标表示。其中(x,y)就是点 P 的坐标。向量 a 称为点P的位置向量。

当我们谈论向量的矩阵表示时,实际上是指将向量表达为矩阵的一部分——通常是矩阵的一行或一列。这样的表示方式让我们能够利用矩阵运算来处理向量,包括进行向量之间的运算、向量与矩阵之间的运算等。在矩阵表示中,这个向量可以作为一个列向量或一个行向量来表示。

列向量表示:如果一个向量作为矩阵的一列来表示,这样的向量称为列向量。

作为列向量,二维向量的矩阵表示形式是:

大型语言模型入门:深入浅出理解“Embedding”

这种表示方式在处理线性变换时特别有用,例如在旋转、缩放等操作中。

行向量表示:如果一个向量作为矩阵的一行来表示,这样的向量称为行向量。

作为行向量,同样的二维向量的表示形式是:

大型语言模型入门:深入浅出理解“Embedding”

行向量的形式常用于描述矩阵中的一行,特别是在处理多个向量时,可以将它们组织成一个矩阵的多行。

在空间直角坐标系中,表示一个三维空间向量,需要三个方向的坐标

例如,一个三维向量:

大型语言模型入门:深入浅出理解“Embedding”

其中 T 表示转置,将行向量变为列向量)在矩阵形式中表示为:

大型语言模型入门:深入浅出理解“Embedding”

在数据科学和人工智能领域,向量的矩阵表示法非常重要,因为它允许我们使用矩阵运算来高效处理大量的数据。比如,在机器学习中,一个常见的操作是计算数据集(每个数据点是一个向量)和一组权重(另一个向量)的点积,以得到预测结果。通过将数据点和权重向量表示为矩阵和列向量,我们可以利用矩阵乘法来一次性计算整个数据集的预测结果,这大大提高了计算效率。

了解了向量后,再看 “Embedding”,其主要作用是将现实世界中的各种离散实体(例如文字、短语或图像等)转换为特征空间内的连续、密集的高维表示形式,即 “Embedding” 向量。这些向量超越了简单的编号方式,通过在保留实体间相似度的基础上进行深层次的特征提取与编码。在机器学习领域,“Embedding” 向量的运用极为广泛,它们不仅仅是将现实世界物体的一个数值映射,而是一种能够保留物体之间相对关系的高度抽象表示。通过细致的训练过程,“Embedding” 技术能够实现将实体准确无误地投射到高维空间中,这为分类、回归和预测等多种机器学习任务提供了强大的支持。

通过 “Embedding” 我们可以用数字向量来“描述”一个对象,这些对象可以是图片、单词等。具体来说,就是将对象转换成一串数字代码。比如,我们可以用三个数字(R, G, B)来表示一个颜色。更广义地讲,“Embedding” 意味着把某些离散的数据点映射到连续的空间中去。更重要的是,这些数字向量本身没有特定的意义,关键在于不同向量之间的相对位置关系。例如,在自然语言处理(NLP)中,最常见的 “Word Embedding” 是给每个单词分配一个 N 维的数字编码,或者说是将单词映射到 N 维空间里。这样的设计目的是让含义相近的单词在这个空间中的“距离”更近。

在大型语言模型(Large Language Models, LLMs)中,“Embedding” 是一项核心技术,它将单词、短语或者其他类型的输入转换为高维空间中的向量。这些向量能够捕捉到语言的丰富语义和句法信息,并且对于模型训练和推理至关重要。以下是一些在LLMs中常用的 “Embedding” 技术实现:

1. Word Embeddings

  • Word2Vec: 利用上下文来预测当前单词(Continuous Bag of Words, CBOW)或使用当前单词来预测上下文(Skip-Gram)。
  • GloVe (Global Vectors for Word Representation): 结合了全局矩阵分解和局部上下文窗口的优点,通过共现矩阵来构造词向量。

2. Subword Embeddings

  • Byte Pair Encoding (BPE): 一种数据压缩技术,被普遍应用于NLP中处理未知词或稀有词的情况。通过迭代合并频繁出现的字节对来生成词汇表。
  • SentencePiece: 一个类似BPE但更灵活的工具,可以直接在原始文本上学习subword单位(不需要预先进行空格分词)。

3. Positional Embeddings

由于Transformer架构(例如BERT, GPT等)本身不具备处理序列顺序的能力,因此位置嵌入被引入来给模型提供位置信息。

  • Absolute Positional Embeddings: 给每个位置分配一个唯一的嵌入,以编码序列中词汇的位置信息。
  • Relative Positional Embeddings: 相较于绝对位置编码,它依据单词之间的相对距离来编码位置信息,从而提高模型的泛化能力。

4. Contextual Embeddings

  • ELMo (Embeddings from Language Models): 使用双向LSTM网络从大规模文本语料库中学习词的表示,能够根据上下文动态调整词的嵌入。
  • BERT (Bidirectional Encoder Representations from Transformers): 通过 Transformer 的编码器结构来学习上下文化的词嵌入,能够考虑到词在不同句子中的含义变化。

5. Transformer-based Embeddings

几乎所有最新的大型语言模型都基于Transformer架构,如:

  • GPT (Generative Pre-trained Transformer): 采用Transformer的解码器结构,主要用于生成任务。
  • T5 (Text-to-Text Transfer Transformer): 将各种NLP任务统一为文本到文本的格式,利用特定的前缀来区分不同任务。

这里主要介绍 “Word Embeddings”,作为一种将单词表示为稠密向量(即嵌入)的方法,其早期形式可以追溯到多个研究和实践。然而,将这一概念推向广泛应用并对当今自然语言处理领域产生深远影响的关键成就之一是 Word2Vec 算法。

Word2Vec 是由 Tomas Mikolov 及其团队在 Google 开发的,他们在2013年发表了两篇开创性论文:“Efficient Estimation of Word Representations in Vector Space” 和 “Distributed Representations of Words and Phrases and their Compositionality”。这两篇论文中详细描述了Word2Vec的两种主要训练模型 Skip-Gram 和 Continuous Bag of Words (CBOW)。

Word2Vec因其高效的训练过程和优异的性能,特别是在处理大规模数据集时,成为了Word Embedding领域的一个里程碑。

分布式表示(Distributed Representation)

Word2Vec 的两个模型比较复杂,在这里不做展开,再往前回溯的话,Geoffrey Hinton 提出的分布式表示(Distributed Representation)可以被视为 Word Embeddings 的理论基础之一。虽然 Hinton 本人在最初提出这个概念时并未专门围绕词嵌入展开,但他的理论和研究对后来 Word Embeddings 的发展产生了重要影响。

分布式表示的核心思想是通过多维空间中的向量来表示对象(如单词、概念等),其中每一维并不代表一个具体的特征,而是多个特征以分布式的方式共同构成了该向量的语义。这使得相似的概念在高维空间中的向量也会彼此接近,从而能够捕获和表示复杂的模式或关系。

在1986年,Hinton与David E. Rumelhart和Ronald J. Williams共同发表了一篇论文,介绍了反向传播算法(backpropagation),这为训练深度神经网络奠定了基础。尽管这项工作直接聚焦于神经网络的学习过程,但其中关于表示学习的概念对于随后Word Embeddings的发展至关重要。

“分布式表示”(Distributed Representation)其实并不是一个具体的算法,而是一种思想或者说框架,用来在机器学习和自然语言处理等领域里表示数据。为了简单易懂地解释这个概念,我们可以把它跟传统的“局部表示”(Local Representation)相比较。

局部表示(Local Representation)

想象你有一个非常简单的任务:将一些水果分类。在局部表示下,每个水果被赋予一个唯一标识符。比如:

  • 苹果 = 1
  • 香蕉 = 2
  • 橙子 = 3

这种方式很直观,但它没有告诉我们关于这些水果之间任何共性或区别的信息。苹果、香蕉和橙子之间看似没有关联,尽管它们都是水果。

分布式表示(Distributed Representation)

现在,我们换一种方式来表示这些水果。我们用几个维度来描述它们,比如颜色、口味和大小。每个水果在这些维度上都有不同的值,比如:

  • 苹果可能在“红色”、“甜”和“中等大小”上都有高分。
  • 香蕉在“黄色”、“甜”和“中等大小”上得分高。
  • 橙子在“橙色”、“酸甜”和“中等大小”上得分高。

通过这种方式,我们不仅知道了每种水果是什么,还了解到了它们之间的相似之处和不同之处。比如苹果和橙子在大小上相似,而香蕉和苹果在口味上相似。

大型语言模型入门:深入浅出理解“Embedding”

水果三维空间示意

应用在词汇上

当我们把分布式表示应用到词汇上时,每个词都被表示为一个高维空间中的点。这个高维空间的每一个维度都代表着某种语言特性,但这些特性并不像水果的颜色那样直观。这些词向量(Word Vectors)能够捕捉到复杂的语言规律,比如词义相近的词在这个空间中会彼此靠近,可以计算出词语之间的距离长短。

例如,在分布式表示中,“国王”和“女王”的词向量会很接近,因为它们在语义上有很多共通之处。进一步地,这种表示方式甚至可以让我们进行向量运算,如“国王” – “男人” + “女人”接近于“女王”,展示了这种表示方法强大的语义捕捉能力。

分布式表示并不是一个算法,而是一种思想或框架,它允许我们以一种高效且含义丰富的方式来表示数据(比如单词)。这种方式与传统的局部表示相比,能提供更深层次的语义理解和强大的计算能力,从而在自然语言处理等领域发挥着重要作用。

Transformer-based Embeddings 的维度

在 Transformer-based Embeddings 中词向量的维度高达 512 各维度,在 Transformer 模型设计中,选择词向量的维度大小是一个重要的设计选择,它影响着模型的性能和计算复杂性。

大型语言模型入门:深入浅出理解“Embedding”

Transformer 模型中使用的 512 维词向量是出于以下几个原因:

  1. 信息容量: 维度大小决定了可以嵌入到每个词向量中的信息量。更高的维度可以捕捉更多的语义和句法信息,但也会增加模型的参数数量和计算负担。
  2. 经验选择: Transformer 模型在设计时通常会参考先前的研究和实验结果。512维在早期研究中被发现是一个在性能和效率之间取得平衡的好选择。
  3. 模型尺度: 词向量维度与模型的其他部分(如注意力多头的数量、前馈网络的维度等)密切相关。为了优化整体模型架构的性能,需要协调这些部分的大小。512维可能是为了与模型中的其他超参数相匹配。
  4. 硬件限制: 更大的词向量维度意味着需要更多的内存和计算资源。512维可能是基于当时可用硬件的一个折中选择。
  5. 通用性: 一定程度上,选择512维也可能是因为它在多种任务中表现良好,从而使得Transformer模型具有很好的通用性和适应性。

总的来说,词向量的维度是根据模型设计者的目标、资源以及在一系列任务上的经验性能测试来决定的。尽管Transformer模型的原始论文使用了 512 维的词向量,但这并不是一个固定的规则,研究人员和开发者可以根据具体任务的需要调整这个参数。实际上,现在有许多变种的Transformer模型使用了不同的词向量维度。

词向量可视化

如果把词的向量维度提高到更高的维度,就需要一种人类可以理解的方式来对词向量做分析和观察。

词向量的可视化是一种将高维词向量投影到低维空间(通常是二维或三维空间)以便于观察和分析的方法。这种可视化技术可以帮助我们理解词向量之间的关系,例如哪些词在语义上是相似的。下面是实现词向量可视化的基本步骤:

1. 训练或获取词向量

首先,你需要有一组词向量。你可以使用预训练的词嵌入模型如Word2Vec、GloVe或者FastText获取它们,也可以自己训练一个模型。

2. 选择要可视化的词

由于可视化整个词汇表可能既不切实际也不易于解读,所以通常会选择一个词的子集进行可视化。这个子集可以是某个特定主题下的词,或者根据词频、相似性等标准选取。

3. 使用降维技术

因为词向量通常是高维的(例如,100维、300维),直接在二维平面或三维空间中表示它们是不可行的。因此,需要使用降维技术将高维数据映射到低维空间。最常用的降维技术包括:

  • 主成分分析(PCA):一种统计方法,通过线性变换将原始数据变换为一组各维度线性无关的表示,通常用于减少数据的维数,捕获数据的主要变动趋势。
  • t-分布随机邻域嵌入(t-SNE):一种非线性降维技术,特别适合将高维数据集降至二维或三维空间以进行可视化。

4. 可视化

使用降维后的数据,在二维平面或三维空间中绘制点图,每个点代表一个词。根据需要,可以调整点的大小、颜色等属性以增强可视化效果。例如,可以根据词性给点着不同的颜色,或者根据词频调整点的大小。

Python中使用t-SNE实现词向量的可视化

下面是一个简单的示例代码,展示如何使用Python的Scikit-learn库进行词向量的t-SNE可视化:

大型语言模型入门:深入浅出理解“Embedding”

下面这张图就是使用 t-SNE 技术对 MNIST 手写数字数据集进行降维处理展示的可视化效果:

大型语言模型入门:深入浅出理解“Embedding”

注:MNIST是一个包含大量手写数字图像的数据集,由美国国家标准与技术研究院(National Institute of Standards and Technology,NIST)收集和发布。该数据集包含了大量由专业人士和普通人手写的数字图片,每张图片的大小为28×28像素,每个像素点的值在0到255之间。

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/178705.html

(0)
上一篇 2025-05-15 07:26
下一篇 2025-05-15 07:33

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信