深度解读AI大模型的向量数据库(中)

一、前言

在生成式AI时代(更确切地说,自从 ChatGPT 发布以来),你至少听说过“向量数据库”这个词。如果你不知道它们是什么,没关系,因为这篇文章就是为了详细解释向量数据库的一切。

在上一篇文章《深度解读AI大模型的向量数据库(上)》中提到了什么是向量数据库,以及使用向量数据库的两个案例,如果不了解的可以点击查看,这篇文章主要讲述嵌入的生成,以及BERT模型如何生成嵌入。

二、如何生成嵌入

为了构建面向语言的模型,如何将单词转换为数值向量至关重要。因为这允许我们对单词进行数学处理和操作,并对单词执行各种计算操作。

嵌入的目的是捕获单词之间的语义和句法关系,这有助于模型更有效地理解和推理语言。

在比较早期的时代,嵌入的生成主要是预先训练的静态嵌入来完成的(pre-trained static embeddings)。

事实上,有人会使用深度学习技术在 10 万或 20 万个常用单词上训练嵌入,并将其开源:

开源之后,后续其他研究人员就可以在他们的项目中直接利用这些嵌入。在当时(2013-2017年左右)最受欢迎的框架是:

  • Glove
  • Word2Vec
  • FastText

上面的这些嵌入框架确实在学习单词之间的关系方面显示出了一些有希望的结果。

比如当时有一个实验表明,向量运算 (King – Man) + Woman 返回的跟单词 Queen 比较接近

而事实上,以下关系也被发现是正确的:

  • Paris – France + ItalyRome ≈ Rome
  • Summer – Hot + ColdWinter ≈ Winter
  • Actor – Man + WomanActress ≈ Actress

虽然这些嵌入捕获了相对的单词表示,但存在一个主要限制,考虑以下两句英语:

  • Convert this data into a table in Excel.
  • Put this bottle on the table

在上面两句英语中,table 一词传达了两种完全不同的含义:

  • 第一句的table指的是Excel表格
  • 第二句的table指的是桌子

然而,上面的静态嵌入模型生成的数值向量是一致的!

也就是说,上面的静态嵌入模型没有考虑到一个单词在不同的上下文中可能有不同的用法。

但这在 Transformer 时代得到了解决,从而产生了由 Transformer 支持的上下文嵌入模型,例如:

1、BERT模型

它的核心技术有两个,第一个是使用Masked Language Modeling (MLM) 技术,这项技术可以根据句子周围的单词预测出句子缺失的单词;第二个就是 Next Sentence Prediction (NSP),即预测下一个句子。

2、Distil BERT模型

Distil BERT 是一个简单、有效,且比BERT更加轻量级的版本,体积缩小了 40% 左右。

它利用的是一种常见的机器学习策略,称为师生理论(student-teacher theory),在这种策略下,学生是经过提炼的BERT,而老师则是原始的BERT,学生模型会被建议复制老师模型的行为,具体的就不在这里进行展开了。

三、BERT模型

上文提到,BERT有两个核心技术,分别是 MLM 和 NSP 。

这两个核心技术也被称为 BERT 的预训练步骤,因为它们涉及在大量文本数据语料库上训练模型,然后再根据特定的下游任务对其进行微调(fine-tuning)。

💡

在机器学习模型训练中,预训练是指模型从大量文本数据语料库中学习一般语言表征的初始训练阶段。预训练的目的是使模型能够捕捉语言的语法和语义属性,如语法、上下文和词与词之间的关系。虽然文本本身是无标记的,但 MLM 和 NSP 这两项任务可以帮助我们以有监督的方式训练模型。一旦模型训练完成,我们就可以利用模型在预训练阶段获得的语言理解能力,在特定任务数据上对模型进行微调。

下面的图片描述了微调过程:

ALT接下来,让我们看看 MLM 和 NSP 这两项技术如何帮助BERT模型生成嵌入

4.1 Masked Language Modeling (MLM)

在 MLM 中,BERT 被训练来预测句子中缺失的单词。为此,大多数(不是全部)句子中一定比例的单词会被随机替换为特殊标记[MASK]。

然后,BERT 双向处理这句被屏蔽的句子(就是带有mask标记的),这意味着它会考虑每个屏蔽单词的左右上下文,这也是BERT名称的由来。BERT全称 Bidirectional Encoder Representation from Transformers,即“来自变换器的双向编码器表示法”。

对于每个屏蔽词,BERT 会根据上下文预测原始词应该是什么,它通过在整个词汇表上分配概率分布并选择概率最高的单词作为预测单词来实现这一点。

在训练过程中,BERT 使用交叉熵损失(cross-entropy loss)等技术进行优化,以最大限度地减少预测词和实际屏蔽词之间的差异。

4.2 Next Sentence Prediction(NSP)

在 NSP 中,BERT 被训练来确定两个输入句子是否来自于同一份文档,或者它们是否是来自不同文档的随机配对句子。

在训练期间,BERT 接收句子对作为输入。其中一半是来自同一文档的连续句子(正例),另一半是来自不同文档的随机配对句子(负例)。

然后,BERT 通过学习来预测第二个句子是否紧随原始文档中的第一个句子 ( label 1),或者是否是随机配对的句子 ( label 0)。

与 MLM 类似,BERT 使用二元交叉熵损失(binary cross-entropy loss)等技术进行优化,以最大限度地减少预测标签与实际标签之间的差异。

💡

如果我们回忆上面的 MLM 和 NSP,在这两种情况下,我们一开始都不需要标记数据集。相反,我们使用文本本身的结构来创建训练示例。这使我们能够利用大量未标记的文本数据,这些数据通常比标记的数据更容易获得。

现在,让我们看看这些预训练目标如何帮助 BERT 生成嵌入:

  • MLM:通过根据上下文预测屏蔽词,BERT 学会捕获句子中每个单词的含义和上下文。BERT 生成的嵌入不仅反映了单词的单独含义,还反映了它们与句子中周围单词的关系。
  • NSP:通过判断句子是否连续,BERT 学习理解文档中不同句子之间的关系。这有助于 BERT 生成嵌入,不仅可以捕获单个句子的含义,还可以捕获文档或文本段落的更广泛上下文。

通过一致的训练,模型可以学习句子中不同单词之间的相互关系。它了解哪些单词经常组合在一起以及它们如何融入句子的整体含义。

这个学习过程帮助 BERT 创建单词和句子的嵌入,这些嵌入是上下文化的,与 Glove 和 Word2Vec 等早期嵌入不同:

上下文化意味着嵌入模型可以根据单词使用的上下文动态生成单词的嵌入。因此,如果一个单词出现在不同的上下文中,模型将返回不同的表示形式。

下图准确地描述了 Bank 这个单词的不同用法。

如上图所述,静态嵌入模型 Glove 和 Word2Vec 为 Bank 这个单词生成了相同的嵌入(尽管它有不同含义)。

然而,上下文嵌入模型则不然。事实上,上下文嵌入理解 Bank 一词的不同含义:

  • 银行
  • 斜坡
  • 浅滩

这些上下文嵌入模型解决了静态嵌入模型没有考虑到上下文的局限性,因此,他们可以轻松地将文档、段落或句子转换为捕获其语义和上下文的数值向量,从而响应也会更精准。

0