查看原文
其他

技术实践:大规模知识图谱预训练及电商应用

PaperWeekly 2022-07-04

以下文章来源于ZJUKG ,作者张文,叶橄强等



本文作者:

张文(浙江大学)、黄志文(阿里巴巴)、叶橄强(浙江大学)、文博(浙江大学)、张伟(阿里巴巴),陈华钧*(浙江大学)


接收会议:

ICDE 2021 


1. 文章导读


本文介绍了浙江大学阿里巴巴知识引擎联合实验室在结构化知识预训练及电商领域应用方面的工作。该项工作的一部分内容将发表于ICDE 2021。

知识广泛存在于文本、结构化及多种模态的数据中。除了通过抽取技术将知识从原始数据中萃取出来以支持搜索、问答、推理、分析等应用以外,另外一种思路是利用数据中本身存在的基本信号对隐藏的知识进行预训练。随着GPT、BERT、XLNET等预训练语言模型在多项自然语言处理领域任务上都刷新了之前的最好效果,预训练受到了各界的广泛关注。预训练的核心思想是“预训练和微调”,例如文本预训练一般包含两个步骤:首先利用大量的自然语言数据训练一个语言模型,获取文本中包含的通用知识信息;然后在下游任务微调阶段,针对不同下游任务,设计相应的目标函数,基于相对较少的监督数据进行微调,便可得到不错的效果。

受预训练语言模型启发,我们将“预训练和微调”的思想应用到了大规模商品知识图谱的表示学习与业务应用中。在阿里电商平台,包含千亿级三元组和300多万条规则的商品知识图谱被构建起来,并为语义搜索、智能问答、商品推荐等众多下游业务任务提供知识图谱服务。

通常知识图谱提供服务的方式是直接透出原始的三元组数据,这会导致以下问题:(1)针对不同任务反复地进行数据选择和查询,存在大量冗余重复性工作;(2)下游任务需要针对自己的任务重新设计知识图谱算法,从头训练模型,由于图谱规模庞大,业务应用迭代周期过长导致效率低下;(3)商品知识图谱本身的不完整性会导致误差传导;(4)直接透出原始三元组存在数据公平性和隐私风险。

为了避免这个问题,使商品知识图谱更方便更有效地为下游任务服务,我们提出了“预训练+知识向量服务”的模式,并设计了知识图谱预训练模型PKGM(Pre-trained Knowledge Graph Model), 在不直接访问商品知识图谱中三元组数据的情况下,以知识向量的方式为下游任务提供知识图谱服务。

我们在商品分类、同款商品对齐以及推荐等多个下游任务上验证了PKGM的有效性,其中在推荐任务上平均达到了 6%的提升,同时在实践中我们还证明了在困难数据尤其是样本较少的数据上提升效果更明显。此外,在电商业务的真实实践中,我们还将知识图谱预训练应用到了商品图片分类、用户点击预测等任务中,任务效果均获得了提升。知识图谱预训练对于具有亿级别节点量级的阿里商品知识图谱显得极为重要,因为这能够避免对庞大的商品知识图谱重复训练,从而能够更高效快速地为下游任务场景提供服务

本文内容较长,特此在次放置后文章节的相关目录。另外因为微信公众号推文的功能限制,暂不支持目录跳转功能。

1. 文章导读
2. 背景知识介绍
    2.1 预训练语言模型
    2.2 知识图谱结构化上下文
3. 商品知识图谱静态预训练模型
    3.1 PKGM预训练
    3.2 PKGM查询模块
    3.3 PKGM知识图谱服务
    3.4 PKGM在下游任务的应用
4. 商品知识图谱动态预训练模型
    4.1 上下文模块和整合模块
    4.2 预训练阶段和微调阶段
5. 部分应用实践及实验结果
    5.1 基于知识图谱预训练的商品分类
    5.2 基于知识图谱预训练的同款商品对齐
    5.3 基于知识图谱预训练的商品推荐
6. 总结
7. 致谢


2. 背景知识介绍


2.1 预训练语言模型


人类的语言是高度抽象且富含知识的,文本数据只是人类大脑中信息处理后的一个载体,所以沉淀的文本数据本身具有大量有价值信息。互联网上沉淀了大规模的自然文本数据,基于这些海量文本,我们可以设计自监督训练任务,学习好的表示模型,然后将这些表示模型用于其他任务。基于这样的思想,最近几年提出的预训练语言模型(Pre-trained Language Model)在许多自然语言处理任务上都被证明有效,并且能够显著提升相关任务的实验结果。

预训练语言模型可以学习通用的语言表示,捕捉语言中内含的结构知识,特别是针对下游任务标注数据量少的低资源场景,采用预训练+微调的模式,能够带来显著的效果提升。预训练语言模型的输入通常是一个文本序列片段,神经编码器会编码输入序列,针对每个输入单元都会编码得到对应的向量表示。区别于传统word2vec词向量,预训练得到的向量表示是上下文相关的,因为向量是编码器根据输入动态计算得到,所以能够捕捉上下文语义信息。

以BERT模型为例,预训练语言模型首先在大型数据集上根据一些无监督任务进行训练,包括下一个语句预测任务(Next Sentence Prediction,NSP)和掩码语言模型任务(Masked Language Model),这个部分被称作预训练。接着在微调阶段,根据后续下游任务,例如文本分类、词性标注、问答系统等,基于预训练好的语言模型进行微调,使得BERT模型无需调整结构、只需调整输入输出数据和训练部分参数,就可以在不同的任务上达到很好的效果。图1左侧部分展示了BERT模型的预训练阶段的结构,右侧部分展示了在多个不同数据集和任务上进行微调的结构示意图。BERT模型具有很好的兼容性、扩展性,并在多种自然语言处理下游任务上达到顶尖的实验效果。


图1:BERT模型的预训练和微调过程的模型结构示意图 

预训练语言模型的优点可被总结如下:
(1)对庞大的文本语料库进行预训练,学习通用语言表示形式并帮助完成下游任务。
(2)预训练提供了更好的模型初始化,通常可以带来更好的泛化性能,并加快目标任务的收敛速度。
(3)可以将预训练视为一种正则化,以避免对小数据过度拟合。


2.2 知识图谱结构化上下文


与文本预训练一样,我们也可以利用知识图谱中的结构化上下文信息对知识图谱中隐含的(结构化)知识进行预训练。

给定一个知识图谱  ,其中  是实体(Entity)的集合,  是关系(Relation)的集合,  是三元组(Triple)的集合。每个三元组  由头实体(head)关系(relation)和尾实体(tail)构成,于是这些三元组集合可以用符号表示为  ,其中头实体  和尾实体  都属于集合  ,关系  属于集合  。

对于某个实体而言,那些包含了该实体若干个三元组的集合往往隐含这个实体丰富的结构和语义特征,例如(姚明,性别是,男性)、(姚明,职业,篮球运动员),(中国篮球协会,主席是,姚明)等三元组能很好的刻画 「姚明」这个实体。类似地,对于某个特定的关系,知识图谱中也拥有着丰富的包含了该关系的三元组集合。我们将其称为结构化上下文三元组(Structure Contextual Triples)集合,或者简称为上下文三元组,并用符号表示为  ,其中  表示某个实体或者某个关系。因此不难看出,在知识图谱中有两种类型的上下文三元组:实体上下文三元组  和关系上下文三元组  。

实体上下文三元组  定义为那些包含实体  的三元组集合,无论这个实体  是某个三元组中的头实体还是尾实体,只要包含了这个实体  的三元组都可以归入这个集合。用符号语言来表示为:  

 
类似地,关系上下文三元组定义为那些包含关系的三元组集合,可以表示为:

  
 
图2:知识图谱中的上下文三元组

为了更直观地展示上下文三元组在知识图谱中的结构,我们画了一张简单的示意图来描述,参看图2。图中的实心圆圈代表实体,与圆圈之间的短线代表关系。虚线框中的蓝色圆圈、橙色圆圈和粉色短线,构成了一个特定三元组,分别代表头实体、尾实体和关系。对于头实体  (蓝色圆圈)来说,他的上下文三元组  就是与蓝色圆圈相连的三元组,即图中用蓝色短线连接起来的两两实体对组成的集合,同理,尾实体  的上下文三元组  即图中用橙色短线连接起来的三元组集合。而对于关系  的上下文三元组  ,图中用平行的、粉色的短线来表示同一种关系,那么用这些粉色短线相连的三元组集合就是我们所期望的关系上下文三元组。


3. 商品知识图谱静态预训练模型

PKGM(Pre-traind Knowledge Graph Model, PKGM)是基于“预训练+知识向量服务”的思路提出的,目的是在连续向量空间中提供服务,使下游任务通过嵌入计算得到必要的事实知识,而不需要访问知识图谱中的三元组。主要包含了两个步骤,首先是商品知识图谱预训练,目标是使预训练后的模型具有进行完整知识图谱服务的能力,其次是以统一的方式为下游任务提供知识向量服务。

具体来说,我们利用知识图谱中的结构化上下文信息进行预训练,来为下游任务提供知识向量,利用知识图谱增强下游任务的效果。知识图谱静态预训练模型的静态体现在为下游任务提供是预训练好的知识图谱嵌入向量表,通过实体或者关系的id能够直接查询获取到其对应的知识向量,可以直接在下游任务中运用和参与计算。将预先训练好的商品知识图谱模型作为知识增强任务的知识提供者,既能避免繁琐的数据选择和模型设计,又能克服商品知识图谱的不完整性。
3.1  PKGM预训练

预训练知识图谱模型上有两种常见的查询(Query)方式:

三元组查询(Triple Query),在给定头实体  、给定关系  条件下,查询预测缺失的尾实体,于是该查询任务可以简写为  。具体的,这个查询任务体用SPARQL可以表示为:


关系查询(Relation Query),用于查询一个项目是否具有给定的关系或属性。关系查询任务是对于给定的某一实体,查询预测与该实体相连的关系,可以简写为  。该查询任务体用SPARQL可以表示为:


因此,考虑到商品知识图谱的不完整性问题,预训练知识图模型应该能够具有以下能力:
(1)对于某一实体,显示该实体是否与其他实体之前存在某指定关系;
(2)给定头实体和关系,查询对应的尾实体是什么;
(3)为给定的实体和关系,如果查询不到尾实体,那么预测缺失的尾实体是什么。

经过预训练,三元组查询模块和关系查询模块可以为任意给定的目标实体提供知识服务向量。更具体地说,一方面,关系查询模块为目标实体提供包含不同关系存在信息的服务向量,如果目标实体具有或应该具有关系,则服务向量将趋于零向量;另一方面,三元组查询模块为目标实体提供包含不同关系的尾实体信息的服务向量。

图3:知识图谱静态预训练模型

对于预训练知识图谱模型PKGM,在该模型预训练好的基础上通过向量空间计算为其他任务提供向量知识服务,具体如图3所示。在预训练(Pre-training)阶段,首先会在在十亿规模的商品知识图谱上对模型进行预训练,使预训练模型具备为三元组查询和关系查询提供知识信息的能力。在服务(Servicing)阶段,对于需要实体知识的任务,PKGM提供包含其三元组信息的嵌入向量,然后将其应用于基于嵌入的知识增强任务模型中。


3.2  PKGM查询模块


基于上述的关系查询和三元组查询这两种查询方式,可以构建对应的模块和评分函数用于模型预训练,我们提出的PKGM主要包含了两个查询模块:三元组查询模块和关系查询模块。

(1)三元组查询模块

对于某个三元组查询  需求,三元组查询模块  会生成一个服务向量将用于表示候选尾部实体。在这里对于某个正确的三元组  ,我们认为在向量空间中头实体  和关系  进行组合可以转化为尾实体  ,并用评分函数  来表示。

自从知识图谱表示学习方法被提出,将实体和关系映射到向量空间的方法被大量的实验证明是有效的,因此在三元组查询模块  中,采用了表示学习中相对简单而有效的TransE模型。每个实体  和每个关系  被编码为嵌入向量,并用粗体字符表示,那么头实体  、关系  和尾实体  对应的嵌入向量可以表示为  、  和  。根据转换模型的假设,对于每个正确的三元组  ,存在  这样的关系,其中这些嵌入向量都是  维的向量,表示为  ,  和  。于是他们的评分函数可以表示为:

  

其中,  符号表示向量  的L1范数。对于正确的三元组,  之和越接近于  越好;相反地,对于错误的三元组,  要尽可能远离  。

(2)关系查询模块

关系查询模块的核心是设计得分函数用于判断头实体是否具有某关系,为此我们设计对每个关系  定义了转化矩阵  ,若  具有以其为头实体并以  为关系的三元组,  可以将  转化为  ,得分函数设计如下:

  

同理,若  不具有且不应具有以其为头实体并以  为关系的三元组,  应尽可能远离  。

最终一个三元组的得分为:

  

训练时我们采用了基于间隔的损失函数。


3.3  PKGM知识图谱服务

经过包含了上述两个查询模块的训练后,可以利用知识图谱预训练模型中的这些已经训练好的模型参数,包括实体嵌入表示、关系嵌入表示和转化矩阵  等,可以为特定任务提供两类对应的知识服务:

(1)三元组查询服务

给定头实体  和关系  ,三元组查询服务可以给出预测的候选尾实体:

  

如果  存在于知识图谱  中,那么  会非常接近于尾实体向量  ,如果知识图谱中不存在包含  和  的三元组,那么  向量表示最有可能的尾实体的嵌入表示  。这在本质上就是三元组补全,是被广泛使用和验证的知识图谱补全任务的具体形式。

(2)关系查询服务

类似于上述的三元组查询服务,关系查询服务能够提供一个向量来表示实体是否存在包含输入关系的三元组:

  

如果知识图谱中具有以为头实体和以为关系的三元组,那么  ;如果知识图谱中没有但应该有以为头实体和以为关系的三元组,那么  ,如果知识图谱中没有且不应该有以为头实体和以为关系的三元组,  应该远离零向量  。

为了读者进行清晰的对比,表1总结了三元组和关系模块在不同阶段的函数。

 

模块
预训练阶段
服务阶段
三元组模块
  

  

关系模块
  
   

表1:PKGM在预训练和知识图谱服务阶段的函数

PKGM具有如下的优势:(1)基于向量空间的知识图谱服务独立于数据本身,避免了数据的直接暴露,有利于保护隐私数据;(2)以向量空间的知识图谱服务代替三元组数据,对下游任务的模型具有更好的兼容性,能够更简单快速地应用于多种任务;(3)PKGM通过计算可以推理出知识图谱中暂未包含但应该存在的三元组,能够极大地克服知识图谱本身的不完整性。

3.4  PKGM在下游任务的应用

在下游任务应用中,给定一个实体  以及  个目标关系,PKGM通过三元组知识图谱服务和关系知识图谱服务提供多个服务向量,可分别表示为:  和  ,下面我们介绍将这些服务向量应用于下游任务模型的方法,我们根据实体的表示个数将下游任务模型分为两类,一类是序列嵌入向量模型,即实体具有多个向量输入,另一类是单个嵌入向量模型,即实体只具有一个向量输入。

对于序列嵌入向量模型,一个实体的输入可以表示为  ,且采用的模型可能为序列模型,为了让原有序列信息与服务向量产生充分的交互,我们建议直接在输入序列后拼接服务向量得到  ,并用  代替  输入原下游任务模型,如图4所示:

图4:将服务向量添加到序列嵌入向量模型尾部的示意图 

对于单个嵌入向量模型,我们将实体的输入向量表示为  ,考虑到单个原始输入向量和多个服务向量之间的平衡,我们建议先将  和  融合为一个向量,可以采用拼接加平均池化的方法得到  ,然后得到  ,并用  代替  输入原下游任务模型。如图5所示:

图5:将服务向量添加到单个嵌入向量模型的示意图



4. 商品知识图谱动态预训练模型


相对于静态预训练模型仅能为下游任务提供已经包含了结构化信息的嵌入向量表(Embedding Table),知识图谱动态预训练模型能够根据下游任务的特征动态调整模型结构和模型参数,能够根据下游任务对于知识图谱中某些特征的倾向性进行微调和适配,具有更好的兼容性和扩展性。


4.1 上下文模块和整合模块

整个知识图谱动态预训练模型主要由上下文模块和整合模块两部分构成,前者获取目标三元组的上下文三元组序列,并将每个上下文三元组的三个嵌入向量融合为一个向量,后者主要整合、交互学习上下文三元组向量序列,挖掘潜在的结构性特征,利用得分函数计算三元组分类任务的效果并用于训练。

(1)上下文模块

上下文模块(Contextual Module,C-Mod)中,给定一个目标三元组  ,可以通过上述章节对结构化上下文信息的定义,得到该三元组的上下文三元组集合:

  

即该目标三元组的头实体  、关系  和尾实体  各自的上下文三元组的并集。然后对于每一个上下文三元组  ,例如目标三元组的第  个上下文三元组  ,需要将原本对应的三个嵌入向量  、  和  编码成一个向量  :

  

其中,  表示向量  、  和  组成的序列,并且向量满足  ,  和  。

对于  中具体编码方式,可以有多种选择,比如简单的单层前馈神经网络。在这里选择Transformer对向量序列进行学习和融合编码,而在将上下文三元组向量序列输入到Transformer之前,需要在  序列之前加入特殊的标记  ,生成得到一个新的序列  ,该序列对应的向量表示为  ,其中  表示标记  对应的向量。

在Transformer最后一层的该标记  对应位置上的向量为充分交互学习后融合了该三元组所有特征的向量,即向量  。那么,头实体  、关系  和尾实体  各自的上下文三元组特征向量序列  可以表示为:

  
  
  

其中,  表示头实体  、关系  或者尾实体  中的某个  的第  个上下文三元组特征向量,而  表示上下文三元组个数。

(2)整合模块

整合模块(Aggregation Module,A-Mod)将给定的一个目标三元组  的上下文三元组向量序列  整合编码输出为对应的整合向量  ,即:

   

为了增强目标三元组  中每个元素对应的上下文三元组在训练过程中的独立性,给每个三元组特征向量都加上一个段向量。具体地,总共有三种段向量:  用于表示头实体  对应的上下文三元组的段向量,类似地,对应于关系  和尾实体  对应的段向量  和  。将上下文三元组特征向量加上段向量后生成新的特征向量:

  

其中,  ,那么三元组特征向量序列也更新为:

   

同时在将  这三者的上下文三元组更新后的特征向量序列拼接在一起输入到整个模块之前,还需加入特定的标记来进一步区分他们三者。类似于上下文模块的  标签,在这里引入  、  和  标签,而他们对应的向量表示为  、  和  ,分别加入到头实体  、关系  或者尾实体  的更新后的上下文三元组特征向量序列之前,得到更新后的输入向量序列 

   

整合模块用另一个不同参数的多层双向Transformer来编码学习输入的向量序列  ,并在训练结束后,取出最后一层Transformer中  、  和  标签对应的向量  、  和  ,表示经过充分整合交互学习后、包含了丰富的知识图谱结构化信息的特征向量。

最后,将得到的这三个向量拼接并经过一个全连接层,融合为一个统一的整合向量:

   

其中,  表示将向量  、向量  和向量  拼接在一起,  是该整合模块的权重矩阵,  是该整合模块的偏置向量。

(3)评分函数和损失函数

根据上述的上下文模块和整合模块,对于目标三元组  可以将评分函数定义为:

  

其中,  是分类权重矩阵,而经过  操作之后得到的  是二维向量,并且满足预测为正确的得分  和预测为错误的得分  之和为1,即:

  

给定构造好的正样本三元组集合  和负样本三元组集合  ,可以基于评分  和标签  进行交叉熵计算得到损失函数  :

  

其中,  是表示三元组  是否正确的标签,当三元组  是正确的,或者说  是正样本三元组集合  的其中一个元素  ,那标签  为1,否则如果  是错误的,标签  为0。

4.2  预训练阶段和微调阶段

类似于自然语言处理中的预训练模型,知识图谱动态预训练模型也包括预训练和微调两个阶段。预训练阶段会对海量的数据进行无监督学习,而微调阶段就相对轻量,对特定任务和特定数据集,模型结构上会有所改变进行适配,并预训练阶段模型参数的基础上再次训练和微调,使之在特定任务上能更快地获得更好的效果。

(1)预训练阶段

在预训练(Pre-training)阶段,动态预训练模型利用三元组分类任务进行训练。三元组分类任务是无监督任务,基于数据库中存在的三元组并将其视为正样本,同时生成替换实体或者关系生成原本数据集中不存在的三元组作为负样本,训练目标为二分类任务,即判断该三元组是否正确。

对于每一个输入的三元组,预训练模型都获取其上下文三元组并进行采样、聚合,通过三元组分类任务训练学习得到其中的结构化信息。预训练阶段输入的是三元组,而用输出的嵌入向量来判断三元组是正确的(True, T)还是错误的(False,F),可以参看示意图6。给定一个目标三元组  ,找到它的上下文三元组并通过上下文模块和整合模块(图中橙色和玫红色的两个模块)将它们输入到知识图谱动态预训练模型中,最后得到了聚合输出表示向量。

图6:动态预训练模型结构示意图

预训练阶段需要用到尽可能大的、甚至全量的知识图谱数据集,这样才能更好地学习到知识图谱中深层次结构化信息,才真正能够帮助到下游任务。例如,BERT模型使用了包含八亿个单词的BooksCorpus数据集和二十五亿个单词的Wikipedia数据集进行预训练,然后两个大小不同的模型,包括1.1亿个参数的BERTBASE模型和3.4亿个参数的BERTLARGE模型,分别都在在16个TPU上训练了四天才完成。

对于知识图谱的数据集而言,难以构造横跨多个不同知识图谱数据集的全量数据集,比如FB15k、WN18、YAGO等,甚至基于他们各自最原始的数据集Freebase和WordNet等都难以直接合并成一个数据集,因为每个数据集中的实体和关系都是以不同的文本和组织方式进行构建的,很难直接建立起不同数据集之间的联系。

当然,我们还是找到了合适的方法去间接构造起一个足够大而丰富的知识图谱预训练数据集:利用对真实世界描述的WordNet数据集,其中包含了名次、动词、形容词和副词等词性的单个词语,最大程度地反映真实场景和语言习惯,建立起不同知识图谱数据集关联的桥梁。而其他知识图谱数据集中的实体或者关系往往是多个单词构成的,可以利用类似于短语包含某些单词的关系构建起实体与实体之前的联系,以及潜在类似的关系。

而在阿里电商知识图谱上,可以直接利用海量商品的属性和属性值等三元组,用预训练模型学习商品知识图谱的结构化信息。商品知识图谱足够大,有着十亿节点级别的商品和千亿级别的三元组,足够可以支撑起预训练的数据需求,并且能够在下游任务中很好地发挥出预训练模型的作用。

(2)微调阶段

在微调(Fine-tuning)阶段中,模型的输入输出结构会根据具体的任务和数据集特性进行调整,同时将调整后的模型在特定数据集上进行微调训练,最后得到符合该特定任务需求并有不错效果的模型。

例如,实体对齐任务的目标是在真实世界中找到本质上是同一个事物或者事件、而在输入的知识图谱数据集中有两种或者多种表示的实体,比如中文语义下的实体对(漂亮的,美丽的)、(睡觉,睡眠)和(狗,犬)等,表达的是相同含义却有不同的文字描述。在这个实体对齐任务上,模型的输入从原来的三元组(head, relation, tail)变为头尾实体对(head, tail),即去掉了关系relation这一项元素,剩下前后两个实体,而更进一步地讲,这两个实体就是判断是否具有相同含义的实体对(entity1, entity2)。相应地,模型的输出部分也需要替换为描述两个实体是否对齐的训练函数,具体可以参考图7(c)。

又如实体类型预测任务,需要找到某个实体所属的类别,而这个类别是存在于知识图谱中的另一个实体,即预测(实体,实体类型)中缺失的实体类型。比如,(老虎,猫科动物)、(中文,语言)和(T细胞,淋巴细胞)等实体类型对。类似于上述的实体对齐任务,实体类型预测任务中的模型输入也变为一个实体对,而输出部分是判断这个实体类型对是否正确的评分函数,参看图7(b)。

图7:在微调步骤中,图中三个模型结构对应于三个不同的训练任务任务


5. 部分应用实践及实验结果


我们在去除了出现次数较低的实体后的商品知识图谱上对PKGM进行了预训练。预训练完成后,我们在多个对知识图谱有需求的下游任务进行效果验证,这包括商品分类、同款商品对齐、商品推荐等以图谱数据服务为基础的任务,还包括可以利用知识图谱增强效果的一些NLP任务,例如商品实体识别、商品属性补齐和关系抽取、商品标题生成等。在这里我们重点介绍了商品实体分类、同款商品对齐、商品推荐三个任务。在实验中我们将只提供三元组服务向量的标记为“PKGM-T”,只提供关系服务向量的标记为“PKGM-R”,两类服务向量都提供的标记为“PKGM-all”。 

5.1 基于知识图谱预训练的商品分类

亿级的商品数据组织依赖于良好的类目体系,因此商品分类在阿里电商平台是一项常见且重要的任务,其目标是将给定的商品分类于类目中对应的类别。商品的标题往往包含了密集的商品信息,因此也常用来作为商品分类的原始信息,基于商品标题,商品分类任务可对应为文本多分类任务,鉴于目前语言预训练模型在文本分类任务上取得了很好的效果,我们将BERT作为基准模型。图8左侧是基准模型BERT,右侧是PKGM增强的BERT模型,这里采用了为序列嵌入向量模型提供知识图谱服务的方式。

图8:商品分类任务模型

我们分别在3个数据集上进行了实验,每个数据集中每个类别最多具有的商品个数最多分别不超过100、50以及20,实验结果如表2:

表2:商品分类任务的结果

从实验结果中可以看到,在预测准确率和Hit@k指标上,融入了知识图谱服务向量的模型BERT 在这三个数据集上都要优于基准模型 BERT 。具体来说,一方面,同时融入了两种服务向量的BERT 模型在Hit@1指标上都有最好的效果;而另一方面,在Hit@3、Hit@10和预测准确率这三个指标上,BERT 和BERT 这两个模型有较好的效果而且他们中的其中一个能达到特定条件下的最好实验效果,这证明了PKGM所提供服务向量的有效性。 

5.2 基于知识图谱预训练的同款商品对齐


由于商品来源不同,对齐同款商品成为了增加数据有效性的重要的任务,其目标是判断给定的两个商品是否为同款商品。商品信息用标题表示,这个任务可对应于同义句识别,我们选取BERT作为基准模型,左侧是基准模型BERT,右侧是PKGM增强的BERT模型,如图9所示。

图9:商品对齐任务模型

我们在女装衬衫(category-1)、头发饰品(category-2)和儿童袜类(category-3)上分别进行了实验,每个数据集中都有上千个同款商品对。同款商品判断准确率如表3所示:

表3:商品对齐任务的准确率指标结果

可以很明显的看出来,BERT 模型在三个数据集都有着最好的效果,有效提升了同款商品识别的效果。

5.3 基于知识图谱预训练的商品推荐


推荐是除了搜索以外将适合的商品呈现在用户面前的重要方式,因此商品推荐也是一项重要的任务,我们针对预测商品和用户交互的下游任务进行了实验,实验中以用户和商品的交互记录图作为输入并预测潜在的交互,是典型的链接预测任务。我们采用了神经协同过滤算法(Neural Collaborative Filtering,NCF)作为基准模型,图10左侧是基准模型NCF,右侧是PKGM增强的NCF模型,这里采用了为单个嵌入向量模型提供知识图谱服务的方式。

图10:商品推荐任务的模型图

我们在来自淘宝的包含约4万商品和3万用户的44万交互记录的数据集上进行了实验,并采用了“leave one out”的方法进行测试。实验结果如表4所示:

表4:商品推荐任务的实验结果

我们可以看出,所有的知识增强模型相对于基准模型在所有评价指标上均有效果提升,提升的结果证明了PKGM能够有效提供仅从用户-商品交互不能分析出的额外信息。

6. 总结


将知识预先训练好,然后融入到各种深度模型或下游任务中或许是未来知识图谱数据应用方式的一种新的发展趋势。本文介绍了我们在大规模知识图谱预训练及电商应用的初步实践,通过三元组和关系模块的设计,让PKGM模型具有在向量空间为下游任务提供知识图谱服务的能力,具有较好的知识图谱数据保护性以及对下游任务的兼容性,同时克服了知识图谱本身的不完整性。我们在多个典型的电商任务上证明了PKGM的有效性,本文限于篇幅,许多实验细节及分析未过多赘述,有兴趣的同学可以阅读原文。本文所介绍的部分内容发表于ICDE 2021。论文中只包含了一部分实践内容,若您对大规模知识图谱预训练感兴趣,欢迎关注我们后续的工作。


7. 致谢


除本文作者以外,参与过商品知识图谱预训练工作的同学还包括浙江大学的邓淑敏、朱渝珊、周虹廷等,以及阿里巴巴的陈辉、钭怀啸等,谢谢你们对本项工作的支持和付出。




🔍


现在,在「知乎」也能找到我们了

进入知乎首页搜索「PaperWeekly」

点击「关注」订阅我们的专栏吧



关于PaperWeekly


PaperWeekly 是一个推荐、解读、讨论、报道人工智能前沿论文成果的学术平台。如果你研究或从事 AI 领域,欢迎在公众号后台点击「交流群」,小助手将把你带入 PaperWeekly 的交流群里。



您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存