乍一看,在在线商店中将搜索查询与商品进行匹配似乎是一项简单且早已解决的问题。然而,当平台上有超过4000万个来自数千家商店的报价时,任务变得复杂得多。为了解决这个问题,Price.ru决定使用自有和开源神经网络。他们成功训练了这些模型吗?
分享有趣经验的是Price.ru首席执行官爱德华·阿什拉夫扬。在开始讲述之前,有必要解释一下在Price.ru中匹配(matching)的作用。 在Price.ru网站上,每个商品类别都有标准型号。每个商品型号会关联几个来自在线商店的报价或优惠(Price.ru术语),这些报价根据价格和卖家提供的其他综合优惠条件进行排序。主要任务是实现匹配,即将商品型号与报价正确对应起来。
例如,在Price.ru上有一个Apple iPhone 14 Pro Max的报价和一个Apple iPhone 14 Pro的商品型号。名称相似,但这是两款不同的手机型号。我们需要系统在我们的数据库中区分这些型号,并正确分配每一个新报价。
Price.ru上的标准型号
乍一看,这项任务很简单——只需比较两段文本并得出结论:它们是否相同。但在大数据量下,仅靠简单的匹配方法无法快速完成:Price.ru有4000万个报价和250万个商品型号。不使用人工智能的任务解决方案
即使不使用机器学习,也可以通过所谓的正则表达式(regexp)来处理文本,这是一种用于查找和替换文本的机制。我们按照模板从包含商品型号名称的字符串中提取相同的名称。但这种方法并不准确:当单词被同义词替换或名称中存在拼写错误时会出现问题。此外,该过程耗时很长——需要为每个类别和品牌编写数千个正则表达式。 测试了这种方法后,我们得出结论,神经网络可以帮助正确解决此类任务,但必须教会它们区分文本。研究适合任务的神经网络
我们做的第一件事是检查是否可以不训练自己的神经网络而仅依靠开源AI来解决此任务。 我们使用了公开可用的类似BERT的神经网络的权重(BERT是Google开发的基于Transformer架构的神经网络模型,目前大多数自动语言处理工具都基于它构建),这些模型是在外部数据(维基百科、经典文学、公共数据集)上训练的。神经网络应通过语义搜索帮助解决问题:将文本字符串转换为向量,在我们的案例中,即将报价名称和型号名称转换为向量并进行关联。 所有候选匹配器都经过测试,以评估其区分嵌入(即词向量表示)质量的能力。结果令人失望——开源神经网络表现不佳。通过互联网可用的最佳模型是 OpenAI 的 text-embedding-ada-002 神经网络。 根据类别不同,它的匹配准确率约为 50-70%,但存在一个严重缺点——该神经网络成本高昂且速度缓慢。 随后,我们通过一种不太寻常的方式解决语义搜索问题——利用类似 ChatGPT 的大型语言模型。 我们进行了以下实验:取名为 Vicuna 的开源 ChatGPT 克隆版,从神经网络中剥离出编码器(负责将单词转换为向量的部分),并使用其输出的嵌入。编码器与 BERT 相同,只是规模巨大——输出维度大几十倍。实验虽有趣,但未达到所需的准确度水平,因此我们继续以传统方式使用文本生成型神经网络。尝试使用大型语言模型(LLM)解决问题
我们将匹配任务转化为相邻的标记分类任务。由于我们仍不愿训练自己的神经网络,因此开始使用 ChatGPT 和 Vicuna 等大型语言模型来完成这一任务。 程序员为大型语言模型 Vicuna 设定了上下文,基于此上下文,它应与用户进行交流:name="planshet_big",
系统="人类与人工智能命名实体识别助手之间的对话。系统的回答严格遵循模板,不包含其他任何内容。系统在给出答案前会进行双重检查。"
"该系统仅能从文本中解析品牌、设备等命名实体,无法处理其他内容。这是答案的模板:'Brand:___\nDevice:___\nEND_OF_ANSWER"
roles=("Human", "Assistant")
messages=(
(
"Human"
"Digma Optima Prime 4 3G Black平板电脑"
)
(
"Assistant"
"品牌名称:Digma\n设备:Optima Prime 4 3G\nEND_OF_ANSWER"
)
输入:
Apple iPad 4 16Gb Wi-Fi+Cellular Retina (iOS/A6X 1400MHz/9.7英寸(2048x1536)/1024MB/16GB/蜂窝网络(3G+4G LTE) 3G (EDGE, HSDPA, HSUPA)) [MD525]
输出:
品牌:Apple
设备:iPad 4 16Gb Wi-Fi
END_OF_ANSWER
训练专属神经网络
我们无法使用开源神经网络。最可能的原因是,为了解决匹配任务,需要在目标使用的同一领域数据上对 BERT 进行训练。于是,我们决定通过在 Price.ru 服务的数据上训练,来创建专属的神经网络。 BERT 的源代码是开放的,这意味着任何人都可以利用它来训练自己的自然语言处理系统及其他任务。目前,我们正在训练的神经网络规模仅为 OpenAI text-embedding-ada-002 的五分之一。同时,它不受速度限制,且根据类别不同,匹配准确率达到 75-95%。BERT 的工作方式
如果简单解释,BERT 就像一个“黑盒”,你输入文本,输出即为向量——嵌入(词向量表示)。准备和训练神经网络需要多长时间
创建自己的匹配系统是一项重大的研究和工程任务。匹配器由多个模块组成,不仅包括处理文本的神经网络,还包括图像模型和梯度提升模型。 目前,我们仅在我们的数据上训练 BERT——这是一个漫长的过程。不能简单地将领域数据导出并加载到神经网络中。必须预先对数据进行预处理:按类别和品牌进行平衡,使文本多样化,去除重复项。如果数据具有多维特征,神经网络将更好地学习模式。如果直接使用原始数据,BERT 虽然可以训练,但效果不佳——仅适用于某些特定类别,而其他类别则根本无法训练。 在配备大型显卡的服务器上,BERT 的直接训练时间(GPU 时间)从三天到数周甚至数月不等。这取决于数据量和所选神经网络架构的大小。市场平台如何解决此类问题
目前,Price.ru 采用传统方式解决匹配问题——与 AliExpress 或“Yandex Market”的做法相同。但我们正在进行一项独立研究,可能会得出不同的结果。 市场平台的 AI 工作是一个复杂的 ML 系统,由不同的神经网络组成,并在工作中采用多种方法。它们使用计算机视觉和自然语言处理。此外,还使用经典的 ML 梯度提升——这是一种机器学习方法,用于减少预测性数据分析中的错误数量。 我们从该系统中选取了一个小元素,但它构成了匹配问题的主要组成部分。总结
1. AI 能够解决匹配问题,但为了达到准确性,需要进行实验并尝试不同的方法。2. 使用开源神经网络是解决匹配问题的错误路径。
3. 在自己的领域上训练神经网络需要更多时间,但会带来更好的结果。
爱德华·阿什拉夫扬,
Price.ru首席执行官。
对于NEW RETAIL

