【大概记录一下这篇论文和思考】
ANR: Aspect-based Neural Recommender 基于方面的神经网络推荐系统
作者大大:Jin Yao Chin,Kaiqi Zhao,Shafiq Joty,Gao Cong(Nanyang Technological University, Singapore.)
现状:
- 用户评论是非常重要的数据,可以了解用户的喜好和关注点。
- 冷启动问题。(新建用户时,初始数据过少,无法推荐。)
- 用CNN把用户评论和物品信息一起卷积来获取其特征的方法,无法获得用户和物品的细粒度交互信息。(如:DeepCoNN, D-Attn, and TransNets)
- 评论中的无关信息。(一句话中,不是所有的单词都是有用的,存在很多噪声。)
- 同一个词语在不同句子中有不同的情感。((1) "This laptop has a long battery life"【正面情绪】, and (2) "The laptop requires a long startup time"【负面情绪】.)
- 不同用户对于同一物品的关注点不同(手机——关注价格、性能等),同一用户对不同物品的关注点不同(恐怖电影关注情节,动作电影关注演技),不可一概而论。
主要工作:
? We propose a novel aspect-based neural recommender system which performs aspect-based representation learning for
users and items by designing an attention mechanism to focus on the relevant parts of these reviews while learning the representation of aspects on the task. Furthermore, we estimate aspect-level user and item importance in a joint manner
using the idea of co-attention, which allows us to model the finer-grained interactions between users and items. To the best of our knowledge, this is the first paper to propose an end-to-end neural aspect-based recommender system which concurrently addresses the above-mentioned requirements.
提出了一个新的基于方面级别的(aspect-based)神经网络推荐系统。(方面aspect即用户从哪个角度评论,或者商品从哪个角度介绍,例如价格、性能、服务等。)为了学习用户和物品的基于方面的表达,设计一个注意力机制,在学习方面级别表达时,只关注评论的相关部分。(评论中不是所有文本都在描述一个方面。)在预测级别方面的重要程度时,使用了共同关注的方法(co-attention),可以同时关注用户和物品之间的细粒度关系。(例如:一个人买生活用品更注重经济实惠,买电子产品注意机器性能。)
? Extensive experiments have been conducted on 25 benchmark datasets from Amazon and Yelp to evaluate our proposed model against several state-of-the-art baselines such as DeepCoNN, D-Attn, and ALFM.
在亚马逊和Yelp的25个基准数据集上进行了广泛的实验,以评估模型是否符合一些最先进的基准线,如DeepCoNN、D-Attn和ALFM。
? We investigate how the different components in our proposed model contribute to its effectiveness. In particular, we include an qualitative analysis of the aspects which are learned automatically by our model without any external supervision.
研究模型中的不同组成部分对其有效性的贡献。特别是,对模型自动学习的方面进行了定性分析,而无需任何外部监督。
模型图:
Embedding Layer:
将用户文档的矩阵转化乘矩阵,通过查找变矩阵,通过查找表,将每个词汇表V中的词汇变成一个d维向量。
这个embedding矩阵需要与训练,比如word2vec或者GLoVe,因为用这两个方法可以记住句子中词语的顺序,而不像bag-of-words完全放弃单词顺序。
Aspect-based Representation Learning:
方面集合(set of aspects)包括许多方面,比如价格、质量、位置等等。A集合中共有K个元素。在这里,用户和物品使用的集合A相同。
使用得到方面级别的用户表达
用户文本包括用户u过去所有交互过的物品的评论,这些评论里包含着方面A的观点。物品文本同理。
在这一层中学习方面集合A包括哪些,和方面级别(aspect-level,也就是类似“喜欢”、“一般”、“不喜欢”)。
几个基本客观事实:(文中提到的):
1.不是文档中的每一个词都一样重要,我们只需要注意一些特定部分。
2.同一个词在不同句子中有不同含义。我们需要考虑一个词在不同方面中的不同情感。((1) "This laptop has a long battery life"【正面情绪】, and (2) "The laptop requires a long startup time"【负面情绪】.)
3.方面相关的词汇(如价格、口味),和评价该方面的词离的很近(如贵、好吃)。
用户u在方面a的方面级别的用户表达(aspect-level user representation)
方面级别特殊单词投射矩阵(aspect-specific word projection matrix),表达在a方面时单词的含义(由于事实2可知,同一词汇在不同方面的句子中含义不同)
是一个维为向量,表达文本矩阵中第i个单词的embedding。为这第i个单词在这个方面下的表达。一篇文档共有n个单词,所以。如果考虑全部K个方面,总结果就是的矩阵。
每个方面 都有一个embedding ,其中c是一个超参数。(个人认为就类似为方面a的一个卷积核,提取方面a特征的矩阵)
c是一个窗口大小。根据事实3,如果这是方面相关的词汇,只需要看其上下文的一段距离。
在看第i个词在方面a的重要性时:
符号“;”表示串联。
将内积,使用softmax算注意力attention,这样就得到了单词i在方面a上有多重要。(其实就类似于作为卷积核在文本上滑动求特征)
(根据度娘,算完了应该是一个1*h1大小的矩阵)
最后加权求和,得到了用户u在a方面的表达:
(ps。我觉得attn和M应该是对应位相乘,因为好像不能做矩阵乘法,最后是一个1*h1大小的矩阵)
物品的同理可得。
本层需要学习的参数
Aspect Importance Estimation:
不同用户对物品的各个方面关注度不同。一个用户在看不同物品时,关注点会改变。同一物品,不同用户有着不同的关注点。
所以,在学习用户注重方面的时候,将上面得到的物品的表达作为文档考虑进去。反之亦然。
用户表达(这个包括所有K个方面)和物品表达,得到一个方面级别的关联矩阵S(aspect-level
affinity matrix )。
这体现了方面级别的用户和物品表达的关联。如下图。
然后利用S作为一个特征去预测用户和物品在各个方面的重要性
用Pu算Hu,Qi算Hi。所以用户和物品,两个不同的用户,两个不同的物品,他们之间的H是不同的。
本层要学习的参数
Prediction 层
给出任意用户-物品对,可以推断打分:
b是各种bias。
总结:所有要学习的参数:
优化:预训练ARL的参数。
防止过拟合:Pu,a,Qi,a有ρ的概率随机dropout,算bias时使用L2正则化。
测试
实验设置:
d=300,|Du|=|Di|=500,c=3,h1=10,h2=50,ρ=0.5
比较MSE(均方误差)
结果如下图,吊打别人就对了。
论文的一些分析:
1. aspects numbers:K设置为4-6比较好。
2.h1<15,h2=50
3.模型简化了之后,没有原来效果好。