一个推荐系统,大致就分为两个模块,召回和排序。再细分下去就是召回,粗排,精排,重排。不管推荐系统多么复杂,无非是为了两个目标,推荐的准确,且多样化。为了实现多样化,往往是在排序中对同质的item做了指纹去重处理。但是如果召回侧多样性不足,排序无论怎么优化都不能达到最优,所以这篇《Improving Accuracy and Diversity in Matching of Recommendation with Diversified Preference Network》就来探讨如何在召回侧,用一个端到端模型GraphDR实现多样化的召回。
![v2-a5e848c51da22fbe829a428fb6deadd8_b.jpg](https://i-blog.csdnimg.cn/blog_migrate/3e9e087b9c166f5b7eebaded279cb78f.jpeg)
模型结构
GraphDR包含3个模块,如下图所示,包含多样偏好网络(Diversified Preference Network),网络表示学习(Network representation learning)和在线多通道匹配(online multi-channel matching)。
![v2-85a0cd90a8aaf11f496c9bb7f9672c35_b.jpg](https://i-blog.csdnimg.cn/blog_migrate/84372b01a2a2957a0b06ed1711ac0328.jpeg)
Diversified Preference Network
多样偏好网络是实现多样性召回的基础,本文通过用户多种多样的交互行为对用户偏好进行建模,训练数据包含多种类型:视频,Tag,媒体,用户和文本。视频包含文本(Title),视频提供者是媒体,每个视频又有很多Tag,这些特征对最后的推荐效果有着重要的影响。为了缓解数据稀疏的影响,用户的基础特征也要用进来。可以按年龄,性别,地域等特征对用户进行聚类,形成用户组。在GraphDR模型中,有6种类型的边。
- Video-Video边:如果一个用户先后看完了两个video(看完指的是看视频的时间超过视频本身时间的70%),这两个video之间就存在一条边,这些边反映了用户直接的观看习惯。
- Video-User边:如果一个用户组在一周内看一个视频超过3次,那么该视频和用户组就存在一条边,这种粗粒度的边反应了社群特征。
- Video-Tag边:该边反应了视频粗粒度的语义特征。
- Video-Word边:该边反应了视频细粒度的语义特征。
- Video-Media边:该边刻画了视频提供者特征。
- Tag-Tag边:如果两个Tag同时出现在一个视频上,则这两个Tag存在一条边,反应了Tag之间的联系。
所有边都是无向无权的,相比较直接用用户,item进行建模,这些多样性的边给模型带来了更多信息,值得注意的是,在这种模型框架下,我们很容易增加更多类型的node和边来丰富多样性。
表示学习网络
不同类型的节点如何表示呢?首先把所有不同类型的节点映射到一个特征空间,对第K个节点而言,它的所有邻居节点Nk可以被分类为5种类型,视频(v)、tag(t)、媒体(m)、用户(u)、文本(d),直接分别embedding后concat就是该节点的embedding。
![v2-b333b789d5eb7871fa508aa1b4e01528_b.jpg](https://i-blog.csdnimg.cn/blog_migrate/b94d94fbf5d3df8f8bfaab7a36919abd.png)
图中Field-level HGAT就是把第K个节点的所有邻居节点通过上述方式embeding后(f1~fk)作为输入,该文还提出了权重向量组下式:
![v2-d42ed334de191f44bb3ead7b69712cdb_b.jpg](https://i-blog.csdnimg.cn/blog_migrate/bc2a851ae9da34e0db25e30bc8bc0e09.png)
为的是从中f1~fk提取5种类型的特征。如生成视频特征的embedding如下式所示:
![v2-2bdb5ab36b4c2d5cec11081696731412_b.jpg](https://i-blog.csdnimg.cn/blog_migrate/b5ba80e752744f5aa3f1a5c8133c7c4b.png)
然后把5种特征embeding concat后做非线性映射:
![v2-20069fd3ea1d2e05d8210d6c4fd3c378_b.jpg](https://i-blog.csdnimg.cn/blog_migrate/d55733cadc6be1f2cb967ff22fd04300.png)
同时还要带上中心节点的特征:
![v2-5da9aa2e3bc00c0c8a0d74d93e83bf0f_b.jpg](https://i-blog.csdnimg.cn/blog_migrate/b8209e68966f494c46929e4850cf6e4c.png)
最后把所有特征融合:
![v2-601e77b606c476293deac19393d294d6_b.jpg](https://i-blog.csdnimg.cn/blog_migrate/662a88c342c844953b1e2d6c723e6ea9.png)
训练目标和deep walk类似,用的neighbor-similarity based loss,如下公式所示:
![v2-d5790b10dc2f7091f7ff8f14467a4c20_b.jpg](https://i-blog.csdnimg.cn/blog_migrate/fbce27ba8ded4ae1870828164b6b1a22.png)
在线模块
在线模块使用一个多通道打分召回策略,综合考虑被通道召回情况,时间因素,相似度各种因素,用每一个看过的有效视频的embedding,用cos相似度召回100个视频,m表示通过m个有效观看视频,一共召回了100 * m个视频,然后通过下面公式计算分数。
首先是视频通道打分:
![v2-16ba8eaff9f8097c6e238639edf27612_b.jpg](https://i-blog.csdnimg.cn/blog_migrate/da21d300b27b70e37462006bb7baecc7.png)
![v2-e220851a982af461e933f5e92516d265_b.jpg](https://i-blog.csdnimg.cn/blog_migrate/1402167cba4dcb96df2ba9dbcf0597db.png)
在tag和media通道,通过下式计算:
![v2-7c876a3e9efd36c2b090d7ae391b3392_b.jpg](https://i-blog.csdnimg.cn/blog_migrate/e73f529b586fff1e3a9e607228a0c13b.png)
![v2-a6867373759ad0c895fb798f031f1e7f_b.jpg](https://i-blog.csdnimg.cn/blog_migrate/d95244c219072c196b4c2cc4171f751b.png)
最后融合所有通道分数,给出最后打分,在100 * m个video中,选top 500的video。
![v2-9f3817ca6f808b8fd0a4a26d319b53cf_b.jpg](https://i-blog.csdnimg.cn/blog_migrate/3cf792b228465a0531d67c42c864206f.png)
实验
准确率:
![v2-fc60016f623d27a91110dc4bf08a0491_b.jpg](https://i-blog.csdnimg.cn/blog_migrate/fb010c7de3a3f789b2814ea0a2a21080.jpeg)
多样性:
![v2-ef7137e73fb9e041bb71b42f630f563e_b.jpg](https://i-blog.csdnimg.cn/blog_migrate/4568cbda1f84e47b2dd567d165082182.jpeg)
参考文献
一个模型使召回阶段又"准确"又"多样"![v2-071e132c7353c2be34deb925be1bf617_b.jpg](https://i-blog.csdnimg.cn/blog_migrate/fc2a0f0dcac83004cef5e37a7284455d.jpeg)