AI知识库

53AI知识库

学习大模型的前沿技术与行业应用场景


大白话!神经网络Embedding的原理及作用
发布日期:2024-04-01 07:46:05 浏览次数: 2250 来源:数据分析及应用


人工智能的奥义是:“万物皆可Embedding”    --花哥

不知道大家有没有这种感受,在学习各种算法模型时,特别是深度学习模型,少不了嵌入(Embedding)的应用。
嵌入可以说是人工智能最基础的功能。机器学习模型只接受数值组作为输入,字符或者图片首先需要转化成数值组,才能进入模型常用的转化方式有3种:One-hot编码,整数编码,嵌入Embedding)的方法。
  • One-hot编码是最常用的特征表示方法,优点是简单,但是随着特征空间的变大维度爆炸,而且无法学习到词语间的联系。
  • 整数编码(编码数值本身无含义,具有误导性。
  • 嵌入的方法通过学习构造一个低维、稠密的向量,可以更好地学习到字符的表示。常见的框架有,Word2Vec(基于浅窗口的方法), fasttext(基于浅窗口的方法), GloVe(矩阵分解方法+窗口方法)等方式。在表示学习后,相似的词汇在向量空间中是比较的距离接近的。如下图:

接下来,我们一起了解下什么是嵌入,以及它的原理及作用

 

什么是嵌入?

嵌入是将某些数据对象表示为向量,其构造使得数据对象的某些属性被编码到其向量表示的几何属性中。
这非常抽象,但并不像听起来那么复杂。
首先,我们需要介绍一点(很少)的数学知识。向量是两个听起来不同但实际上相同的东西:
  1. 向量是多维空间中的一个点。
  2. 向量是标量值(即数字)的有序列表。
要了解其工作原理,请考虑包含两个数字的列表。例如, (6,4) 和 (2,8) .您可以看到,我们可以将它们视为 x-y 轴上的坐标,每个列表对应于二维空间中的一个点:
如果我们有三个数字,比如 (3,2,5) 和 (4,5,2) ,那么这对应于三维空间中的点:
重要的一点是,我们可以将其扩展到更多维度:四、五、一百、一千,甚至数百万或数十亿。绘制一个有一千个维度的空间是非常困难的,想象一个几乎是不可能的,但从数学上讲,这真的很容易。
例如,点与点 (6,4) (2,8) 之间的距离只是毕达哥拉斯定理的应用。给定两个点 ,它们之间的距离为:
对于 (6,4) 和 (2,8) ,这意味着:
对于三维,我们只是通过添加一个项来扩展公式。对于 a=(3,2,5) 和  b=(4,5,2) :
我们可以将这个公式扩展到任意数量的向量。我们只是添加更多的术语,就像我们从二维到三维一样。
除了距离之外,我们在高维向量空间中使用的另一种测量是两个向量之间角度的余弦。如果您不仅将每个向量视为一个点,而且将其视为原点(由向量指定的点 (0,0,0,...) )的一条线,则可以计算两个向量之间的角度( θ 如下图所示)。
为了计算这一点,我们有另一个公式可以扩展到任意数量的维度。我们知道向量 a 与 b 之间的角度 θ 的余弦为 :
这比看起来要复杂,但并不多。 a⋅b 称为两个向量的点积,很容易计算。如果 a=(3,2,5) 和 b=(4,5,2) ,则:
至于 ‖a‖ 和 ‖b‖ ,这些是向量的长度,即从原点到该点的距离。所以:
因此,要计算  cosθ :
这个余弦对应于大约 39.3° 的角度,但在机器学习中,我们通常会在计算余弦后停止,因为如果两个向量中的所有数字都大于零,那么角度的余弦将在 0 和 1 之间。
这看起来像很多数学,但如果你仔细看一下,你会发现它只是加法、减法、乘法、除法、一个指数和一个平方根。简单但无聊和重复的东西。你实际上不必做任何这些数学运算。我们保留计算机的全部原因就是为了做这种事情。但是你应该明白向量是数字的列表,了解使用向量的概念,并了解无论向量有多少个维度,我们仍然可以做一些事情,比如计算距离和角度。
这一点之所以如此重要,是因为我们在计算机上保存的任何数据也只是一个数字列表。如果我们选择以这种方式看待它,那么每个数据项——数字图片、文本、录音、3D 模型文件,以及任何你能想到的可以放入计算机文件中的东西——都是一个向量。

我们如何为事物分配嵌入向量?

嵌入的目的是将向量分配给数据对象,以便它们在高维空间中的位置对有关它们的有用信息进行编码。数据对象——文本或图像或我们正在处理的任何其他对象——如果我们选择以这种方式看待它们,它们就已经是向量了。这些向量的位置并不能告诉我们任何关于它们的有用信息。
请看以下四张图片:
每个都是 450x450 像素的图像,使用标准 RGB 调色板着色。这意味着图片由 202,500 个像素组成,每个像素的红色、绿色和蓝色值都有一个介于 0 到 255 之间的数字。将其转换为具有 607,500 个维度的向量是微不足道的。
我们可以拍摄任何一对图像并计算它们之间的距离或测量它们的余弦,但苹果不太可能彼此特别接近或与橙子特别远。至少,如果我们使用数百张苹果和橙子的图片,而不仅仅是四张,那是不可能的。
更有可能的是,我们会得到这样的东西:
我们不能画600,000维的图画,所以这张图只用两个维度来证明这一点:我们应该期望苹果和橙子是半随机放置并混合在一起的。
我们希望为每个图像分配一个唯一的嵌入,以便苹果靠近和远离橙子,反之亦然。我们想要这样的东西:
为此,我们构建了一个神经网络(我们称之为嵌入模型),该网络将 607,500 维向量作为输入并输出一些其他向量,通常具有较少的维度。例如,广泛使用的 ViT-B-32 图像嵌入模型将输入图像转换为 512 维嵌入向量。
然后,我们用苹果和橙子的标记图片训练嵌入模型,指示它慢慢调整网络的权重,以分离苹果和橙子的嵌入向量。经过许多周期的训练后,我们预计,当我们将苹果的图片作为输入时,它将输出彼此更接近的向量,而不是当我们将橙子图片作为输入时,它们更接近我们得到的向量。
这些输出向量是嵌入,它们共同形成一个嵌入空间。单个嵌入的位置对有关其相应数据对象的有用信息进行编码:在这种情况下,无论某物是苹果还是橙子的图片。
区分苹果和橙子是一个非常简单的场景,但你可能很容易想象将其扩展到许多功能。
在某些用例中,我们甚至可以构建嵌入,其中我们没有明确说明哪些特征是相关的,我们让神经网络在训练过程中弄清楚。例如,我们可以通过拍摄人脸照片并训练嵌入模型来构建人脸识别系统,以输出将同一个人的照片放在一起的嵌入。然后,我们可以构建一个以嵌入向量为键的人物图片数据库。
我们希望存储的面通过嵌入空间分布:
我们可能期望这个嵌入空间会编码许多我们从未显式训练它编码的特征。例如,它可能会将男性和女性隔离开来:
或者,我们可能会发现人们通过头发的特征聚集在一起,例如秃顶或灰色:
但是我们预计,如果我们在数据库中给它另一张某人的图片,那么该新图片的嵌入将更接近我们存储的该人的图片,而不是其他任何人:
当然,它也会找到长相相似的人,尽管我们希望他们不会像实际上相同的两个人那样亲密:
这突出了嵌入空间的逻辑:输入是多种多样的,但通过将它们转换为嵌入,我们将特征(有时是复杂的、隐藏的、微妙的或不明显的特征)转化为软件可以轻松识别的几何属性。
嵌入空间还可以支持多种输入类型,如文本和图像,从而创建公共嵌入空间,并使您能够在两者之间进行映射。
例如,如果我们有一个带有描述性标题的图片数据库,我们可以共同训练两个嵌入模型(一个用于图像,一个用于文本)以在同一嵌入空间中输出向量。结果是图像描述的嵌入和图像本身的嵌入将彼此接近。
原则上,任何类型的数字数据都可以作为创建嵌入的输入,任何成对的数据类型(不仅仅是文本和图像)都可以用于创建多模态联合嵌入空间。


嵌入有什么用?

我们已经展示了如何使用嵌入进行图像分类和人脸识别,但这还远远没有穷尽所有可能性。例如,从文本描述生成 AI 图像首先为文本和图像构建一个联合嵌入空间,然后,当用户输入文本时,它会计算该文本的嵌入并尝试构建一个将产生附近嵌入的图像。
嵌入通常非常有用,以至于它们在人工智能和机器学习中都可以看到应用。任何需要相似性/差异性评估、依赖于隐藏或不明显的特征,或者需要不同输入和输出之间的隐式上下文相关映射的对象,都可能以某种形式使用嵌入。

结论

嵌入背后的理论甚至并不复杂:它所涉及的只是从数据对象到高维向量空间中的点的映射,让具有共同属性的事物聚集在一起,相似事物有相近的向量数值。使用它们只是向量距离和余弦的问题,这仅仅是简单的数学运算!




53AI,企业落地应用大模型首选服务商

产品:大模型应用平台+智能体定制开发+落地咨询服务

承诺:先做场景POC验证,看到效果再签署服务协议。零风险落地应用大模型,已交付160+中大型企业

联系我们

售前咨询
186 6662 7370
预约演示
185 8882 0121

微信扫码

与创始人交个朋友

回到顶部

 
扫码咨询