KDA

摘要

用户意图是推荐系统需要考虑的一个重要因素,它总是在不同的环境中动态变化。最近的研究(以顺序推荐为代表)开始专注于预测用户想要什么,而不是用户喜欢什么,这种研究更善于捕捉用户意图,并引起了兴趣的激增。然而,用户意图建模并不是无足轻重的,因为它通常受到各种因素的影响,其中项目关系及其时间演化效应非常重要。
例如,手机的消费会对相关商品的需求产生不同的影响:对于补充品,需求可能会在短期内得到提升;而对于替代品来说,长期效果可能会更好,因为用户不需要马上换一部手机。此外,不同关系效应的时间演化在不同领域有所不同,这使得适应性地考虑它们具有挑战性。因此,大多数现有的研究只是通过将项目关系的语义编码到嵌入中来松散地结合项目关系,而忽略了细粒度的时间感知效应。

在这项工作中,我们提出了知识感知动态注意(KDA)来考虑关系效应及其时间演化。具体来说,为了模拟历史关系交互对用户意图的动态影响,我们将历史序列聚合成关系特定的嵌入,其中关注权重由两部分组成。首先,我们测量历史项目和目标项目之间的关系强度,以根据每个关系来建模绝对影响程度。其次,为了模拟关系效应如何随时间漂移,我们创新性地引入了具有可学习频域嵌入的傅里叶变换,以自适应地估计不同关系的时间衰减函数。随后,利用自关注机制导出整个历史序列的最终表示,该表示反映了动态用户意图,并将被应用于生成推荐列表。

面临的挑战

为了建立关系强度模型并实现时间演化的自适应估计,主要有两个挑战:(1)尽管现有的数据集或知识图包含一些项目关系,但看得见和看不见的项目对的确切关系强度是未知的。(2)不同项目关系的时间演化效果在不同场景下差异很大,需要无领域方法自动捕捉动态效果。为了应对这些挑战,我们提出了知识感知动态注意力(KDA),以更好地理解动态用户意图。KDA的主要思想是自适应地将历史序列聚合成多个特定于关系的嵌入(称为关系动态历史嵌入)。注意力权重取决于相互作用的项目和目标项目之间的关系强度和时间间隔。然后通过建模这些关系动态历史嵌入的相互影响来捕获用户意图。


基本方法:

首先,我们通过一个知识图嵌入任务来建模项目-项目关系及其强度。关系项目对的匹配分数被最大化,以将项目关系的语义编码到嵌入中。然后,分数函数将用于测量交互项目和目标项目之间的关系强度,这随后确定历史项目的部分注意力权重。更重要的是,我们创新性地引入傅里叶变换来模拟不同关系交互的不同时间效应。特别地,基于我们的实证研究,我们假设对于数据集中的每种关系类型,存在时间间隔的潜在和连续的时间衰减函数,这决定了关系效应对目标项目的时间演化。然后,我们通过离散傅里叶变换(DFT)参数化每个时间衰减函数的频域表示,称为频率嵌入。以这种方式,可以自适应地估计时间衰减函数,而无需预定义的函数形式。通过在相应的频率嵌入上应用离散傅里叶逆变换(IDFT),可以容易地获得看不见的时间间隔的函数值,这提供了将潜在的和连续的时间效应结合到神经模型中的一般方法。

KDA被用来模拟项目关系及其时间演化效应。我们设计了关系强度和频域嵌入来自适应地确定历史交互的重要性。基于傅立叶的时间衰减函数估计进一步开辟了一条将时间动力学集成到神经模型中的新途径。

我们想要验证历史关系交互的效果在现实世界的数据集中是如何随时间变化的。考虑到很难直接观察到关系交互的时间效应,我们求助于研究用户序列中的交互和它们的关系邻居之间的时间间隔分布(根据定义3.3,最近的关系交互)。实际上,这种分布是时间进化效应的一个很好的指标。例如,如果(手机,箱子,other)并且很多用户在之前消费手机的一天后购买箱子,当时间间隔为一天时,other的影响可能会有一个峰值。

由于时间间隔通常呈现长尾分布,我们使用对数变换来归一化时间间隔 Δ t \Delta t Δt(以秒为单位):
∆ t n = m a x ( 0 , l o g 2 ( ∆ t / 60 ) ) ∆t_n = max(0,log_2(∆t/60)) ∆tn​=max(0,log2​(∆t/60))
所有时间间隔都以相同的方式标准化。然后,对于数据集中的每个关系r,我们可以遍历每个用户序列中的所有交互,以找到它们的关系邻居,并导出相应的时间间隔分布。


KDA的整体结构。

主要有两个模块:(1)项目关系建模学习一个知识图嵌入任务,将项目关系的语义保持在嵌入中;(2)用户意图建模导出了几个特定于关系的历史嵌入,其中我们设计了关系强度和基于傅立叶的时间演化来确定历史交互的动态效果。然后利用自我关注来捕捉不同历史嵌入的相互影响,并导出最终的KDA历史表示,该表示将用于生成排名列表。


User Intention Modeling

用户意图建模

KDA模型的基本思想是在给定用户和目标项目的历史序列的情况下,导出历史表示 m u , i ∈ R d m_{u,i}∈\mathbb{R^d} mu,i​∈Rd,它集成了历史交互的关系和动态效果。然后最终排名得分 y ^ u , i \hat{y}_{u,i} y^​u,i​计算如下:
y ^ u , i = ( p u + m u , i ) q i T + b i \hat{y}_{u,i} = (p_u+m_{u,i})q_i^T+b_i y^​u,i​=(pu​+mu,i​)qiT​+bi​
p u p_u pu​、 q i q_i qi​分别是用户和项目的嵌入, b i b_i bi​是每个项目的偏差项。用户嵌入反映了长期偏好, m u , i m_{u,i} mu,i​反映了短期用户意图。

为了更好地理解动态用户意图,设计了一个两级聚合架构:我们首先在不同关系类型的视图下动态聚合交互项目的嵌入,然后继续聚合这些关系特定的历史嵌入 s i , τ s_{i,\tau} si,τ​,以获得最终的KDA历史表示 m u , i m_{u,i} mu,i​。

Relational Dynamic History Aggregation

关系动态历史聚合

首先,我们关注每种关系类型的关系动态历史聚合(一级聚合)。具体地,对于给定的历史序列 S u T S_u^T SuT​和目标项目 i i i,我们为每个关系类型 τ \tau τ导出关系动态历史嵌入 s i , τ s_{i,\tau} si,τ​:
s i , τ = ∑ ( j , t j ) ∈ S u T I N T ( i , j , τ ) f τ ( ∆ t n ) ⋅ q j s_{i,\tau} = \sum_{(j,t_j)∈S_u^T}INT(i,j,\tau)f_\tau(∆t_n)·q_j si,τ​=(j,tj​)∈SuT​∑​INT(i,j,τ)fτ​(∆tn​)⋅qj​

其中 q j q_j qj​是历史项目的嵌入,关注权重由关系强度分数 I N T ( i , j , τ ) ∈ [ 0 , 1 ] INT(i,j,τ) ∈ [0,1] INT(i,j,τ)∈[0,1]和时间衰减 f τ ( Δ t n ) ∈ [ 0 , 1 ] fτ(\Delta t_n)∈[0,1] fτ(Δtn​)∈[0,1]组成。这里,历史项目和目标项目之间的时间间隔 Δ t = T − t j \Delta t = T - t_j Δt=T−tj​用等式(1)归一化,表示为 Δ t n \Delta t_n Δtn​。关系动态历史嵌入对每种关系类型的历史序列的特定含义进行编码,这将作为获得最终KDA历史表示 m u , i m_{u,i} mu,i​,

Cross-relation Influence Modeling (Self-attention Layer)

交叉关系影响建模

假设我们已经获得了关系动态历史嵌入 s i , τ s_{i,\tau} si,τ​利用自我注意机制来捕捉关系之间的相互影响(二级聚合)。一般来说,常用的点积注意力可以定义为:
A t t e n t i o n = ( Q , K , V ) = s o f t m a x ⟮ Q K T d ⟯ V Attention = (Q,K,V) = softmax \lgroup\frac{QK^T}{\sqrt{d}}\rgroup V Attention=(Q,K,V)=softmax⟮d ​QKT​⟯V

KDA模型中自我注意机制的说明:我们利用自我关注来捕捉不同关系之间的相互影响。自我关注总共有K层,我们在每层都采用了丢弃、剩余连接和层规范化

其中Q、K、V分别代表查询、键和值,d为注意空间的隐藏大小。它计算所有值的加权和,其中权重取决于查询和键的内积。比例因子 d \sqrt{d} d ​是为了避免内积值过大。至于自我关注,查询、键和值都来自同一个对象。那么这个对象的新表示就能够吸收其他对象的信息。在我们的例子中,对象引用不同的关系动态历史嵌入 s i , τ s_{i,\tau} si,τ​。我们将所有M种关系类型的 s i , τ s_{i,\tau} si,τ​叠加为 S i ∈ R M × d S_i∈\mathbb{R}^{M×d} Si​∈RM×d:

S i = ( s i , τ 1 T ; s i , τ 2 T ; … … ; s i , τ M T ) S_i = (s_{i,\tau_1}^T;s_{i,\tau_2}^T;……;s_{i,\tau_M}^T) Si​=(si,τ1​T​;si,τ2​T​;……;si,τM​T​)
然后通过线性投影获得查询、键和值 : Q = S i W Q , K = S i W K , V = S i W V , Q = S_iW^Q,K = S_iW^K,V = S_i^WV, Q=Si​WQ,K=Si​WK,V=SiW​V,

其中投影矩阵 W Q , W K , W V ∈ R d × d W^Q,W^K,W^V∈ \mathbb{R}^{d×d} WQ,WK,WV∈Rd×d .接下来我们可以得到注意表征: A i ∈ M × d A_i∈\mathbb{M\times{d}} Ai​∈M×d
A i = A t t e n t i o n ( Q , K , V ) A_i = Attention(Q,K,V) Ai​=Attention(Q,K,V)

此外,我们可以堆叠几个自我关注层来扩展模型容量。为了赋予每一层非线性,我们应用前馈网络一个ReLU激活函数:
F F N ( A i ) = R e L U ( A i W 1 + b 1 ) W 2 + b 2 FFN(A_i) = ReLU(A_iW_1 + b_1)W_2 + b_2 FFN(Ai​)=ReLU(Ai​W1​+b1​)W2​+b2​
W 1 , W 2 ∈ R d × d W_1,W_2∈\mathbb{R}^{d\times d} W1​,W2​∈Rd×d b 1 , b 2 ∈ R d b_1,b_2∈\mathbb{R^d} b1​,b2​∈Rd我们在不同的注意力层使用相同的线性变换来实现参数共享

堆叠自关注层可能会导致过度拟合和渐变消失等问题,采用丢失正则化、剩余连接和层归一化技术来解决这些问题:
S i k + 1 = L a y e r N o r m ( S i ( k ) + D r o p o u t ( F F N ( A i ( k ) ) ) ) S_i^{k+1} = LayerNorm(S_i^{(k)}+Dropout(FFN(A_i^{(k)}))) Sik+1​=LayerNorm(Si(k)​+Dropout(FFN(Ai(k)​)))
其中 A i ( k ) A^{(k)}_i Ai(k)​由 S i ( k ) S^{(k)}_i Si(k)​得到, S i ( 0 ) S^{(0)}_i Si(0)​定义为 S i ( 0 ) = S i S^{(0)}_i = S_i Si(0)​=Si​。我们首先在前馈网络的输出端应用压差。Dropout 提出用概率 p p p将前一层的输出随机设置为零,这被证明有利于缓解过拟合问题。然后,通过剩余连接添加最后一层的表示,以将低层特征传播到更高层。最后,层规范化是指具有零均值和单位方差的层的输出。这对稳定和加速神经网络训练是有用的。假设 x x x是前一层的输出向量,层归一化定义为:
L a y e r N o r m ( x ) = α ⊗ x − μ σ 2 + ϵ + β LayerNorm(x) = \alpha\otimes\frac{x-\mu}{\sqrt{\sigma^2+\epsilon}}+\beta LayerNorm(x)=α⊗σ2+ϵ ​x−μ​+β
⊗ \otimes ⊗:元素积, μ , σ \mu,\sigma μ,σ是 x x x的均值和方差, α α α和 β β β是学习比例因子和偏差项。我们不像 T r a n s f o r m e r Transformer Transformer那样在 A i ( k ) A^{(k)}_i Ai(k)​上应用层规范化,因为这可能会在一开始破坏关系动态历史嵌入的有意义的加权和。实验结果还表明,中间层规范化导致性能稍差。

Pooling Layer.

汇集层

假设自关注层的总数为 K K K,我们可以得到最终的关系动态历史嵌入 S i ( k ) S^{(k)}_i Si(k)​,然后我们使用一个池层来导出最终的 K D A KDA KDA历史嵌入 m u , i ∈ R d m_{u,i}∈\mathbb{R^d} mu,i​∈Rd是目标感知的历史表示。具体方法可以是(1)平均池,(2)最大池,(3)注意力池。在平均池化的情况下,我们简单地对所有关系类型的嵌入进行平均:
m u , i = 1 M ∑ m = 1 M S i , τ m ( k ) m_{u,i} = \frac{1}{M}\sum_{m=1}^MS^{(k)}_{i,\tau_m} mu,i​=M1​m=1∑M​Si,τm​(k)​
最大池在这些嵌入中应用了元素级最大值: m u , i = m a x ( s i , τ 1 ( K ) ; s i , τ 2 ( K ) ; … … ; s i , τ M ( K ) ) m_{u,i}=max(s_{i,\tau_1}^{(K)};s_{i,\tau_2}^{(K)};……;s_{i,\tau_M}^{(K)}) mu,i​=max(si,τ1​(K)​;si,τ2​(K)​;……;si,τM​(K)​)

注意力池方法考虑用户可能根据用户的特点对不同的关系类型给予不同的关注:
m u , i = s o f t m a x ( [ a ( u , τ 1 ) , a ( u , τ 2 ) , … … , a ( u , τ M ) ] ) S i ( k ) m_{u,i} = softmax([a(u,\tau_1),a(u,\tau_2),……,a(u,\tau_M)])S^{(k)}_i mu,i​=softmax([a(u,τ1​),a(u,τ2​),……,a(u,τM​)])Si(k)​
a ( u , τ ) a(u,\tau) a(u,τ)是用户 u u u与关系种类 τ \tau τ间的注意力得分,定义为:
a ( u , τ ) = h T ( t a n h ( ( p u ⊗ x τ ) W 3 + b 3 ) ) a(u,\tau) = h^T(tanh((p_u\otimes x_\tau)W_3+b_3)) a(u,τ)=hT(tanh((pu​⊗xτ​)W3​+b3​))
线性变换 W 3 ∈ R d × l , B 3 ∈ R l W_3∈\mathbb{R^{d \times l}},B_3∈\mathbb{R^l} W3​∈Rd×l,B3​∈Rl将用户和关系类型嵌入的元素式乘积投影到注意空间中,其中l是注意空间的隐藏大小。 h ∈ R l h∈\mathbb{R^l} h∈Rl随后将隐藏向量投影到注意力得分中。我们将在实验中比较使用不同池化方法时的性能,平均池化是我们模型中的默认方法。在这一阶段,我们已经获得了最终的KDA历史表示 m u , i m_{u,i} mu,i​。然后我们可以根据公式 y ^ u , i = ( p u + m u , i ) q i T + b i \hat{y}_{u,i} = (p_u+m_{u,i})q_i^T+b_i y^​u,i​=(pu​+mu,i​)qiT​+bi​计算排名分数, y ^ u , i \hat{y}_{u,i} y^​u,i​并且将用于对候选项目进行排名并生成 T o p − K Top-K Top−K推荐列表。


Relational Dynamic History Aggregation

关系动态历史聚合

这里我们重点讨论如何确定公式 s i , τ = ∑ ( j , t j ) ∈ S u T I N T ( i , j , τ ) f τ ( ∆ t n ) ⋅ q j s_{i,\tau} = \sum_{(j,t_j)∈S_u^T}INT(i,j,\tau)f_\tau(∆t_n)·q_j si,τ​=∑(j,tj​)∈SuT​​INT(i,j,τ)fτ​(∆tn​)⋅qj​中的注意力权重(一级聚合),这是 K D A KDA KDA的关键创新点。请注意,聚合权重由关系强度分数I N T ( i , j , τ ) NT(i,j,τ) NT(i,j,τ)和时间衰减 f τ ( Δ t n ) f_\tau(\Delta t_n) fτ​(Δtn​)组成。首先计算交互项目与目标项目之间的关联度。另一方面基于傅里叶变换估计时间衰减函数,以控制不同关系效应的时间演化。

Relational Intensity

关系强度

首先,我们讨论了关系强度评分的设计。一般来说,关系数据被组织成 K G KG KG,知识图嵌入是一种流行的从关系数据中学习信号的方法,旨在将知识图嵌入到连续的向量空间中。在知识图嵌入任务中,分数函数 R e l r ( i , j ) Rel_r(i,j) Relr​(i,j)通常被学习来测量三元组 ( i , j , r ) (i,j,r) (i,j,r)的似然性。与知识图中不存在的损坏三元组相比, R R R中真正的三元组将获得更高的分数。

从另一个角度来看,历史项目j和目标项目I之间的分数 R e l r ( j , I ) Rel_r(j,I) Relr​(j,I)也可以被视为关系强度的标志。就特定关系类型而言,具有更高关系强度的交互应该在相应的关系动态历史嵌入中发挥更重要的作用。因此,我们在知识图嵌入任务中直接使用相同的得分函数来计算关系强度得分 I N T ( i , j , τ ) INT(i,j,τ) INT(i,j,τ):
I N T ( i , j , τ ) = e x p ( R e l r ( j , i ) ) ∑ j ′ ∈ S u T e x p ( R e l r ( j ′ , i ) ) INT(i,j,\tau) = \frac{exp(Rel_r(j,i))}{\sum_{j'\in S_u^T}exp(Rel_r(j',i))} INT(i,j,τ)=∑j′∈SuT​​exp(Relr​(j′,i))exp(Relr​(j,i))​
历史项目可以根据它们与目标项目的关系程度进行聚合。我们引入目标项 i i i的对应属性作为关系值。然后关系强度测量历史项目是否与目标项目共享相同的属性。而对于没有详细值的关系类型(例如,also_buy),关系值将是上面中描述的特定值“无”。共享分数函数充当共享嵌入之外的第二个桥梁,这使得我们的 K D A KDA KDA模型能够充分利用在 K G KG KG中学习的知识。关系强度的另一个优点是它可以处理知识图中缺失的关系。

Fourier-based Temporal Evolution

假设每种关系类型 τ \tau τ的时间演化可以由一个潜在的和连续的时间衰减函数 f τ ( Δ t n ) f_\tau(\Delta t_n) fτ​(Δtn​)来培育。时间衰减函数控制关系效果如何随着时间间隔的增加而漂移,这决定了等式(3)中的注意力权重和关系强度。一个直观的解决方案是用预定义的函数形式来估计特定于关系的函数。这里的主要问题是假设时间衰减函数在时域中是连续的,这不能在神经网络中直接优化。如果一个连续函数可以被编码成一个固定大小的向量,那么该模型可以在没有任何先验知识的情况下从数据中学习时间演化。受DFT的启发,我们的关键见解是将 f τ ( Δ t n ) f_\tau(\Delta t_n) fτ​(Δtn​)变换到频域 F τ [ w ] F_\tau[w] Fτ​[w]:
f τ ( Δ t n ) ↔ F τ [ w ] f_\tau(\Delta t_n) \leftrightarrow F_\tau[w] fτ​(Δtn​)↔Fτ​[w]
给定 D F T N DFT \ N DFT N的点, D F T DFT DFT可以将连续函数 f ( t ) f (t) f(t)的有限等间隔样本序列转换为等长序列,该序列是 N N N个等间隔频率的复值函数 F [ w ] F[w] F[w]:
w k = 2 π N k , k = 0 , 1 … … , N − 1 w_k = \frac{2\pi}{N}k,\quad k=0,1……,N - 1 wk​=N2π​k,k=0,1……,N−1
F [ w k ] F[w_k] F[wk​]包含f (t)中频率为wk的正弦波的振幅和相位信息。这样,时域中的连续函数可以表示为频域中的离散函数。这相当于将时域函数编码为复值嵌入,我们称之为频率嵌入。给定频率嵌入,我们可以通过 I D F T IDFT IDFT得到任何输入 t t t的 f ( t ) f (t) f(t)值。接下来,我们描述关于为每个时间衰减函数 f τ ( Δ t n ) f_\tau(\Delta t_n) fτ​(Δtn​)参数化频域表示 F τ [ w ] F_\tau[w] Fτ​[w]的细节。在我们的 K D A KDA KDA模型中,我们给每个关系类型 τ \tau τ一个频率嵌入 F τ ∈ C N F_\tau∈\mathbb{C}^N Fτ​∈CN频域表示,它可以被随机初始化,并将通过损失函数和其他参数一起被优化。对于任何时间间隔 Δ t n \Delta t_n Δtn​,通过对 F τ F_\tau Fτ​应用 I D F T IDFT IDFT得到 f τ ( Δ t n ) f_\tau(\Delta t_n) fτ​(Δtn​):
f τ ( Δ t n ) = 1 N ∑ k = 0 N − 1 F τ [ w k ] e j w k Δ t n f_\tau(\Delta t_n) = \frac{1}{N}\sum_{k=0}^{N-1}F_\tau[w_k]e^{jw_k\Delta t_n} fτ​(Δtn​)=N1​k=0∑N−1​Fτ​[wk​]ejwk​Δtn​
为了便于快速傅里叶变换的优势,我们保证 N N N是 2 2 2的整数次幂。此外,由于时间衰减函数值是实数,我们只保留半正频率(即 F τ F_\tau Fτ​的前 N / 2 个 N/2个 N/2个元素)。当转换回时域时,我们计算这些频率的复共轭 F τ [ w k ] F_\tau[w_k] Fτ​[wk​],并在最后填充它们。这确保了 I D F T IDFT IDFT也能产生真正的价值。即将上式变为:
f τ ( Δ t n ) = 1 N ∑ k = 0 N / 2 − 1 ( F τ ) [ w k ] e j w k Δ t n + F τ [ w k ] ‾ e − j w k Δ t n f_\tau(\Delta t_n) = \frac{1}{N}\sum_{k=0}^{N/2-1}(F_\tau)[w_k]e^{jw_k\Delta t_n}+\overline{F_\tau[w_k]}e^{-jw_k\Delta t_n} fτ​(Δtn​)=N1​k=0∑N/2−1​(Fτ​)[wk​]ejwk​Δtn​+Fτ​[wk​]​e−jwk​Δtn​
对每个关系类型的时间间隔分布应用 D F T DFT DFT,以在开始时初始化 F τ F_\tau Fτ​。假设相互作用和它们的关系邻居之间的时间间隔分布,关系类型 τ \tau τ是 F τ [ x ] F_\tau[x] Fτ​[x],其中 x x x是时间间隔槽的索引, F τ [ x ] F_\tau[x] Fτ​[x]是数据中相应的案例数。我们将归一化时间间隔 Δ t n \Delta t_n Δtn​离散为时隙,如下所示:
x = [ Δ t n ] = [ m a x ( 0 , l o g 2 ( Δ t / 60 ) ) ] x = [\Delta t_n] = [max(0,log_2(\Delta t/60))] x=[Δtn​]=[max(0,log2​(Δt/60))]

槽的总数表示为 X X X​,那么给定 D F T N ≥ X DFT \quad N ≥ X DFTN≥X​​的点,我们可以将 D F T DFT DFT应用于 F τ [ x ] F_τ[x] Fτ​[x]的周期延拓 ( 即 F τ [ x + X ] = F τ [ x ] ) (即F_τ[x +X] = F_τ[x]) (即Fτ​[x+X]=Fτ​[x]):
F τ [ w k ] = ∑ n = 0 N − 1 F τ [ n ] e − j w k n F_\tau[w_k] = \sum_{n=0}^{N-1}F_\tau[n]e^{-jw_kn} Fτ​[wk​]=n=0∑N−1​Fτ​[n]e−jwk​n
上述DFT结果将用于在训练前初始化 F τ F_τ Fτ​。我们将时间间隔分布Fτ[x]的最大值归一化为1,这确保了 I D F T IDFT IDFT的输出在相同的尺度上。

基于离散傅立叶变换的估计方法可以被看作是一种将潜在的和连续的时间函数编码到频域嵌入中的通用方法.对用户特定的时间演化感知进行建模,可以定义一个用户特定的嵌入函数:
f r , u ( Δ t n ) = 1 N ∑ ( F τ [ w k ] + F u [ w k ] ) e j w k Δ t n f_{r,u}(\Delta t_n) = \frac{1}{N}\sum(F_\tau[w_k]+F_u[w_k])e^{jw_k\Delta t_n} fr,u​(Δtn​)=N1​∑(Fτ​[wk​]+Fu​[wk​])ejwk​Δtn​
Item Relation Modeling

项目关系建模

我们学习了一个知识图嵌入任务,将语义保留到项目嵌入中。主要目标是定义评分函数 R e l r ( i , j ) Rel_r(i,j) Relr​(i,j)来衡量三元组 ( I , j , r ) (I,j,r) (I,j,r)的合理性。使用关系的两级层次成分的总和作为其嵌入,得到关系 r = < τ , v > r =< τ,v > r=<τ,v>的表达式为: r = x τ + z v r = x_\tau + z_v r=xτ​+zv​

以这种方式,具有相同类型的关系保持相似的表示,并且值嵌入使得模型保真度能够处理相同关系类型具有不同值的情况。在 D i s t M u l t DistMult DistMult的情况下,它捕获项目对之间特定于关系的交互。得分函数定义为:
R e l r ( i , j ) = q i T d i a g ( r ) q j Rel_r(i,j)=q_i^Tdiag(r)q_j Relr​(i,j)=qiT​diag(r)qj​
中 d i a g ( r ) diag(r) diag(r)表示主对角元素等于 r r r的对角矩阵,为了学习项目关系图中的语义,我们希望对观察到的三元组最大化 R e l r ( i , j ) Relr(i,j) Relr(i,j),对未观察到的三元组最小化 R e l r ( I , j ) Relr(I,j) Relr(I,j)。基于此,成对损耗得到优化:

L r e l = − ∑ ( i , j , r ) ∈ R l o g σ ( R e l r ( i , j ) − R e l r ( i − , j − ) ) L_{rel}=-\sum_{(i,j,r)\in R}log\sigma(Rel_r(i,j)-Rel_r(i^-,j^-)) Lrel​=−(i,j,r)∈R∑​logσ(Relr​(i,j)−Relr​(i−,j−))
Multi-task Learning

多任务学习

对于推荐任务,我们优化成对排序损失
L r e c = − ∑ u ∈ U ∑ i = 2 N u l o g σ ( y ^ u , i − y ^ u , i − ) L_{rec}=-\sum_{u\in U}\sum_{i=2}^{N_u}log\sigma(\hat{y}_{u,i}-\hat{y}_{u,i^-}) Lrec​=−u∈U∑​i=2∑Nu​​logσ(y^​u,i​−y^​u,i−​)

伪代码如下:

其中 σ σ σ表示sigmoid函数,我们随机采样一个负项 i i i。对于每个训练实例。指数 i i i从2开始,因为顺序推荐应该至少有一个历史交互。然后将联合目标函数定义为:
m i n Θ L = L r e c + γ L r e l + λ ∣ ∣ Θ ∣ ∣ 2 min_\Theta L = L_{rec}+\gamma L_{rel}+\lambda ||\Theta||_2 minΘ​L=Lrec​+γLrel​+λ∣∣Θ∣∣2​
其中 Θ \Theta Θ为参数空间, γ γ γ为知识图嵌入任务的系数 , λ ,λ ,λ为正则化系数。

我们提出的KDA模型在所有数据集上都比最佳基线方法有很大改进。背后的原理在于三个部分:(1)我们使用关系强度评分来柔和地聚合历史交互,而不是像RCF那样直接划分序列。(2)设计了一种基于傅里叶的方法,将时间演化效应自适应地融入到模型训练中,不仅有效,而且灵活。(3)利用自我注意机制进一步探索关系之间的相互影响。此外,请注意,不同池化方法在不同数据集上的性能不同,最佳选择也不一致。平均池方法通常会得到有希望的结果,但是最大池在MovieLens-100k中非常强大。注意力集中比RecSys2017中的其他方法好一点,但在其他两个数据集上表现更差(仍然比基线方法好)。因此,具体的方法需要根据数据集来确定,这可能依赖于数据规模和关系的数量。根据我们的经验,平均池和最大池通常是稳定的,因此我们在下面的实验中默认使用平均池。

KDA- 时序推荐中项目关系的时间演化效应相关推荐

  1. OA中项目关系,实体设计,映射实体,增删改查

    =============== 步骤 ================ 1,充分了解需求(包括所有的细节):分析页面等. 2,设计实体/表  正向工程:设计实体 --> 建表(推荐):设计实体 ...

  2. 【Vivado那些事儿】VIVADO中时序报告中WNS,WHS,TNS,THS含义

    VIVADO中时序报告中WNS,WHS,TNS,THS含义 运行"report_timing"或"report_timing_summary"命令后,会注意到 ...

  3. 2018深度学习在个性化推荐中的应用

    深度学习在个性化推荐中的应用 结论 得益于深度学习强大的表示能力,目前深度学习在推荐系统中需要对用户与物品进行表示学习的任务中有着不错的表现,但优势不如图像与文本那么显著[1]. 深度学习与分布式表示 ...

  4. 深度学习在个性化推荐中的应用

    结论 得益于深度学习强大的表示能力,目前深度学习在推荐系统中需要对用户与物品进行表示学习的任务中有着不错的表现,但优势不如图像与文本那么显著[1]. 深度学习与分布式表示简介 深度学习的概念源于人工神 ...

  5. Deep Learning for Matching in Search and Recommendation 搜索与推荐中的深度学习匹配(1 引言)

    #1.1 搜索与推荐的概述 搜索和推荐中的根本问题是从海量信息中识别满足用户信息需求的信息对象.合适时间合适的地点合适上下文.(这个地方得写的专业一点) ##搜索 搜索是一个用户主动输入query(一 ...

  6. 他山之石 | 预训练模型在华为推荐中的应用与探索

    经过多年的技术进步,推荐系统场景已经从最开始的协同过滤,发展到了现在的深度学习为核心的阶段.随着深度学习模型的体量逐渐变大后,其优化的难度也在增大,特别在推理性能上的限制下,最后模型的效果提升受到了很 ...

  7. html中如何写系统时间,在HTML页面获取当前系统时间

    function getCurDate() { var d = new Date(); var week; switch (d.getDay()){ case 1: week="星期一&qu ...

  8. 推荐中的序列化建模:Session-based neural recommendation

    原文网址:https://zhuanlan.zhihu.com/p/30720579?from=timeline 前言:本文对Recurrent Neural Network在推荐领域的序列数据建模进 ...

  9. WSDM 2022 | 中科院、腾讯、北航提出:跨领域推荐中的个性化迁移用户兴趣偏好...

    点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 冷启动推荐一直是推荐系统中一个极具挑战的问题.跨领域推荐系统使用源领 ...

最新文章

  1. 总结MYSQL的优化
  2. 交叉编译qt-everywhere-opensource-src-4.6.2需要的几个包
  3. 内存管理之虚拟页式分配
  4. c2000 汇编语言指令,C2000系CMD文件的配置理解
  5. Ubuntu Touch OTA-12 发布,Ubuntu 移动版本
  6. Python 之详解深拷贝和浅拷贝
  7. EventBus实现 - 发布订阅 - XML加载
  8. ubuntu服务器开放端口_Docker服务开放了这个端口,服务器分分钟变肉机
  9. SEO已死,真的吗,十年SEO从业者的思考
  10. 看了星球大战--西斯的复仇
  11. 软件工程导论习题集 | 170道选择 | 50道填空 | 40道简答 | 其他试卷资源
  12. Could not resolve type alias 解决方法
  13. oracle开方怎么写,excel的开方/平方/次方及根号运算
  14. 汇率查询接口,免费实时货币汇率查询换算
  15. SSM和SSH框架对比
  16. sourcemap(未完,待续)
  17. 游戏引擎除了开发游戏还能做什么?
  18. 高省是什么?它跟社交电商APP有何区别?资深淘客为你揭秘
  19. Lsky Pro+云服务器搭建私人图床
  20. 入门数学(二)素数,质因数分解

热门文章

  1. Windows Server 2008 中的服务器安全策略管理
  2. gunicorn日志系列1-输出限制大小的问题 Unable to configure root logger: Unable to add handler ‘console‘: ‘console‘
  3. quill-editor 富文本编辑器 上传图片
  4. react框架简单总结
  5. getId()方法-T110
  6. 别人家的孩子!CPU、操作系统、编译器全自主写,刘知远点赞!
  7. 哈利波特火了,伏地魔“活了“,网易游戏还是“千年老二“
  8. 台式计算机是否属于工装,工装分类《机械加工所谓的工装都包含什么?》
  9. [SD心灵鸡汤]003.每月一则 - 2015.07
  10. 一个Java程序员的腾讯面试心得