在推荐系统里有一个比较重要的问题:如何能把一个user的长期兴趣和短期兴趣综合起来考虑进行内容推荐?一个人的兴趣总会随着时间发生变化,特定日期、事件都会使长期兴趣发生波动从而促生短期兴趣。一个比较直观的例子:如果在一个世界杯期间的新闻推荐场景下,推足球新闻很有可能比推荐长期兴趣的内容更使人满意。而目前的很多推荐方法都没有考虑与时间有关的短期信息,因此这篇文章主要针对将长短兴趣结合来提高推荐效果。
模型的基础利用deep semantic structured model (DSSM)。简言之,DSSM可以视为把从两个或多个角度所构建的神经网络模型整合到一个角度进行学习。假设一个两个角度的DSSM,其中一个网络表示query,另一个网络表示document,两个网络的输入可以是由各自角度所代表的特征(query-based features和document-based features),输出为比输入维度低的embedding vectors,而两个网络综合学习的目标是最大化两个输出vectors的cosine相似度。在具体的训练过程中,在每个mini-batch中随机负采样后再与正样本组合,然后再最小化正样本上的cosine loss(使正样本中的两个网络输出vectors最匹配)。在推荐场景里,可以认为其中一个网络是user的query history,即用户特征,另一个网络为系统中item的隠反馈,比如新闻的点击或是app的下载。
上面所说的是DSSM的基本概念,但是这里有一个问题,就是user相关的features都是不随时间发生改变的,于是作者引入了Temporal的概念,也就是将user的feautures进行拆分和细化,分为static和temporal,分别代表长期兴趣和短期兴趣。 下图可以很好的表示整个推荐系统的架构,其中item features和user static features全都利用全连接的神经网络构造embeddings,而user temporal features则利用LSTM构造embedding(文中的实验表明GRU的效果并不理想),然后将static和temporal的vectors通过函数$f$做成组合向量($f$可以是multiplication或concatenation),再与item的向量做cosine similarity生成一个user-item相似度,预测的时候取与user相似度最大的topK item进行推荐。(这里有个问题,如果考虑item的temporal features会是什么样?)
给出的优化目标为似然形式,即使给定user和时刻t时item概率最大,
这里概率依然还是由softmax得到,只不过用user的temporal+static向量和item向量之间的相似度来表现。
不过仔细想一下,模型在细节上还是有些问题,那就是如何选择时间窗口t。选大了,兴趣不够“短期”,选小了,模型参数太多,训练不来,因此作者又引入了multi-rate的概念,也就是选择几个窗口,分别代表短期兴趣和中短期兴趣,然后再训练不同的LSTM,称为“Fast-RNNs”和“Slow-RNNs”,然后将几个LSTMs用全连接层串到一起就OK了。不过这样RNN所带来的训练参数还是太多,文中采用的方法是在训练之前先用上文提到基本的DSSM做pre-train。
理论部分基本就是这些,就是在DSSM基础上引入了Temporal的概念——解决用户短期兴趣的问题,再引入了multi-rate的概念——对短期兴趣的粒度和模型训练效率做trade-off,因此称为MR-TDSSM。说实话,这篇文章并没有DSSM那篇惊艳,只能算是前者的进一步扩展,但实验结果确实很不赖,在新闻数据上多个指标上能够碾压传统推荐算法和DSSM。值得一提的是,实现工具是keras(一直以为微软的工程师都会用自己的轮子),一些传统方法的baseline用的都是LibRec,可以看到这个开源工具还是挺流行的。