文章目录
2019-[HERS]在稀疏和冷启动推荐系统中利用上下文进行异构关系建模
概要
经典的推荐系统主要面临数据稀疏性问题和冷启动问题。目前一个重要的解决思路是异构关系,如 user-user;item-item等,因为每个user-item对的关系均受到其他users和items 的影响。这些users和items就构成了这个user/item 的有影响的上下文(有影响的上下文:个人理解为user或item 的重要邻居 )。
本文[HERS: Modeling Influential Contexts with Heterogeneous Relations for Sparse and Cold-Start Recommendation]提出一种 场景影响聚合单元 Influential-Context Aggregation Units (ICAU),来聚合user-user/item-item的关系。基于ICAU提出一种异构关系建模推荐系统Heterogeneous relations-Embedded Recommender System (HERS) based on ICAUs。本本文最后用两个数据集验证了效果。(论文链接 参考文献1, 源代码为参考文献2)
主要关注点
在推荐系统中建模异构关系非常重要:user-user;item-item; user-item。多个异构关系的研究越来越受重视,特别是在应对这些挑战如 社交,基于组,基于上下文,跨域,稀疏,冷启动,动态,深度推荐等方面
如图所示:
每一个用户的选择都与相应的user和item 的有影响的上下文有关。(理解:每一个user->item 都受到邻居user 的影响和邻居item 的影响)。user 与item 的网络关系都是相互影响。本文就是要建模这种影响关系。
主要考虑考虑以下两点:
- 如何在观察到的user-item交互作用下对uset和item的影响上下文建模(如何利用neighbors)?
- 如何学习不同背景下不同user或item 的影响力?
不同user-item交互的影响上下文不同,并且每个user/item在一个上下文中的影响也不同。所以必然不能用一个统一的方式进行聚合neighbors
本文设计了 场景影响聚合单元Influential-Context Aggregation Units (ICAUs)来聚合所有的user/item 的场景(上下文 / neighbors)来得到向量Influential Context Embedding(ICE)场景影响向量。这种方式既考虑user context,也考虑了item context。
模型
模型主要架构
如图所示:
模型解析:
- User Representer E U {E_U} EU :user表示单元,即user的原始特征或者embedding matrix
- Item Representer E I {E_I} EI : item表示单元,即item的原始特征或者embedding matrix
- UIC Aggregator A U {A_U} AU : 基于user neighbors聚合得到的user 场景影响向量(UIC)
- IIC Aggregator A I {A_I} AI : 基于item neighbors聚合得到的item 场景影响向量(IIC)
- User-item Interaction Scorer S U I {S_{UI}} SUI : user-item 的交互分,即监督学习时的score。此处计算user-item score 可以采用多种方式(直接余弦/内积 或者 MLP+sigmoid 均可)
注: 此处论文未说明如何构造user/item neighbors。本文重点不是neighbors 的构建
计算流程:
- 基于某种关系得到 user neighbors(user influential context) item同理
- 获取user 特征mebedding 及相应的neighbors 特征embedding E U {E_U} EU层、
- 采用 ICAUs 聚合 neighbors信息 得到 user最终 embedding(UIC 场景影响向量ICE)。 item同理
- user-item 交互层计算 user-item score
最终计算:
第一项表示 目标user-item 关系;第二项表示 user 与item-neighbors关系;第三项表示 user-neighbors 与item 的关系;第四项表示 user-neighbors与 item-neighbors关系。
关键点
本文最主要的贡献就是设计了神经场景影响聚合单元neural ICAUs
来学习 场景影响向量ICEs
。ICAU是HERS模型核心的组件
Influential-context Aggregation Unit
ICAU主要是用来聚合user 或 item 的neighbors(influence context -> neighbors),同时考虑到不同的neighbors 的影响长度是不一样的。(聚合方式与attention不一样)
聚合过程主要分为两阶段:
- S1:这个阶段主要是输出 一个辅助影响的聚合向量
c
t
{c_t}
ct 。
式(2)表示 通过计算neighbors向量(a 函数
)得到 α { \alpha } α , α { \alpha } α表征不同neighbors的影响程度。然后通过聚合函数h 函数
得到 辅助影响的聚合向量 c t {c_t} ct - S2:这个阶段通过聚合 辅助影响的聚合向量
c
t
{c_t}
ct 和 目标向量
e
t
{e_t}
et 生成 ICE向量
r
t
{r_t}
rt
h 函数
和f 函数
可以是 任何线性或非线性函数。本文h 函数
为考虑注意力机制的多层网络神经元;f 函数
是一个门控神经网络。
User’s Influential Context Embedding
UIC是通过树状的两阶邻居聚合生成。这样既考虑了一阶邻居影响,也考虑了二阶邻居的影响。首先通过聚合二阶邻居生成一阶邻居聚合向量,再通过聚合一阶邻居,生成目标向量。
一阶与二阶的聚合方式一样,这里仅用一阶聚合为例进行说明:
- The Second Level ICAUs (过聚合二阶邻居生成一阶邻居聚合向量)
(1) S1: 采用注意力机制来聚合每一个邻居。
- 首先 neighbors向量经过一个tanh 非线性单元
权重矩阵 W ( 1 ) ∈ R L × L { W }^{ (1) }\in { R }^{ L\times L } W(1)∈RL×L,后面公式偏置项 b 均不写明。 - 然后 标准化输出得到每个neighbors 权重值
α
{\alpha}
α
权重矩阵 W ( 2 ) ∈ R 1 × L { W }^{ (2) }\in { R }^{ 1\times L } W(2)∈R1×L
式(8)中 θ { \theta } θ是一个超参数。 θ { \theta } θ越大,则使得上下界趋近于0,会导致权重趋向于均匀分布。相反, θ { \theta } θ越小,则对应的权重越大。 - 进一步 根据生成的权重得到辅助影响的聚合向量
c
t
{c_t}
ct
(2)S2 通过门控单元得到目标向量
注:g 函数
衡量了二阶邻居的影响程度。
其中 σ ( z ) = 1 / ( 1 + e − z ) { \sigma }(z)= 1/(1+{ e }^{ -z }) σ(z)=1/(1+e−z), W ( 4 ) , W ( 5 ) ∈ R L × L { W }^{ (4) },{ W }^{ (5) }\in { R }^{ L\times L } W(4),W(5)∈RL×L ; W ( 3 ) ∈ R 1 × L { W }^{ (3) }\in { R }^{ 1\times L } W(3)∈R1×L
- The First Level ICAU(通过聚合一阶邻居生成目标向量)
与公式(6)-(11)计算类似。
Item’s Influential Context Embedding
因为user直接一般没有直接的联系与影响(user 关系模型中),所以通过两阶段聚合生成目标向量。而item直接一般有直接的联系,所以只需要进行一阶聚合即可。(此处可能是考虑到 在构建 user 关系图时,user之间没有直接的行为联系或者 联系不紧密)具体的聚合方式也是采用 ICAU构建,过程与UIC一样。
User-item Interaction Ranking
每一个user-item 的连接表明user 的一个选择,也是表明user 的一个兴趣偏好。将user-item连接作为正样本,在剩余的item中随机挑选负样本,优化目标:
S
<
u
t
,
i
p
>
≥
S
<
u
t
,
i
n
>
{ S }_{ \left< { u }_{ t },{ i }_{ p } \right> }\ge { S }_{ \left< { u }_{ t },{ i }_{ n } \right> }
S⟨ut,ip⟩≥S⟨ut,in⟩
其中计算方式:
采用最大边界损失计算:
本文设置m = 10
注:推导(1)式说明为什么loss函数是分解为4项:
将式(18)基于式(13)(16)展开:
由上式(20)与(1)式相应位置一一对应。上式表明了 UIC 与 IIC 均影响了最终推荐模型的embedding
实验说明
对于每一个user 选择(点击)
<
u
t
,
i
p
>
<{ u }_{ t },{ i }_{ p }>
<ut,ip>,建立一个 triplet三元组
<
u
t
,
i
p
,
i
n
>
<{ u }_{ t },{ i }_{ p }, { i }_{ n }>
<ut,ip,in>来优化rank损失(mini-batch B)
采用的两个数据集进行训练,具体结果等不详细描述。主要说明一下训练集的前处理(group 生成)
(1) The Delicious dataset
- user-group : 通过user关注同一个Delicious,将不同user建立联系(统一粉丝组里面user建立联系)
- item-group:item之间有同样的tag标签。取共同标签数最多的10个item
- user-item: user 将item 添加了标签则两者建立联系(user对item 有行为)
(2)The Lastfm dataset
The Lastfm dataset包含社交网络关系 / 标签信息 / 音乐家信息等
- user-group : 根据社交关系建立user之间关系
- item-group:item-item关系是根据同样的tag来建立,类似于 Delicious dataset
- user-item: user 听了音乐家的音乐表征 user-item 之间的关系 user->item => user->artist
针对冷启动user/item, 随机remove掉20% 的数据 进行测试
思考
本文提出的模型结构可以抽象为解决冷启动问题的一种模型范式,通过 Graph + 双塔
结合,较为高效的解决 user 和 item 冷启动问题。
Graph
部分融合结构信息,使 冷启动item不仅利用attribute信息,还可以结合 图谱或结构信息双塔
双塔结构比较简洁的结合user / item 域,同时进行更新;比较方便的添加side-infomation信息,在user侧 和 item 侧分别添加,比较灵活;且 利用有行为的 user-item对 进行有监督的学习,比绝大部分 无监督的冷启动算法更准确。且将warm-item与cold-item产出向量在排序侧利用起来,更有利于冷启动item在排序侧露出。(cold-user 同理)
但本文并没有详细的探讨如何进行构图,而图模型更重要的或者难点问题是在构图部分。以下加入自己的一点思考补充:
(1)item-group:
- warm-item 直接采用itemCF方式生成 neighbors关系 cold-item
- cold-item 采用poi/mdd/tag等属性标签进行聚合,可以同时考虑多种标签计算item-sim-score(neighbor构建尽量采样warm-item)
(2)user-group:
- 有站外辅助信息: 基于站外信息(行为)聚合生成graph(比如飞猪 利用支付宝和淘宝信息构建user-group)
- 根据主要的基本属性聚合计算u2u之间的相似性score(冷启动user)
1)按最主要的属性分区/分簇
2)在 子分区/子簇 里面计算相似user(考虑多种属性)
3)用spark-stream任务计算user-neighbors - 根据属性利用变分自编码器得到embedding 找topk neighbors
- 也可以根据行为生成group(非冷启动user)
(3)user-item:
- 有监督情况下一般为user 对 item 的行为,或者 直接采用业务目标即可