图 3:搜索查询流程的通用表示
凭借庞大的库存和遍布全球的数百万买家,这种方法可以扩展以提供具有重要意义的亚秒级响应时间。对于所有类型的搜索引擎,这一直是解决信息检索问题的传统方法。目标是尽可能高效和准确地解释查询,以仅基于所提供的输入查询来匹配用户的意图和期望。过去有许多有趣的问题和创新来提高检索精度。然而,它们一直受到纯粹基于文本查询的输入的限制。如果无法用语言表达,我们如何为用户提供最好的能力来表达他们想要的结果?
解决方案动机从家具店橱窗购物的类比中汲取灵感,在同一个空间内可以买到相同家具的不同型号或品牌,我们可以使用户能够根据他们提供的提示探索具有变化的相似物品他们的输入。此输入可以采用他们觉得有趣且与他们正在寻找的东西相似的项目的形式。这种视觉提示使我们能够为用户提供一种识别他们的完美物品的方法。
然后用户可能会在结果中找到更接近他们想要的项目的东西,并再次继续寻找类似的东西并继续旅程。这使他们还可以发现更新的库存,这些库存可能与其原始商品互补,并有可能提高客户的满意度。使用语义相似性 [1] 对 eBay 来说并不新鲜,在 eBay 应用程序中引入了图像搜索,它允许用户根据从手机摄像头拍摄的照片找到外观相同的物品。然而,使用视觉提示来促进视觉发现和库存浏览使用户能够根据他们的风格和偏好有效地导航搜索结果,而无需文本强制过滤器(例如方面)。
从更技术性的角度来看,让我们深入了解简单的 k 最近邻算法 (knn) 的工作原理。knn 算法根据学习阶段的不同因素将项目存储为多维向量。然后,在分类阶段,查询检索最接近该查询项的 k 个(例如:500 个结果)项。
图 4:项目标题的简单表示,具有 2 个维度以说明最近的邻居搜索
由于涉及的规模(截至 2022 年第四季度有 17 亿个房源),训练和启用对高维数据的全面 knn 搜索效率低下且耗时。为了克服这个问题,改为使用近似最近邻 (ANN)搜索,具体说明如下。它们提供了一种更优化的方法来有效地检索邻居,同时将准确性损失降至最低。
上面将项目标题描述为二维向量(图 4)是一种非常简单的表示,因为项目具有高维度的属性,以及大维度的数据来唯一地表示标题文本、方面和图像与项目相关联。
那么这些多维向量到底从何而来,又代表什么?
学习一个项目的向量嵌入在机器学习中,向量是一些关键组件,可作为图像或文本等更复杂对象的表示。将向量视为编码对象中包含的最显着信息的压缩编码或散列更容易。向量对于这个目的是实用的,因为它们可以在许多不同的维度上表达,也因为向量上的操作可以在 GPU 内很好地扩展。
从这里开始,我们将向量称为表示。一种更传统的表示形式称为词嵌入。顾名思义,这是分配给每个感兴趣的词的独特嵌入。创建词嵌入的方法有很多种,但最流行的方法之一是通过一种称为“共现”的方法。共现断言出现在同一文本附近的词本身应该具有相似的词嵌入。例如,“我的宠物猫喝牛奶”和“我的宠物狗喝水”表明“猫”和“狗”应该有相似的嵌入,因为它们都与“宠物”和“饮料”这两个词相邻。
与每个词相关联的确切向量不是单独定制的。相反,我们的机器学习模型会查看大量文本数据并尝试为我们生成它们。出于本项目的目的,我们不需要单个词的嵌入。相反,我们专注于获取图像和标题的嵌入。
如果表示是压缩编码/哈希,那么模型就是哈希函数。它们的目的是获取原始数据并输出向量。我们使用在 eBay 开发的深度学习模型来生成图像和文本表示,以解决此处详细描述的 eProduct [2] 挑战。该深度学习模型经过训练以表示可以为每种模态独立生成嵌入的多种模态。
在图 5 中,一方面是使用任何基础 CNN 模型的图像编码器,例如 Resnet-50 [4],另一方面是文本编码器,例如 BERT [3]。该模型通过考虑一批固定数量的列表进行训练,其中每个列表由图像和标题组成。每个列表都使用多模式模型的各自组件进行编码。该模型然后尝试将来自同一列表的向量推得更近,并将所有其他对推开。相应的损失函数称为匹配或对比损失(图 6)。
图 5:生成多模态嵌入的模型架构的简化表示
这是训练此类模型的实用方法,因为它不需要收集任何额外的人工标记数据,并且受到 CLIP [5] 模型的启发。这种类型的学习称为自我监督学习。我们可以通过查看图像从同一列表中预测标题的程度来衡量模型性能。
图 6:批次和负采样中匹配图像和标题的成对点积使用非对角线组合表示。这映射了 BERT [3] 和 ResNet-50 [4] 的微调,通过使用对比损失学习表示来共同嵌入到共享空间中。
为了衡量该模型的性能,使用小批量,将标题与批量中的一个图像进行比较,即,将单个图像嵌入与小批量中的标题嵌入进行比较。仅当正确的标题嵌入最接近查询图像时,试验才会成功。对许多批次进行这些试验,并计算总体精度。
训练和推理流程模型训练需要大量的图像-标题对数据集,最近售出的列表被用作训练数据集,作为高保真和内聚的数据。多模态模型通过随机和迭代地将数据分成称为批次的数据包并计算匹配损失来进行训练。每次传递数据都称为一个纪元。使用超参数调整对多个模型进行了评估,以优化图像到标题的准确性,然后选择了性能最高的模型。
随着 kNN 搜索对于高维向量变慢,嵌入维度在准确性中起着关键作用。基于图像到标题精度性能和嵌入大小之间的权衡,我们确定了提供足够性能速度且精度损失不多的嵌入维度。