个人公众号,欢迎关注
YouChouNoBB
介绍一篇很有意思的论文,DUMN,论文的亮点在于将item侧的行为序列也加入建模,通过计算user to user 的相似度,来表达target user与target item之间的相似度.
1.主要介绍其中的4个模块
1)Embedding Layer
2)User Representation Layer
3)User Match Layer
4)Output Layer
2.Embedding Layer,主要介绍一些向量的定义
1)User Behavior:
,其中i为itemid
2)Item Behavior:其中为userid,并附带一个用户行为序列
3) : User profile vector,用户基础画像向量
4) : Target item vector,目标item向量
5) : Context vector,上下午场景向量
6) : 用户行为向量,由一系列item的向量组成
7) : item行为向量,由一系列用户的行为向量
和画像向量
组成
3. User Representation Layer
1)主要由用户行为向量,用户画像向量
,Target item向量
进行attention计算得到
其中,为用户交互的item向量,
为bias,
为模型学习的参数矩阵,
是激活函数sigmoid
为每个item计算得到的权重,进行归一化为
再将乘回item的向量
得到新的item向量
将新的item向量进行sum pooling得到用户的兴趣表达向量
最终将兴趣表达向量和画像向量concat得到用户的表达向量
4.User Match Layer
这一层主要是通过当前用户与交互过target item的用户向量,来计算用户与用户之间的相关性,从而可以得到当前用户与target item 之间的相关性表达 ,其中的用户向量都是由上一节的user representation layer计算得到
这里有一个值得讨论的地方
1)交互过target item的用户很多,应该怎么选取论文没有讲清楚,只说了取30个比较合适,在实际应用中,我们是否需要选取一些活跃的用户?
2)用交互过target item的用户来计算target user与target item之间的相似度,是否一定需要用这样的模型结构来解决,直接加item侧对应的特征是否能满足需求?
4.1 Relevance Unit
该模块用来衡量用户与用户之间的相似度,计算方式比较简单,使用余弦相似度
其中 表示用户
在上一节计算得到的向量表达,不止target user可以通过这个模块计算,所有user都能通过这个模块计算得到用户向量
通过这种方式,我们可以计算target user和target item交互过的所有user的相似度
这样我们就能用相似度乘上用户表达向量,sum pooling之后得到一个匹配表达向量
同时,我们还可以将所有相似度求和,得到target user与target item的一个匹配度
这个时候再回过来看User Match Layer是不是简单很多了
5.Output Layer
最后输出层就很简单了,匹配表达向量,用户表达向量
,匹配度
,target item 向量
和上下文向量
进行concat,然后经过2层全连接,最后sigmoid输出
个人公众号,欢迎关注
YouChouNoBB