嵌入以计算机可以处理的形式表示真实世界的对象,如文字、图像或视频。嵌入实现相似性搜索,是 AI 的基础。
阅读本文后,您将能够:
相关内容
订阅 TheNET,这是 Cloudflare 每月对互联网上最流行见解的总结!
复制文章链接
嵌入是值或文本、图像和音频等对象的表示,旨在供机器学习模型和语义搜索算法使用。它们根据每个物体可能有或可能没有的因素或特征,以及它们所属的类别,将这些物体转化为数学形式。
从本质上讲,嵌入能让机器学习模型找到相似的对象。给定一张照片或一份文档,使用嵌入的机器学习模型就能找到类似的照片或文档。由于嵌入可以让计算机理解单词与其他对象之间的关系,因此嵌入是人工智能 (AI) 的基础。
例如,这个二维空间右上方的文档可能彼此相关:
从技术上讲,嵌入是机器学习模型创建的向量,目的是获取有关每个对象的有意义数据。
在数学中,向量是定义维空间中某一点的数组。从更实际的角度来说,向量就是一串数字,比如 {1989, 22, 9, 180}。每个数字表示对象在指定维度上的位置。
在机器学习中,使用向量可以搜索相似的对象。向量搜索算法只需在向量数据库中找到相近的两个向量即可。
为了更好地理解这一点,想像一下经度和纬度。这两个维度(分别是南北向和东西向)可以指示地球上任何地方的位置。加拿大不列颠哥伦比亚省温哥华市的经纬度坐标可以表示为 {49°15'40"N, 123°06'50"W}。这个包含两个值的列表就是一个简单的向量。
现在,试想找一个离温哥华很近的城市。人们只需查看地图,而机器学习模型则可以查看经纬度(或向量)并找到经纬度相似的地方。本拿比市位于 {49°16'N, 122°58'W},非常靠近 {49°15'40"N, 123°06'50"W}。因此,模型可以正确地得出本拿比在温哥华附近的结论。
现在,试想找一座不但离温哥华近,而且规模相仿的城市。在这个位置模型中,让我们在经纬度之外添加第三个“维度”:人口规模。可以将人口添加到每个城市的向量,并且可以将人口规模视为 Z 轴,而经纬度则是 Y 轴和 X 轴。
现在,温哥华的向量是 {49°15'40"N, 123°06'50"W, 662,248*}。加上这第三个维度,本拿比市就不再与温哥华特别近了,因为它的人口只有 249,125 人*。模型可能会找到美国华盛顿州西雅图市,其向量为 {47°36'35"N 122°19'59"W, 749,256**}。
*截至 2021 年。
**截至 2022 年。
这是一个相当简单的例子,说明了向量和相似性搜索是如何工作的。但是,为了发挥作用,机器学习模型可能需要生成三个以上的维度,从而产生复杂得多的向量。
例如,模型如何分辨哪些电视节目彼此相似,从而可能被相同的人观看?需要考虑的因素有很多:剧集长度、剧集数量、类型分类、共同观众人数、每个节目中的演员、每个节目的首播年份等等。所有这些都可以是“维度”,每个节目都可以用这些维度上的一个点来表示。
多维向量可以帮助我们确定情景喜剧宋飞正传与恐怖剧星期三是否相似。宋飞正传 1989 年首播,星期三 2022 年首播。两部剧的剧集长度不同,宋飞正传为 22-24 分钟,星期三为 46-57 分钟...等等。通过观察它们的向量,我们可以发现这两部剧在电视节目的维度表示中可能占据截然不同的点。
电视节目 | 类型 | 首播年份 | 剧集长度 | 季数(至 2023 年) | 剧集数(至 2023 年) |
---|---|---|---|---|---|
宋飞正传 | 情景喜剧 | 1989 | 22-24 | 9 | 180 |
周三 | 恐怖剧 | 2022 | 46-57 | 1 | 80 |
我们可以用向量来表示这些数据,就像我们用向量来表示经纬度一样,但使用更多的值:
宋飞正传的向量:{[情景喜剧], 1989, 22-24, 9, 180}
星期三的向量:{[恐怖剧], 2022, 46-57, 1, 8}
机器学习模型可能会认为情景喜剧欢乐酒店》与宋飞正传更为相似。该剧类型相同,于 1982 年首播,每集长度为 21-25 分钟,共播出 11 季,275 集。
宋飞正传》的向量:{[情景喜剧], 1989, 22-24, 9, 180}
欢乐酒店的向量:{[情景喜剧], 1982, 21-25, 11, 275}
在我们上面的例子中,城市是经纬度两个维度上的一个点,然后我们添加第三个维度——人口。我们还从五个方面分析了这些电视节目的位置。
在机器学习模型中,电视节目不再是两个、三个或五个维度,可能是一百个或一千个维度的一个点——就看模型想要包含多少个维度。
嵌入是利用深度学习创建向量的过程。“嵌入”是这一过程的输出结果,换句话说,是深度学习模型为该模型进行相似性搜索而创建的向量。
就像西雅图和温哥华的纬度和经度值相近、人口数量也相当一样,彼此相近的嵌入可被视为相似。通过使用嵌入,算法可以推荐相关的电视节目,找到相似的地点,或者像在语言模型中那样,识别哪些词语可能会一起使用或彼此相似。
神经网络是模仿人脑结构的深度学习模型。正如大脑是由神经元组成,神经元之间会相互发射电脉冲一样,神经网络也是由虚拟节点组成的,当它们的输入超过给定的阈值时,就会相互通信。
神经网络由若干层组成:输入层、输出层以及这两个层之间任意数量的“隐藏”层。无论模型是如何定义的,隐藏层都能以多种方式转换输入。
创建嵌入是一个隐藏层。这通常发生在其他层处理输入之前。因此,举例来说,人类不需要定义每个电视节目在一百个不同维度上的位置。取而代之,神经网络中的隐藏层会自动完成这项工作。然后,其他隐藏层可以利用这种嵌入对电视节目进行进一步分析,以找到类似的电视节目。最后,输出层可以推荐观众可能想观看的其他节目。
创建这个嵌入层在开始时需要手动操作。程序员可以向神经网络提供如何创建嵌入、包含哪些维度等的示例。最后,嵌入层可以独立运行——尽管程序员可能会继续对模型进行微调,以产生更好的推荐。
对于大型语言模型 (LLM),例如用于 ChatGPT 等 AI 工具中的模型,嵌入更进一步。除了单词本身之外,每个单词的上下文都成了一种嵌入。可以搜索和分析整个句子、段落和文章的含义。虽然这需要相当大的计算能力,但查询的上下文可以存储为嵌入,为今后的查询节省时间和计算能力。
对于希望使用 Cloudflare Workers 构建 AI 驱动的应用的开发人员,Cloudflare 提供了 Workers AI。此外,Cloudflare 还提供全球分布式向量数据库 Vectorize。这些服务使嵌入生成和查询变得更快、更简单、更经济实惠。这使开发人员能够创建 AI 应用,而无需启动任何后端基础设施。了解有关 Vectorize 和 Workers AI 的更多信息。