从这篇开始,咱们陆续来介绍几篇推荐系统中特征建模的文章。今天要介绍的是19年的一篇文章,算是比较早的一篇在特征上进行建模的论文,对现在的一些建模方式具有一定的借鉴意义,一起来看一下。
1、背景
序列推荐的目标是基于用户的历史行为序列pattern,来推荐用户下一个最可能交互的item。这种pattern不仅存在在item粒度,也可能存在特征粒度。从item粒度举例,如购买过苹果手机的用户,很有可能下一个会购买苹果手机壳;从特征粒度来讲,以品类为例,购买了衣服的用户,后有可能下一个会购买鞋子。因此,从item和feature粒度对用户的行为偏好pattern进行建模,对于提升推荐效果是具有显著的意义的。但当前(指该论文发表以前,现在对于特征建模的论文就比较多了)的论文大都关注item粒度的pattern建模,而忽略了feature粒度的pattern建模。因此,论文提出了Feature-level Deeper Self-Attention Network (以下简称FDSA),使用self-attention对用户feature粒度的偏好pattern进行建模。
2、FDSA介绍
FDSA模型的整体结构如下图所示:
主要分为上下两部分,上面的部分是Item粒度的self-attention,建模item粒度的的偏好。下面是feature粒度的self-attention,建模用户feature粒度的偏好。最后两部分的输出进行拼接,通过MLP层,输出每一个target item的偏好概率。接下来,主要对feature粒度的建模过程进行介绍。
2.1 Input
这部分的输入包括n个历史行为的feature,如果用户历史行为长度不足n,则用0补齐,如果超过n,则按时间进行截断。特征主要分为两类,一类是item的基础属性特征如品类category、品牌brand,这类特征通过embedding layer转换为对应的embedding表示;另一类是文本特征。对于文本特征,首先使用word2vec进行词向量的学习,再抽取标题和描述中的五个关键词,使用mean pooling方式得到item的文本特征表示。
2.2 Vanilla attention layer
这一层的主要作用是筛选用户关注的特征,即哪些特征对于用户的决策起到了更重要的作用,假设item i的的输入表示为:
接下来,首先计算每个特征的attention score,然后对特征进行加权,得到该item的特征层面的最终表示:
2.3 Feature-based self-attention block
最后,针对每个item的表示,经过多个self-attention block得到feature建模部分的最终输出。self-attention的具体计算过程就不做赘述,这里主要提一点,为了在计算过程中融入行为发生的顺序信息,输入self-attention模块时,融入了position encoding:
3、实验结果
最后看下实验结果
4、总结
论文在细粒度feature建模方面,所提出的方法具有一定的借鉴意义。可以看到,论文采用的是一种两阶段的建模思路,即先建模单个item内用户对于不同feature的偏好程度,再建模item之间的相互影响。其实还有其他的思路,如先关注不同item的相同属性的相互影响,如item的价格,评分,再建模用户对于不同feature的偏好(美团的crossDQN),再比如使用一阶段的建模方式,同时建模item和feature的偏好(如ebay的trans2D)。不同的思路结合建模场景可灵活选择。
好了,本文就介绍到这里,感兴趣的同学可以阅读原文,最后祝大家端午安康~
网友评论