技术实践:大规模知识图谱预训练及电商应用
本文作者:
张文(浙江大学)、黄志文(阿里巴巴)、叶橄强(浙江大学)、文博(浙江大学)、张伟(阿里巴巴),陈华钧*(浙江大学)
接收会议:
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 知识图谱结构化上下文
与文本预训练一样,我们也可以利用知识图谱中的结构化上下文信息对知识图谱中隐含的(结构化)知识进行预训练。
图2:知识图谱中的上下文三元组
3. 商品知识图谱静态预训练模型
PKGM(Pre-traind Knowledge Graph Model, PKGM)是基于“预训练+知识向量服务”的思路提出的,目的是在连续向量空间中提供服务,使下游任务通过嵌入计算得到必要的事实知识,而不需要访问知识图谱中的三元组。主要包含了两个步骤,首先是商品知识图谱预训练,目标是使预训练后的模型具有进行完整知识图谱服务的能力,其次是以统一的方式为下游任务提供知识向量服务。
具体来说,我们利用知识图谱中的结构化上下文信息进行预训练,来为下游任务提供知识向量,利用知识图谱增强下游任务的效果。知识图谱静态预训练模型的静态体现在为下游任务提供是预训练好的知识图谱嵌入向量表,通过实体或者关系的id能够直接查询获取到其对应的知识向量,可以直接在下游任务中运用和参与计算。将预先训练好的商品知识图谱模型作为知识增强任务的知识提供者,既能避免繁琐的数据选择和模型设计,又能克服商品知识图谱的不完整性。
3.1 PKGM预训练
预训练知识图谱模型上有两种常见的查询(Query)方式:
因此,考虑到商品知识图谱的不完整性问题,预训练知识图模型应该能够具有以下能力:
(1)对于某一实体,显示该实体是否与其他实体之前存在某指定关系;
(2)给定头实体和关系,查询对应的尾实体是什么;
(3)为给定的实体和关系,如果查询不到尾实体,那么预测缺失的尾实体是什么。
经过预训练,三元组查询模块和关系查询模块可以为任意给定的目标实体提供知识服务向量。更具体地说,一方面,关系查询模块为目标实体提供包含不同关系存在信息的服务向量,如果目标实体具有或应该具有关系,则服务向量将趋于零向量;另一方面,三元组查询模块为目标实体提供包含不同关系的尾实体信息的服务向量。
图3:知识图谱静态预训练模型
对于预训练知识图谱模型PKGM,在该模型预训练好的基础上通过向量空间计算为其他任务提供向量知识服务,具体如图3所示。在预训练(Pre-training)阶段,首先会在在十亿规模的商品知识图谱上对模型进行预训练,使预训练模型具备为三元组查询和关系查询提供知识信息的能力。在服务(Servicing)阶段,对于需要实体知识的任务,PKGM提供包含其三元组信息的嵌入向量,然后将其应用于基于嵌入的知识增强任务模型中。
3.2 PKGM查询模块
基于上述的关系查询和三元组查询这两种查询方式,可以构建对应的模块和评分函数用于模型预训练,我们提出的PKGM主要包含了两个查询模块:三元组查询模块和关系查询模块。
(1)三元组查询模块
对于某个三元组查询 需求,三元组查询模块 会生成一个服务向量将用于表示候选尾部实体。在这里对于某个正确的三元组 ,我们认为在向量空间中头实体 和关系 进行组合可以转化为尾实体 ,并用评分函数 来表示。
自从知识图谱表示学习方法被提出,将实体和关系映射到向量空间的方法被大量的实验证明是有效的,因此在三元组查询模块 中,采用了表示学习中相对简单而有效的TransE模型。每个实体 和每个关系 被编码为嵌入向量,并用粗体字符表示,那么头实体 、关系 和尾实体 对应的嵌入向量可以表示为 、 和 。根据转换模型的假设,对于每个正确的三元组 ,存在 这样的关系,其中这些嵌入向量都是 维的向量,表示为 , 和 。于是他们的评分函数可以表示为:
其中, 符号表示向量 的L1范数。对于正确的三元组, 之和越接近于 越好;相反地,对于错误的三元组, 要尽可能远离 。
3.3 PKGM知识图谱服务
PKGM具有如下的优势:(1)基于向量空间的知识图谱服务独立于数据本身,避免了数据的直接暴露,有利于保护隐私数据;(2)以向量空间的知识图谱服务代替三元组数据,对下游任务的模型具有更好的兼容性,能够更简单快速地应用于多种任务;(3)PKGM通过计算可以推理出知识图谱中暂未包含但应该存在的三元组,能够极大地克服知识图谱本身的不完整性。
3.4 PKGM在下游任务的应用
图5:将服务向量添加到单个嵌入向量模型的示意图
4. 商品知识图谱动态预训练模型
相对于静态预训练模型仅能为下游任务提供已经包含了结构化信息的嵌入向量表(Embedding Table),知识图谱动态预训练模型能够根据下游任务的特征动态调整模型结构和模型参数,能够根据下游任务对于知识图谱中某些特征的倾向性进行微调和适配,具有更好的兼容性和扩展性。
4.1 上下文模块和整合模块
整个知识图谱动态预训练模型主要由上下文模块和整合模块两部分构成,前者获取目标三元组的上下文三元组序列,并将每个上下文三元组的三个嵌入向量融合为一个向量,后者主要整合、交互学习上下文三元组向量序列,挖掘潜在的结构性特征,利用得分函数计算三元组分类任务的效果并用于训练。
4.2 预训练阶段和微调阶段
类似于自然语言处理中的预训练模型,知识图谱动态预训练模型也包括预训练和微调两个阶段。预训练阶段会对海量的数据进行无监督学习,而微调阶段就相对轻量,对特定任务和特定数据集,模型结构上会有所改变进行适配,并预训练阶段模型参数的基础上再次训练和微调,使之在特定任务上能更快地获得更好的效果。
(1)预训练阶段
在预训练(Pre-training)阶段,动态预训练模型利用三元组分类任务进行训练。三元组分类任务是无监督任务,基于数据库中存在的三元组并将其视为正样本,同时生成替换实体或者关系生成原本数据集中不存在的三元组作为负样本,训练目标为二分类任务,即判断该三元组是否正确。
图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:商品分类任务的结果
5.2 基于知识图谱预训练的同款商品对齐
由于商品来源不同,对齐同款商品成为了增加数据有效性的重要的任务,其目标是判断给定的两个商品是否为同款商品。商品信息用标题表示,这个任务可对应于同义句识别,我们选取BERT作为基准模型,左侧是基准模型BERT,右侧是PKGM增强的BERT模型,如图9所示。
图9:商品对齐任务模型
我们在女装衬衫(category-1)、头发饰品(category-2)和儿童袜类(category-3)上分别进行了实验,每个数据集中都有上千个同款商品对。同款商品判断准确率如表3所示:
表3:商品对齐任务的准确率指标结果
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. 致谢
除本文作者以外,参与过商品知识图谱预训练工作的同学还包括浙江大学的邓淑敏、朱渝珊、周虹廷等,以及阿里巴巴的陈辉、钭怀啸等,谢谢你们对本项工作的支持和付出。
声明:文章收集于网络,版权归原作者所有,为传播信息而发,如有侵权,请联系小编删除,谢谢!
时间:2021-02-09 23:24 来源: 转发量:次
声明:本站部分作品是由网友自主投稿和发布、编辑整理上传,对此类作品本站仅提供交流平台,转载的目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,不为其版权负责。如果您发现网站上有侵犯您的知识产权的作品,请与我们取得联系,我们会及时修改或删除。
相关文章:
相关推荐:
网友评论:
最新文章
热门文章