新零售智能引擎事业群出品
背景
店铺搜索是淘宝搜索的一个组成部分,目前淘宝有近千万的店铺,7日活跃店铺也达到百万级别。店铺搜索场景拥有日均千万级别UV,引导上亿的GVM。
PC端和移动端可以通过如下图中的tab点击后可以进入。
在淘宝平台上,绝大多数被曝光的都是高频的查询词或者商品(店铺),这就会导致所谓的长尾现象。下图中我们统计了query和店铺的出现频次和rank的关系。其中纵坐标是一天内搜索query/曝光店铺数,横坐标是query/店铺的rank。
对于长尾的query和店铺,我们通过构建异构图网络,同时利用同构与异构邻居去增强query和店铺的向量表示,提高长尾的效果。
一些intuition
为什么引入异构信息效果可能会好呢?在训练和预测的过程中我们找到了如下一些例子:
上图中,用户搜索的query和目标店铺在训练数据中并没有共现,语义也无关联。但是可以通过query-item和item-shop将query和shop联系起来。
这是另一个更复杂的例子,上图中query和shop同样在训练数据中没有共现,但是可以通过异构信息联系起来。
上述两个例子单纯使用NCF baseline是无法预测成功的,而下面介绍的DHGAN模型能够预测成功。
异构图构建
我们针对店铺搜索场景,选取了query、shop、item三种结点,并将这三种结点进行组合形成异构边。
例如q2q连接点击同一个店铺的query,shop2item连接属于某个店铺的商品,详细数据统计如下图所示。其中edges为异构边的总数,weighted edges为聚合去重后异构边的总数。
模型
相关术语
异构图: 指拥有多种不同类型结点和多种边关系的图结构,相对应的是同构图,其中仅存在单一类型的节点和边。
图神经网络: 指将神经网络应用于无规则的图结构的一类算法,主要应用于对图节点学习一个语义化的向量,然后将学到的节点表示应用于下游任务,如节点分类,链路预测等。
注意力机制:广泛应用于自然语言处理与计算机视觉的一种模仿人类注意力的计算机制,其核心目标是从众多信息中选择出对当前任务目标更关键的信息。
模型概述
我们提出对偶图注意力网络(dual heterogeneous graph attention network (DHGAN))来解决长尾问题。模型首先通过用户在店铺搜索和商品搜索中的行为日志数据来构建异构图网络,然后同时挖掘并利用查询词/店铺在异构图中的同构与异构邻居,利用这些相邻结点来增强自身的向量化表达,接着通过迁移商品搜索中的知识与数据,利用商品标题来弥补用户搜索查询词与店铺名称之间的文本语义鸿沟,最后融入多种用户特征来实现搜索召回结果的个性化。
模型细节
总体框架
模型总体框架是一个双塔结构(two tower),如下图所示
其中双塔的左边输入是用户和query,包含同构与异构邻居、商品搜索的成交商品标题之后等信息,通过DHGAN和TKPS两个模块将聚合为一个向量(请参考下文的详细介绍),双塔右侧的输入是shop,与query用到的信息类似,也同样通过DHGAN和TKPS两个模块聚合为一个向量。最终在双塔架构的顶端利用向量内积(inner product)来衡量相关度,并以此作为召回店铺的分数依据。
DHGAN模块
DHGAN全称为dual heterogeneous graph attention network,如上图所示,该模块利用同构与异构邻居去增强query和店铺的向量表示。
以用户查询词(query)为例,我们首先挖掘到它的同构邻居(query neighbors)与异构邻居(shop neighbors),然后通过作用于两种邻居的层次图注意力网络(Attention Net),第一层注意力网络分别融合(fusing)同构信息(homogeneous information)与异构信息(heterogeneous information),其中同构信息的融合直接采用注意力网络,而异构信息的融合采用heterogeneous neighbor transformation matrix (HNTM)将query映射到shop所在的向量空间。第二层注意力网络进而对两种类型的信息进行融合(fusing homo-heterogeneous information),最终达到同时利用同构与异构邻居增强自身表达的效果。作用于店铺(shop)的层次图注意力网络结构与作用于查询词的完全相同,只是网络参数相异。
TKPS模块
如上图所示,同样以用户查询词为例,首先迁移商品搜索中的知识进来,即利用同样的查询词在商品搜索下的成交商品标题(item neighbors title),然后对查询词文本(target query text)和邻居商品标题进行文本向量化,通过一个池化(pooling)操作得到其向量表示,最后通过聚合(aggregation)商品标题,和查询词自身进行拼接&转换(concatenation & transformation)得到加强化的查询词文本向量表达。对于店铺(shop),则利用店铺中的商品文本信息来强化店铺的文本向量表达。
Loss定义
我们的模型的基础loss为传统的交叉熵,定义如下
直觉上,无论是query还是shop的邻居结点,都应该和query和shop有一定的相似性,因此除了交叉熵,我们还定义了一个Neighbor proximity loss,如下所示:
其中h_i为当前结点,h_j为h_i的邻居结点作为正样本,h_k为随机采样的结点作为负样本。
模型最终的loss是上述两个loss加上正则化,分别通过alpha和lamda参数进行控制。
实验
离线效果
离线数据集构建
为了证明DHGAN模型补充长尾数据信息的优势,我们除了对所有测试数据进行测试,还构造了hard和long tail两种特殊的数据集。其中hard数据集选取在训练数据中没有出现的query-shop对,而long tail数据集选取仅在训练数据集中出现一次的query和仅出现一次的shop。详细数据集统计如下图所示,其中interactions为训练/测试数据中正例的条数,queries、shops、items、users分别为训练/测试数据中的数量。需要注意的是,为了避免特征穿越的问题,我们在测试时并没有用到item信息。
总体效果
我们选取了11种baseline进行比较,并测试了DHGAN加入个信息化信息和未加入个性化信息(DHGAN_{NP})的版本,最终实验结果如下:
可以看出,DHGAN模型在测试全集中各项指标有1%的提升,而在hard和long tail两种模型专注优化的数据集各项指标上有4~8%的提升。
消融实验
下图中,w/o homo 表示去掉 q2q & s2s, w/o hete表示去掉 q2s & s2q, w/o item表示去掉 q2i & s2i,可以看出,不同种类的异构信息均对模型有一定提升,其中item异构信息对模型提升最明显。
超参数分析
我们也对邻居的个数和loss weight alpha进行了分析。下图可以看出,这两个参数需调整才能达到最好效果,最终模型邻居数目均设为6,alpha设为0.001
总结
店铺搜索召回面临长尾问题和语义鸿沟,为了解决该问题,我们在店铺搜索召回场景对偶图注意力网络(DHGAN),补充语义,取得更好的召回效果。目前模型user侧仅包含profile信息,未来尝试将user-item,user-shop等异构信息引入模型进一步提升效果。
更多数据挖掘内容查看:《KDD论文精华解读》