引言
协同过滤模型的一个很大缺陷在于很难处理冷启动问题,基于内容的推荐是一种解决思路,例如对于系统中的新物品,可以将其推荐给喜欢系统中相似物品的用户,对于新用户,可以给其推荐类似的用户所喜欢的物品。
这里会涉及一个问题,即如何对用户建模,以计算其之间的相似度。不少相关文献已经尝试过使用用户的搜索记录或社交帖子等数据作为对用户建模的原始数据,本文就是采用用户的搜索记录作为用户建模的数据的。
跨域推荐也是一种缓解冷启动问题的思路,其基本假设是:在同一个领域具有相似品位的用户在另一个领域也具有类似品位。
跨域推荐实际上是基于“人以群分”的思路,但是即使用户确实存在分群,在不同领域(例如游戏和音乐)具有不同爱好也是很合理的。而跨域推荐之所以有效,我认为还是在于一种现象:同一兴趣点的跨载体/领域的呈现。正如文中举的一个例子:people who visited fifa.com will like to read News articles about the World Cup and play soccer games on PC or Xbox。在新闻领域都喜欢看世界杯相关新闻,可能在电子游戏领域都喜欢玩足球游戏,这其实是因为他们都喜欢足球,这个兴趣点在新闻和游戏两个领域有不同的载体而已。
本文基于DSSM模型进行改进,提出了一种基于内容的推荐模型,可以用于跨领域推荐,以缓解冷启动问题。
DSSM
DSSM本来是用于做文档匹配的,例如对于用户的查询Query,我们由一系列文章,可以用DSSM模型算一下查询Q和每个文章D的相似性,相似性高低可以用于排序。模型结构如上图所示,就是2个MLP,大家也叫这双塔模型,每个塔(MLP)的参数是独立的,最后的 y Q y_Q yQ和 y D y_D yD作为Q和D的表征,用于计算余弦相似度。对于所有文章的相似度得分进行softmax操作,就可以得到每篇文章被点击的后验概率:
训练目标是最大化用户实际点击的文章 D + D^+ D+ 的似然。一般情况下并不会对所有文章都计算一次相似度,而采用的是负采样的方法,即每个正样本都对应地随机采样 N N N 个负样本(搜索场景下可以是曝光后用户没有点击的样本),然后当做 N + 1 N+1 N+1 分类问题来使用softmax+交叉熵损失,或者当作 N + 1 N+1 N+1 个二分类的样本使用sigmoid+二元交叉熵。
个人觉得不如把cosine去掉,换成一个FNN,这样输出的 logit 没有 [-1,1] 的限制,输入到 softmax/sigmoid 也更合理
MV-DSSM
MV-DSSM是将DSSM拓展到multi-view的场景,用于推荐场景。上图即为MV-DSSM的网络结构,其实很简单,就是本来的双塔换成了 V + 1 V+1 V+1 个塔,其中 V V V 是指多个 item 域(例如新闻、App、电影等),而 1 指的是用户域(例如使用用户的搜索记录作为输入),用于对用户进行建模。
对于输入的编码,类别型特征直接编码为one-hot然后通过lookup-table即可,对于文本,其实有很多处理方法,文中讲的 bag of character-level n-gram 也是一种思路,现在对文本进行特征抽取的方法已经发展出很多了(RNN、CNN、Self-Attention等),这里就不赘述文中的这种方法了。
说白了,我感觉这篇文章比较值得学习就一个思路:对于多个item domain,如果user基本相同,可以将对用户建模的这个“塔”(也不一定要采用MLP结构我觉得)在多个domain之间共享,这样的好处在于两点:
1、节省模型占用空间,得到迁移性、泛化性更强的用户模型
2、在一定程度上缓解个别 item 领域数据稀疏以及冷启动的问题。因为用户模型已经经过充分训练,在新增一个item view的时候,只需要再训练新增的 item 塔,另外,由于用户模型已经融合了来自其他领域的知识(也就是在其他领域具有类似品位的用户也具有相近的embedding),由于已经具备一定的用户聚类的效果,因此收敛速度相对于直接从头训练一个双塔模型肯定是更快的;另外,由于是基于内容对用户进行建模,因此也可以缓解用户冷启动的问题
具体分析可以参考 这篇文章