【论文学习】a deep knowledge-aware network(DKN)

536 阅读6分钟

这是我参与11月更文挑战的第14天

原文链接

简介

a deep knowledge-aware network (DKN)将知识图谱表示方法结合到新闻推荐中,它是一个基于内容的深度推荐框架,用于预测点击率。DKN的关键部件是一个多通道、单词实体对齐(word-entity-aligned)的知识感知卷积神经网络(KCNN),它融合了新闻的语义级和知识级表示。KCNN将单词和实体视为多个通道,并在卷积过程中明确保持它们的对齐关系。此外,为了解决用户的多样化兴趣,DKN中还设计了一个注意力模块(attention module),可以根据当前候选新闻动态聚合用户的历史。

相关概念

知识图谱嵌入

见知识图谱学习

CNN用于句子表示学习

传统的方法通常采用 bag-of-words (BOW) 来表示句子,即使用单词计数统计作为一个句子的特征,但这种方法忽略了句子中的词序特征且容易出现稀疏问题,导致泛化性能较差。

更好的建模句子方法是将给定语料库中的每个句子表示为一个分布式的低维向量。卷积神经网络(CNN)已经大规模地用于计算机视觉研究中,基于CNN模型的句子表示学习是最近的热点。

图2展示了一个有代表性的CNN句子表示学习架构,w1:nw_1:n表示输入的原始句子,句子长度为nnw1:n=[w1,w2,...wn]Rd×nw_1:n=[w_1,w_2,...w_n]\in \mathbb{R}^{d\times n}为输入句子的词嵌入矩阵,wiRd×1w_i\in \mathbb{R}^{d\times 1}为句子中第ii个单词的嵌入,dd表示词嵌入的维度。

image.png

问题形式化

在在线新闻平台,对于给定用户ii,其点击历史为{t1i,...,tNi}\{t^i_1,...,t^i_N\}tji(j=1,...,Ni)t^i_j(j=1,...,N_i)为用户ii点击的第jj个新闻的标题,NiN_i表示用户ii点击新闻的总数。每个标题tt由一串单词t=[w1,...]t=[w_1,...]组成,而在知识图谱中每个单词ww可能和一个实体ee相关联。例如:标题Trump praises Las Vegas medical teamTrump和实体Donald Trump链接, LasVegas同实体Las Vegas链接。

给定用户的点击历史,以及新闻标题中的单词和知识图谱中的实体间的连接,本文的目的是预测一个用户ii是否会点击一个他从来没看过的候选新闻tjt_j

DEEP KNOWLEDGE-AWARE NETWORK, DKN

DKN架构

DKN架构如下图3所示,其输入是候选新闻和用户点击新闻历史。对于每条新闻,都使用一个专门设计的知识感知卷积神经网络(KCNN)来处理其标题并生成嵌入向量,KCNN是传统CNN的扩展,它可以灵活地将知识图谱中的符号知识整合到句子表示学习中。通过KCNN,得到一组用户点击历史的嵌入向量,为了得到用户对当前候选新闻的最终嵌入,使用一种基于注意力的方法,自动地匹配候选新闻与用户的每条点击新闻进,并将用户的历史兴趣按不同权重进行聚合。最后,将候选新闻嵌入和用户嵌入连接起来并输入深度神经网络(DNN),计算用户点击候选新闻的预测概率。 image.png

知识蒸馏

知识蒸馏的过程如图4所示,由四个步骤组成:

  • 为了区分新闻内容中的知识实体,使用实体链接技术,通过将它们与知识图谱中预定义的实体关联来消除文本中提到的歧义。
  • 在此基础上,构造一个子图,并从原知识图谱中提取出它们之间的所有关系链接。
  • 对于提取出来的知识图,有很多知识图谱嵌入方法可以用来做实体表示学习如TransE、TransH等。
  • 学习得到的实体嵌入将作为DKN框架中KCNN的输入。

image.png

为保留原图谱中的结构信息,帮助识别实体在知识图谱中的位置,文中建议为每个实体提取额外的上下文信息。对于实体ee,其上下文定义为:

context(e)={ei(e,r,ei)G or (ei,r,e)G}context(e)=\{e_i|(e,r,e_i)\in \mathcal{G}\ or\ (e_i,r,e) \in \mathcal{G} \}

此处rr指代一个关系,G\mathcal{G}为知识图谱。一个实体及其上下文的例子如图5所示:

image.png

对于给定上下文的实体ee,其上下文嵌入为上下文实体的均值:

eˉ=eicontext(e)eicontext(e)\bar{e}=\frac{\sum_{e_i\in context(e)}e_i}{|context(e)|}

eie_i为通过知识图谱嵌入学到的eie_i的实体嵌入。

知识感知CNN

组合单词和相关实体的一种直接方法是将这些实体视为“伪单词”,并将它们连接到单词序列:

W=[w1w2...wnet1et2...]W=[w_1w_2...w_ne_{t1}e_{t2}...]

此处的{etj}\{e_{tj}\}是与新闻标题相关联的实体嵌入,WW将会被输入CNN中做进一步处理。

然而上面的连接方式是有局限性的,因此在DKN中使用了一个多通道和词实体对齐的KCNN,用于结合词语义和知识信息。KCNN的结构如图3所示,对于每个新闻标题t=[w1,w2,...wn]t=[w_1,w_2,...w_n],使用其词嵌入w1:n=[w1,...wn]\pmb{w}_{1:n}=[\pmb{w}_1,...\pmb{w}_n],引入变换后的实体嵌入:

g(e1:n)=[g(e1)g(e2)...g(en)]g(e_{1:n})=[g(e_1)g(e_2)...g(e_n)]

及变换后的上下文嵌入:

g(eˉ1:n)=[g(eˉ1)g(eˉ2)...g(eˉn)]g(\bar{e}_{1:n})=[g(\bar{e}_1)g(\bar{e}_2)...g(\bar{e}_n)]

作为输入源,gg为变换函数,在KCNN中gg可以是线性的:

g(e)=Meg(\pmb{e})=\pmb{Me}

或是非线性的:

g(e)=tanh(Me+b)g(\pmb{e})=\tanh(\pmb{Me+b})

此处MRd×k\pmb{M}\in \mathbb{R}^{d\times k}为可训练的变换矩阵,bRd×1\pmb{b}\in \mathbb{R}^{d\times 1}为可训练的偏置。

综上可得到多通道输入W\pmb{W}

W=[[w1g(e1)g(eˉ1)][[w2g(e2)g(eˉ2)]...[[wng(en)g(eˉn)]]\pmb{W}=[[\pmb{w}_1g(\pmb{e}_1)g(\bar{\pmb{e}}_1)][[\pmb{w}_2g(\pmb{e}_2)g(\bar{\pmb{e}}_2)]...[[\pmb{w}_ng(\pmb{e}_n)g(\bar{\pmb{e}}_n)]]

应用多个过滤器hRd×l×3\pmb{h} \in \mathbb{R}^{d\times l\times 3}使用不同的窗口大小ll在新闻标题中提取特定的局部模式。关于h\pmb{h}的局部激活值子矩阵Wi:i+l1\pmb{W}_{i:i+l-1}可以写作:

cih=f(hWi:i+l1+b)c^h_i=f(\pmb{h*W}_{i:i+l-1}+b)

s使用max-over-time pooling在输出特征映射上来选择最大特征:

c~h=max{c1h,...,cnl+1h}\tilde{c}^h=max\{c^h_1,...,c^h_{n-l+1}\}

所有特征c~h\tilde{c}^h被连接在一起并作为输入新闻标题tt的最终表示e(t)\pmb{e}(t),即:

e(t)=[c~h1...c~hm]\pmb{e}(t)=[\tilde{c}^{h_1}...\tilde{c}^{h_m}]

mm为过滤器的数量。

基于注意的用户兴趣提取

对于用户ii的点击历史{t1i,...tNii}\{t^i_1,...t^i_{N_i}\},他点击新闻的嵌入可以写作e(t1i),...eNii\pmb{e}(t^i_1),...\pmb{e}^i_{N_i}

对于候选新闻tjt_j要考虑用户ii是否会点击它,为了表征用户的多样化兴趣,使用注意网络来模拟用户点击历史对候选新闻的不同影响。

具体来说,对于用户ii点击过的新闻tkit^i_k和候选新闻tjt_j,首先连接它们的嵌入然后使用一个DNN H\mathcal{H}作为注意网络,用softmax函数来计算归一化影响权重:

stki,tj=softmax(H(e(tki),e(tj)))=exp(H(e(tki),e(tj))k=1Niexp(H(e(tki),e(tj)))s_{t^i_k,t_j}=softmax (\mathcal{H}(\pmb{e}(t^i_k),\pmb{e}(t_j)))=\frac{\exp(\mathcal{H}(\pmb{e}(t^i_k),\pmb{e}(t_j))}{\sum^{N_i}_{k=1}\exp(\mathcal{H}(\pmb{e}(t^i_k),\pmb{e}(t_j)))}

注意网络H\mathcal{H}接收两个新闻标题的嵌入作为输入并输出影响权重。用户ii关于候选新闻tjt_j的嵌入可以被计算为他点击历史新闻标题嵌入的权重和:

e(i)=k=1Nistki,tje(tki)\pmb{e}(i)=\sum^{N_i}_{k=1}s_{t^i_k,t_j}\pmb{e}(t^i_k)

最后,给定用户ii的嵌入e(i)\pmb{e}(i)和候选新闻的嵌入e(tj)\pmb{e}(t_j),用户ii点击新闻tjt_j的概率可以由另一个DNN G\mathcal{G}计算:

pi,tj=G(e(i),e(tj))p_{i,t_j}=\mathcal{G}(\pmb{e}(i),\pmb{e}(t_j))