关注我们,一起学习~
title:Price DOES Matter! Modeling Price and Interest Preferences in Session-based Recommendation
link:https://arxiv.org/pdf/2205.04181v1.pdf
code:https://github.com/Zhang-xiaokun/CoHHN
from:SIGIR 2022
1. 导读
懒人可跳至“2.懒人阅读 ”
现有的基于会话的推荐方法只关注建模用户的兴趣偏好,而忽略了价格因素。而将价格偏好纳入基于会话的推荐存在以下挑战。
首先 ,很难处理来自物品的各种特征的异构信息来捕捉用户的价格偏好。其次 ,在确定用户选择时,很难对价格和兴趣偏好之间的复杂关系进行建模。本文提出了会话推荐的新方法CoHHN。
对于第一个挑战,设计异构超图 来表示异构信息和它们之间的丰富关系。然后设计一种双通道聚合机制来聚合异构超图中的各种信息。之后,通过注意力层提取用户的价格偏好和兴趣偏好。 对于第二个挑战,设计一个协同引导的学习方案,以模拟价格和兴趣偏好之间的关系并增强彼此的学习。
2. 懒人阅读
本文作者主要是考虑了价格因素对推荐效果的影响,以往的方式可能更多的是对价格最为一个特征来进行建模,本文是通过对用户的价格偏好 进行建模,并结合用户的兴趣偏好 ,综合判断用户可能与什么商品交互。
异构超图,这个超图中包含的节点由三种类型,商品的ID,商品的类型和离散化后的商品的价格 超图中的边也有三种,分别是同一商品的不同特征,同一会话的不同商品ID,同一会话的不同商品价格节点 双通道聚合,基于构建的超图,进行同类型和跨类型节点embedding信息聚合 基于多头自注意力机制,从序列中挖掘与用户的原始兴趣偏好和原始价格偏好 协同引导学习,价格偏好和兴趣偏好之间是存在相互影响的,因此作者在这里对两者进行交互,发掘两者关系 最后计算交互概率和交叉熵损失函数
3. 基础定义
3.1 问题定义 本文的重点是对用户的价格和兴趣偏好进行建模 ,以改进会话推荐方法。令
I 表示商品的集合,
|I|=n 是商品的总数。一个商品
x_i \in I 包含一些特征,包括商品ID、价格和类别。
S=[x_1,...,x_m] 表示一个匿名用户的会话。CoHHN 可以看作是一个函数f,其输入是当前会话S。输出是
y=f(S)=[y_1,...,y_n] ,y表示交互的可能性。
3.2 价格离散化 物品的绝对价格不足以确定该物品是否昂贵。例如,200 美元对于一部手机来说可能很便宜,但对于一盏灯来说,同样的价格会非常高。因此,必须根据商品类别将商品价格离散为不同的价格水平,以便可以在不同类别之间进行比较 。价格分布更接近 logistic 分布,而不是广泛使用的均匀分布。如图 1 所示, logistic 分布的概率密度函数在中间呈现高偏好,在两边呈现低偏好。在价格集中的地方,用户可以选择的价格相近的商品越多,价格敏感度更高,价格等级的划分越细,反之亦然。每个价格水平所包含的项目数量应处于相同的比例。因此,如图 1 所示,将价格离散化为ρ个级别,其中每个区间对应的概率相等。形式上,对于价格为
x_p 且其类别的价格范围为[min, max]的商品
x_i ,确定其价格级别如下,
p_{i}=\left\lfloor\frac{\Phi\left(x_{p}\right)-\Phi(\min )}{\Phi(\max )-\Phi(\min )} \times \rho\right\rfloor
其中
\Phi() 是 logistic 分布的的累积分布函数,公式如下,
\Phi(x)=P(X \leq x)=\frac{1}{1+e^{-\pi \frac{x-\mu}{\sqrt{3} \delta}}}
3.3 超图构建 为了从异构信息中提取用户的价格和兴趣偏好,设计异构超图
\mathcal{G}=(V,E) ,V是节点集合,E是超边集合。每个节点
v^{\tau} \in V 拥有一个类型τ并且具有相同类型的节点形成一组同质节点
V^{\tau} 。节点类型包括商品价格 (
V^p )、商品ID(
V^{id} ) 和商品类别 (
V^c ),所有这些都与价格和兴趣偏好密切相关,因此
V=V^p \cup V^{id} \cup V^c 。每个超边
\epsilon \in E 连接两个或多个任意类型的节点。定义以下三种类型的超边来表示各种节点之间的多类型关系:
(1)特征超边:连接一个商品的所有特征; (2)价格超边:连接会话中所有商品的价格节点。 (3)会话超边:连接会话中所有商品的ID节点。 利用特征超边来传播异构节点的embedding,价格和会话超边分别用于提取用户的价格和兴趣偏好。如果两个节点通过超边连接,则它们是相邻的。构建异构超图的过程如图 2 的最左侧所示。
4. 方法
image.png
4.1 双通道聚合机制 在构建的异构超图中,目标节点可以与多种类型的节点相邻。很明显,相同类型的节点包含同质的信息,不同的类型有不同的语义。因此,将消息聚合总结为两个通道,即类型内通道和类型间通道。在类型内通道中,对于一个目标节点,相同类型的相邻节点具有不同的重要性 。在跨类型通道中,不同类型可能对目标节点产生不同的影响 。双通道聚合机制来聚合来自两个通道的信息。
4.1.1 类型内聚合 v^t 是类型为t的目标节点的embedding。其具有某种类型的相邻节点形成一个集合
N_t^{\tau} 。类型内聚合旨在区分
N_t^{\tau} 中节点的重要性,并聚合来自这些节点的信息以表示该类型(𝜏)。为目标节点
v^t 学习类型τ的表征,公式如下所示,
\begin{aligned}
e_{t}^{\tau} &=\sum_{i} \alpha_{i} \mathrm{v}_{i}^{\tau} \\
\alpha_{i} &=\frac{\exp \left(\mathrm{u}_{\tau} \mathrm{v}_{i}^{\tau}\right)}{\sum_{\mathrm{v}_{i}^{\tau} \in N_{t}^{\tau}} \exp \left(\mathrm{u}_{\tau} \mathrm{v}_{i}^{\tau}\right)}
\end{aligned} 其中
u_{\tau}^{\top} \in \mathbb{R}^d 是注意力向量,可学习参数,它决定了节点
v_i^{\tau} 在
v^t 上的相关性,
e_t^{\tau} 表示
v^t 关于类型τ的类型embedding。将上述过程抽象表示为
e_t^{\tau}=f_a(N_t^{\tau}) 4.1.2 类型间聚合 基于学习到的embedding
e_t^{\tau} ,类型间聚合将不同类型的embedding传播到目标节点。不同类型为目标节点提供异构信息,类型间聚合在特征级别合并信息的方式如下,W为可学习参数,[;]为拼接,σ为sigmoid函数,*表示逐元素相乘,
h^t 为目标节点embedding,这里的两个
e_t^{\tau} 表示和当前节点类型异类的剩余两种类型的节点embedding。
\begin{array}{l}
\mathrm{g}_{t}=\sigma\left(\mathrm{W}_{t}\left[\mathrm{v}^{t} ; \mathrm{e}_{t}^{\tau 1} ; \mathrm{e}_{t}^{\tau 2}\right]+\mathrm{W}_{t}^{\tau 1} \mathrm{e}_{t}^{\tau 1}+\mathrm{W}_{t}^{\tau 2} \mathrm{e}_{t}^{\tau 2}\right) \\
\mathrm{h}^{t}=\mathrm{v}^{t}+\mathrm{g}_{t} * \mathrm{e}_{t}^{\tau 1}+\left(1-\mathrm{g}_{t}\right) * \mathrm{e}_{t}^{\tau 2}
\end{array} 上述过程简化表示为
h^t=f_b(v^t,e_t^{\tau1},e_t^{\tau2}) ,通过双通道聚合机制,更新所有节点embedding方式如下,其中
N_a^b 表示类型为a的节点的类型为b的邻居节点的集合。
\begin{aligned}
\mathrm{h}^{i d} &=f_{b}\left(\mathrm{v}^{i d}, f_{a}\left(N_{i d}^{p}\right), f_{a}\left(N_{i d}^{c}\right)\right)+\operatorname{avg}\left(N_{i d}^{i d}\right) \\
\mathrm{h}^{p} &=f_{b}\left(\mathrm{v}^{p}, f_{a}\left(N_{p}^{i d}\right), f_{a}\left(N_{p}^{c}\right)\right) \\
\mathrm{h}^{c} &=f_{b}\left(\mathrm{v}^{c}, f_{a}\left(N_{c}^{p}\right), f_{a}\left(N_{c}^{i d}\right)\right)
\end{aligned} 4.2 偏好提取 4.2.1 提取价格偏好 依据价格超边,即
[h_1^p,..,h_m^p] 来提取用户的价格偏好,使用多头自注意力来对序列中的价格偏好进行建模,如下所示,
S_p 表示用户的原始价格偏好
\hat{P}_p \in \mathbb{R}^d ,
\hat{P}_p=S_p^{(t)} \begin{aligned}
\mathrm{E}_{p} &=\left[\mathrm{h}_{1}^{p} ; \mathrm{h}_{2}^{p} ; \ldots ; \mathrm{h}_{m}^{p}\right] \\
\text { head }_{i} &=\text { Attention }\left(W_{i}^{Q} \mathrm{E}_{p}, W_{i}^{K} \mathrm{E}_{p}, W_{i}^{V} \mathrm{E}_{p}\right) \\
\mathrm{S}_{p} &=\left[\text { head }_{1} ; \text { head }_{2} ; \ldots ; \text { head }{ }_{h}\right]
\end{aligned} 4.2.2 提取兴趣偏好 根据会话超边
[h_1^{id},...,h_m^{id}] 提取用户的兴趣偏好。用户的兴趣偏好随时间变化,因此,将位置embedding与学习的ID embedding相结合,以对用户的动态兴趣进行建模。利用反向位置embedding来编码位置信息,即
pos_i \in \mathbb{R}^d 。然后将
h_i^{id} 和
pos_i 合并如下,
v_i^* 表示会话中的第i个商品,
\mathrm{v}_{i}^{*}=\tanh \left(\mathrm{W}_{f}\left[\mathrm{~h}_{i}^{i d} ; \operatorname{pos}_{i}\right]+\mathrm{b}_{f}\right)
通过下式计算用户的原始兴趣偏好
\hat{I}_p ,同样的u,A,b为可学习参数,
\bar{v}^*=\frac{1}{m}\sum_{i=1}^{m}v_i^* 。
\begin{aligned}
\hat{\mathrm{I}}_{p} &=\sum_{i=1}^{t} \beta_{i} \mathrm{~h}_{i}^{i d} \\
\beta_{i} &=\mathrm{u} \sigma\left(\mathrm{A}_{1} \mathrm{v}_{i}^{*}+\mathrm{A}_{2} \overline{\mathrm{v}}^{*}+\mathrm{b}\right)
\end{aligned} 4.3 协同引导学习模式 在一个会话中学习了用户的原始价格偏好
\hat{P}_p 和兴趣偏好
\hat{I}_p 后,给定一个商品
x_i ,其ID embedding
v_i^{id} 和价格embedding
v_i^p ,可以简单地定义用户将与其交互的概率如下:
y_{i}=\hat{\mathrm{P}}_{p}^{\top} \mathrm{V}_{i}^{p}+\hat{\mathrm{I}}_{p}^{\top} \mathrm{v}_{i}^{i d}
但是,价格偏好和兴趣偏好相互影响,共同决定用户的选择,上述方式的单纯相加的方式无法完整表达互相影响的场景,所以作者提出协同引导学习模式来模拟价格和兴趣偏好之间的相互关系,以确定用户的选择。用以下两种方式整合价格和兴趣偏好,
\begin{array}{l}
\mathrm{m}_{c}=\tanh \left(\mathrm{W}_{1}^{p i}\left(\hat{\mathrm{P}}_{p} * \hat{\mathrm{I}}_{p}\right)+\mathrm{b}_{c}\right) \\
\mathrm{m}_{j}=\tanh \left(\mathrm{W}_{2}^{p i}\left(\hat{\mathrm{P}}_{p}+\hat{\mathrm{I}}_{p}\right)+\mathrm{b}_{j}\right)
\end{array} 然后,利用门控机制进一步模拟两者的相互影响,即利用对应的权重来得到各自中包含的另一方的信息 ,W,U为可学习参数,
\begin{aligned}
\mathrm{r}_{P} &=\sigma\left(\mathrm{W}_{1}^{r} \mathrm{~m}_{c}+\mathrm{U}_{1}^{r} \mathrm{~m}_{j}\right) \\
\mathrm{r}_{I} &=\sigma\left(\mathrm{W}_{2}^{r} \mathrm{~m}_{c}+\mathrm{U}_{2}^{r} \mathrm{~m}_{j}\right) \\
\mathrm{m}_{P} &=\tanh \left(\mathrm{W}^{P}\left(\mathrm{r}_{P} * \hat{\mathrm{P}}_{p}\right)+\mathrm{U}^{P}\left(\left(1-\mathrm{r}_{I}\right) * \hat{\mathrm{I}}_{p}\right)\right) \\
\mathrm{m}_{I} &=\tanh \left(\mathrm{W}^{I}\left(\mathrm{r}_{I} * \hat{\mathrm{I}}_{p}\right)+\mathrm{U}^{I}\left(\left(1-\mathrm{r}_{P}\right) * \hat{\mathrm{P}}_{p}\right)\right)
\end{aligned} 最后得到最终的价格偏好和兴趣偏好,利用二者语义信息进行互相促进,
\begin{aligned}
\mathrm{P}_{p} &=\mathrm{m}_{P} *\left(\hat{\mathrm{P}}_{p}+\mathrm{m}_{I}\right) \\
\mathrm{I}_{p} &=\mathrm{m}_{I} *\left(\hat{\mathrm{I}}_{p}+\mathrm{m}_{P}\right)
\end{aligned} 4.4 预测和训练 最后采用类似的方式进行预测,公式如下,
y_{i}=\mathrm{P}_{p}^{\top} \mathrm{v}_{i}^{p}+\mathrm{I}_{p}^{\top} \mathrm{v}_{i}^{i d}
然后进过softmax得到各自的概率
y_{i}=\frac{\exp \left(y_{i}\right)}{\sum_{j=1}^{n} \exp \left(y_{j}\right)}
采用交叉熵损失函数计算损失值,
\mathcal{L}(\mathrm{p}, \mathrm{y})=-\sum_{j=1}^{n} p_{j} \log \left(y_{j}\right)+\left(1-p_{j}\right) \log \left(1-y_{j}\right)
5. 结果