【论文学习】个性化描述生成KOBE

198 阅读11分钟

Towards Knowledge-Based Personalized Product Description Generation in E-commerce原文链接

源码和数据集链接

简介

在电子商务平台中,高质量的产品描述对于客户体验至关重要,准确而有吸引力的描述不仅能帮助顾客做出明智的决定,还能提高顾客购买的概率。文章提出了一种基于知识的个性化产品描述生成模型(KnOwledge Based pErsonalized, KOBE),用于在线推荐。它扩展了有效的编解码器(encoder-decoder)框架,即:self-attentive Transformer,来生成产品描述。

KOBE由两个主要部分构成:属性融合(Attribute Fusion)和知识合并(Knowledge Incorporation),有效地引入产品属性并融合相关的外部知识,图1显示了基于知识的个性化产品描述生成的示例。

image.png

文章主要有四个贡献:

  • 提出将神经网络方法和序列到序列(Sequence-to-Sequence, Seq2Seq)学习扩展到产品描述的生成中,并基于self-attentive Transformer框架实现学习模型。
  • 提出了一种利用产品属性和外部知识来提高产品描述生成质量的新模型 KOBE
  • 构建了一个新的公开大容量数据集 TaoDescribe,用于生成产品描述,数据收集自淘宝的真实数据。
  • 实验评估和分析表明,文章的方法的性能优于基线模型,能够生成个性化和信息丰富的产品描述。

问题形式化

研究的目标是建立一个能够根据输入文本自动生成产品描述的系统,最基本的,以产品标题作为输入。给定产品标题,用一个输入单词序列表示:x=(x1,...,xn)X\pmb{x}=(x_1,...,x_n)\in X,系统的目标是生产描述:y=(y1,...,ym)Y\pmb{y}=(y_1,...,y_m)\in Y。接着引入属性和知识的定义:

  • 属性:每个产品标题都会和多个属性值关联,例如有ll个属性集合记作:A1,...,AlA_1,...,A_l,对于每类属性,每个产品有其属性值aiAia_i\in A_i。基本上可以表示为:a=(a1,...,al)A1×...×Al\pmb{a}=(a_1,...,a_l)\in A_1\times ...\times A_l。文章中有两个属性集合,A1A_1表示产品的各个方面包括质量、外观等,A2A_2表示用户类别反映用户的兴趣特征。
  • 知识:文中知识表示为原始文本实体的扩展集合WW,在VV中通过命名实体索引。每个实体由命名实体vVv \in V作为键,知识wW\pmb{w} \in W为值,w\pmb{w}为一个单词序列,即w=(w1,...,wu)\pmb{w}=(w_1,...,w_u)

目标问题:给定上述定义,文中研究问题可定义为:基于产品标题x\pmb{x}、属性a\pmb{a}和对应的知识w\pmb{w},生成个性化且信息丰富的产品描述y\pmb{y}

KOBE

KOBE框架除了Transformer框架外,还包含两个模块:属性融合和知识合并,属性融合负责产品属性的集成,包括产品方面和相应的用户类别,和标题表示;知识合并负责整合从知识库中检索到的相关知识。

如图2所示,文中提出的模型由产品标题和属性编码器(attribute encoder)、知识编码器、双注意层(bi-attention layer)、描述解码器(description decoder)和一个输出层组成。

image.png

一个编解码框架 An Encoder-decoder Framework

首先介绍了模型的基本框架,即:Transformer,它基于传统的前馈神经网络和注意机制(attention mechanism)。

Encoder(编码器):编码器接收输入文本,并将其编码为一连串的隐含表示。具体的说,Transformer encoder 接收一个单词序列x=(x1,...,xn)\pmb{x}=(x_1,...,x_n),然后将其出入一个嵌入层e=(e1,e2,...,en)\pmb{e}=(e_1,e_2,...,e_n),除了嵌入层外,还使用位置编码来表示位置信息。文中使用正弦位置编码,然后通过编码层将单词表示转换为深度上下文表示(deep contextualized representations) h=(h1,...,hn)\pmb{h}=(h_1,...,h_n)

在嵌入层之上,编码器按照Vaswani等人的方法堆叠了6个相同的层。以第一层为例,在该层内,输入表示首先通过多头自注意(multi-head self-attention)进行转换。注意分数计算(attention score computation )基于查询Q\pmb{Q}和键K\pmb{K}在对应的值V\pmb{V}上生成一个分布,该机制随分布的变化得到一个V\pmb{V}的期望。计算过程如下:

C=αV α=softmax(f(Q,K))\pmb{C}=\alpha \pmb{V}\\ \ \\ \alpha=softmax(f(\pmb{Q},\pmb{K}))

C\pmb{C}表示注意的输出,α\alpha表示注意分布,ff表示注意分数函数。

对于自注意,首先介绍了单头注意(uni-head attention)的实现,然后介绍多头(multi-head)注意的实现。

对于单头自注意(uni-head self-attention),查询Q\pmb{Q}和键K\pmb{K}和对应的值V\pmb{V}为输入上下文e\pmb{e}的线性转换,具体的说:

Q=WQe,K=WKe,V=WVe\pmb{Q}=W_Q\pmb{e},\pmb{K}=W_K\pmb{e},\pmb{V}=W_V\pmb{e}

此处的WQ,WK,WVW_Q,W_K,W_V为对应的权重。

综上,单头自注意表示CselfC_{self}可以写作:

Cself=softmax(QKTdk)VC_{self}=softmax(\frac{\pmb{Q}\pmb{K}^{\pmb{T}}}{\sqrt{d_k}})\pmb{V}

dkd_k为输入表示e\pmb{e}的规模。

文中使用了基于单头注意的扩展多头注意机制,具体实现方法为:首先用相同的算法生产多个单头表示,将多个单头Cself(i),i{1,...,c}C^{(i)}_{self},i\in\{1,...,c\}连接起来构建成多头注意表示,cc为单头的总数。然后,输出表示被输入到点式前馈神经网络中(Point-Wise Feed-Forward Neu- ral Network, FFN),其计算方法如下所示:

FFN(z)=W2(R2LU(W1z+b1))+b2FFN(z)=W_2(R2LU(W_{1z}+b_1))+b_2

zz为FFN的输入。

Decoder(解码器):和编码器类似,解码器也给堆叠成2个解码层包括:多头自注意和FFN。此外,Transformer的解码器关注与源端的上下文,这是编码器的最终表示h\pmb{h}。此处,为区别于自注意。文中将其命名为上下文注意(context attention)。

Training(训练):Transformer的训练基于极大似然估计的思想,其目的是根据输入序列生成一个序列来逼近目标(target):

P(yx)=t=1mP(yty1,y2,...,yt1x)P(\pmb{y}|\pmb{x})=\prod^m_{t=1}P(y_t|y_1,y_2,...,y_{t-1}|\pmb{x})

x,y\pmb{x},\pmb{y}表示源序列即序列的标签,tt表示解码时间步长。

属性融合 Attribute Fusion

基线编码器-解码器框架的一个限制是,它通常会给出一般和模糊的描述,这些描述通常是无聊和无用的,此外,它不考虑用户的喜好,通常以单调的风格“说话”。为了缓解这些问题,KOBE不仅要考虑产品标题和描述,还要考虑 有味道 的特殊属性,例如领域和用户类别。具体的说,文章希望针对不同的人群创造出不同的“口味”的描述,例如,针对上班族的正式风格,针对青少年的时尚风格等等。

从两个来源获得这些属性:

  • 使用启发式的描述
  • 与描述相关的用户反馈

领域: 产品描述可能包含关于产品不同方面的信息。通过对大数据集的初步研究,发现一个成功的描述通常“关注”产品的一个领域。例如,对于一盏灯,其重点关注的领域可能是“外观”,可以用“美丽”和“精致”等词来描述它的外部特征。基于数据集的统计结果,文章经验地选择了A1|A_1|个方面,如“外观”、“功能”等。由于数据集规模庞大,在数据集中精确地标记每个描述的领域是不可能的。因此使用基于语义相似度的启发式方法从描述中提取领域,每个描述yY\pmb{y}\in \pmb{Y}被一个领域a1a_1标记,基于描述与领域之间的语义相似性。

用户类别:除了领域外,用户类别也是重要属性,这对于进一步为目标用户设计个性化描述非常重要。电子商务设置中,每个用户都被贴上“兴趣标签”,这些标签来自于他/她的基本信息,例如浏览历史和购物记录,文中认为用户最重要的标签是他/她的类别,每个用户被分配到A2|A_2|个类别中的一个。

在理想的条件下,对于数据集中的每个描述y\pmb{y},推荐系统可以获取到对应用户的隐式反馈(点击,驻留时间等)数据。然后,给每个描述分配一个用户类别,根据主要用户组的点击或停留在这个描述上的时间长度。

然而,文章发现在数据集中,用户对产品描述的反馈非常少,这会对用户类别的分配产生干扰。为客服这个问题,文章在其电子商务环境中采集了另一个文本ZZ,这些文本类似于产品描述,但包含更多的用户反馈。然后基于ZZ用CNN-basen 多分类分类器训练了一个模型,它将文本作为输入并预测其属于哪个用户类别。然后,使用分类器MM来标记Y\pmb{Y}并得到每个yY\pmb{y} \in \pmb{Y}的用户类别特征a2a_2

属性融合模型: 由于增加了属性a\pmb{a},上面训练的公式改写为:

P(yx,a)=t=1mP(yty1,y2,...,yt1x,a)P(\pmb{y}|\pmb{x},\pmb{a})=\prod^m_{t=1}P(y_t|y_1,y_2,...,y_{t-1}|\pmb{x,a})

对于嵌入方法,文章首先将属性a1,a2a_1,a_2嵌入得到属性表示ea1,ea2\pmb{e}_{a_1},\pmb{e}_{a_2},对这两个属性的嵌入进行平均获得一个表示eattr\pmb{e}_{attr}。然后对于给定标题嵌入e=(e1,e2,...en)\pmb{e}=(e_1,e_2,...e_n),每个时间戳ii时将属性嵌入添加到词嵌入eie_i中,融合方式如图3所示,该方式也被用于BERT中。

image.png

知识合并 Knowledge Incorporation

基本的产品信息还远远不足以生成有趣的、信息丰富的产品描述,原因是在现实环境中,人们不仅根据产品信息生成描述,还根据他们头脑中关于产品的常识生成描述。受此启发,建议应该将基本信息和相关的外部知识很好的结合起来,因此,文章考虑遵循一般人利用他们的知识来描述产品的过程,将指定产品的基本信息与相关知识联系起来。

具体的说:

  • 首先从知识库中检索出含有产品信息的相关知识,然后对知识进行编码,将知识与产品标题的编码分离开来
  • 在进入解码阶段之前,两个编码的表示都与文中提出的技术集成。这样,译码既可以基于基本信息,也可以基于相关知识。

Knowledge Retrieval(知识检索):知识检索是指从知识库WW中检索产品的相关知识。具体来说,文章从CN-DBpedia中获取输入产品的相关知识,这是一个大规模的中文结构知识图。假设产品标题中每个单词的相关知识都应该与产品本身相关,产品标题x\pmb{x}中的单词是相关知识的搜索项。形式化描述就是:给定一个产品标题x=(x1,...,xn)\pmb{x}=(x_1,...,x_n),匹配每个单词xix_i给一个命名实体viVv_i \in V,它应该是知识图谱中的一个顶点。然后,基于viv_i从知识库WW中检索知识wiw_i。进一步,由于知识库中存在多种描述viv_i的知识概念,文章随机抽取5个候选对象作为每个产品的匹配知识。然后,根据它们的原始顺序(即,它们对应的命名实体在产品标题中出现的顺序)连接这些知识,用一个特殊的令牌<SEP><SEP>分隔。

Knowledge Encoding and Combination(知识编码与组合):检索到的知识和基本信息在某种程度上是不同的,描述了产品的不同方面,应该设计一种适当的机制来结合这两种信息。文章设置了知识编码器(Knowledge Encoder),一个自注意Transformer 编码器,它负责将检索到的知识编码为高级表示u\pmb{u},这里的u\pmb{u}和之前提到的h\pmb{h}类似。然后应用BiDAF(双向注意流,bidirectional attention flow)将两种表征结合起来。

更具体地说,文章从两个方向计算注意:标题对知识的注意和知识对标题的注意,这两种注意都来自于一个共享相似矩阵SRu×dS \in \mathbb{R}^{u\times d},其中标题x\pmb{x}的上下文表示hRn×d\pmb{h} \in \mathbb{R}^{n\times d},知识w\pmb{w}的表示uRu×d\pmb{u}\in \mathbb{R}^{u\times d}

SijS_{ij}表示第ii个标题单词和第jj个知识单词间的相似度,其计算方式为:

Sij=α(hi,uj)RS_{ij}=\alpha(h_i,u_j)\in\mathbb{R}

α\alpha表示两个输入向量间相似性的编码函数。令α(h,u)=wST[h;u;hu]\alpha(h,u)=\pmb{w}^T_S[h;u;h\circ u]wSR3d\pmb{w}_S \in \mathbb{R}^{3d}为一个可训练的权重,dd为上下文表示的维度,\circ表示元素级的乘法,[;][;]表示跨行向量串联,隐式乘法是矩阵乘法。

标题对知识的注意 :表示哪些知识词与某个标题词最相关。用aiRua_i\in\mathbb{R}^u表示在知识词上第ii个标题单词的注意权重。注意力权重通过ai=softmax(Si:)a_i=softmax(S_{i:})来计算,每个参与知识向量为u~i=kaikuk\tilde{u}_i=\sum_k\pmb{a}_{ik}u_k,因此u~Rn×d\tilde{u}\in\mathbb{R}^{n \times d}包含整个标题的参与知识向量。

知识对标题的注意:表示哪些标题词与某个知识词最相关。基于标题器通过b=softmax(max(Si:))\pmb{b}=softmax(max(\pmb{S}_{i:}))来获得注意权重,然后参与标题向量表示为h~i=kbkhk\tilde{h}_i=\sum_k\pmb{b}_{k}h_k,这个向量表示标题中最重要的单词相对于该知识的加权和。

最终的联合知识表示为:[h;u~;hu~;hh~]R4d×T[\pmb{h};\tilde{\pmb{u}};\pmb{h \circ \tilde{u}};\pmb{h \circ \tilde{h}}] \in \mathbb{R}^{4d \times T}