一个推荐系统,大致就分为两个模块,召回和排序。再细分下去就是召回,粗排,精排,重排。不管推荐系统多么复杂,无非是为了两个目标,推荐的准确,且多样化。为了实现多样化,往往是在排序中对同质的item做了指纹去重处理。但是如果召回侧多样性不足,排序无论怎么优化都不能达到最优,所以这篇《Improving Accuracy and Diversity in Matching of Recommendation with Diversified Preference Network》就来探讨如何在召回侧,用一个端到端模型GraphDR实现多样化的召回。

模型结构

GraphDR包含3个模块,如下图所示,包含多样偏好网络(Diversified Preference Network),网络表示学习(Network representation learning)和在线多通道匹配(online multi-channel matching)。

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。

图中Field-level HGAT就是把第K个节点的所有邻居节点通过上述方式embeding后(f1~fk)作为输入,该文还提出了权重向量组下式:

为的是从中f1~fk提取5种类型的特征。如生成视频特征的embedding如下式所示:

然后把5种特征embeding concat后做非线性映射:

同时还要带上中心节点的特征:

最后把所有特征融合:

训练目标和deep walk类似,用的neighbor-similarity based loss,如下公式所示:

在线模块

在线模块使用一个多通道打分召回策略,综合考虑被通道召回情况,时间因素,相似度各种因素,用每一个看过的有效视频的embedding,用cos相似度召回100个视频,m表示通过m个有效观看视频,一共召回了100 * m个视频,然后通过下面公式计算分数。

首先是视频通道打分:

在tag和media通道,通过下式计算:

最后融合所有通道分数,给出最后打分,在100 * m个video中,选top 500的video。

实验

准确率:

多样性:

参考文献

一个模型使召回阶段又"准确"又"多样"

更多干货,请关注公众号:炼丹笔记

一个端到端模型GraphDR实现多样化的召回相关推荐

  1. 3.2 实战项目二(手工分析错误、错误标签及其修正、快速地构建一个简单的系统(快速原型模型)、训练集与验证集-来源不一致的情况(异源问题)、迁移学习、多任务学习、端到端学习)

    手工分析错误 手工分析错误的大多数是什么 猫猫识别,准确率90%,想提升,就继续猛加材料,猛调优?     --应该先做错误分析,再调优! 把识别出错的100张拿出来, 如果发现50%是"把 ...

  2. COLING 2018 ⽤对抗增强的端到端模型⽣成合理且多样的故事结尾

    本⽂介绍哈尔滨⼯业⼤学社会计算与信息检索研究中⼼( SCIR)录⽤于COLING 2018的论⽂< Generating Reasonable and Diversified Story End ...

  3. 利用 AssemblyAI 在 PyTorch 中建立端到端的语音识别模型

    作者 | Comet 译者 | 天道酬勤,责编 | Carol 出品 | AI 科技大本营(ID:rgznai100) 这篇文章是由AssemblyAI的机器学习研究工程师Michael Nguyen ...

  4. Google提出移动端新SOTA模型MixNets:用混合深度卷积核提升精度

    作者 | Google 译者 | 刘畅 编辑 | Jane 出品 | AI科技大本营(ID:rgznai100) [导语]目前,深度卷积(Depthwise convolution)在追求高性能的卷积 ...

  5. 可以在手机里运行的Detectron2来了:Facebook官方出品,支持端到端模型训练、量化和部署...

    鱼羊 发自 凹非寺 量子位 报道 | 公众号 QbitAI 做目标检测.语义分割,你一定听说过Detectron2. 作为一个基于PyTorch实现的模块化目标检测库,Detectron2当年刚一开源 ...

  6. 百度宣布AI语音调用登顶中国第一,自研芯片+最新端到端模型颠覆传统语音识别算法...

    晓查 发自 凹非寺 量子位 报道 | 公众号 QbitAI 2019年,NLP和语音技术取得了多项技术突破,但是科技公司考虑更多的是AI的"场景",如何在各种场景中都能方便地集成语 ...

  7. Jarvis:一个值得关注的多模态端到端人机对话框架,针对所有行业适配

    说到应用级的人机对话框架,很多人可能首先想到的是RASA开源项目.不过,今天跟大家简要分享一个功能更为丰富.性能更为强劲的多模对话框架--Jarvis,非常值得对话系统从业者关注一下. Jarvis是 ...

  8. 论文浅尝 | 使用预训练深度模型和迁移学习方法的端到端模糊实体匹配

    论文笔记整理:高凤宁,南京大学硕士,研究方向为知识图谱.实体消解. 链接:https://doi.org/10.1145/3308558.3313578 动机 目前实体匹配过程中实体之间的差异比较微妙 ...

  9. 什么是端到端模型(end-to-end learning)?

    非端到端 传统机器学习的流程往往由多个独立的模块组成,比如在一个典型的自然语言处理(Natural Language Processing)问题中,包括分词.词性标注.句法分析.语义分析等多个独立步骤 ...

最新文章

  1. xdoj(1187~1195 )Orz熊猫杯。
  2. java 重写构造函数,覆盖Java中的默认构造函数
  3. DevExpress控件使用系列--ASPxUploadControl(图片上传及预览)
  4. SCROLLINFO结构详解
  5. 如何计算_平整场地如何计算?
  6. pip安装库包遇到错误:TypeError: expected str, bytes or os.PathLike object, not int 的解决方法
  7. 数字新写法3_000_000,简单明了
  8. AndroidStudio中提示:This project uses AndroidX dependencies, but the ‘android.useAndroidX‘ property is
  9. 特征工程完全手册 - 从预处理、构造、选择、降维、不平衡处理
  10. ABB机器人ROBOTSTUDIO中轨迹与二次开发的问答
  11. html5 video修改默认样式,HTML5中将video设置为背景的方法
  12. Tomcat学习笔记(一)
  13. ActiveX控件的另类免费签名法
  14. asp.net(c#)网页跳转七种方法小结
  15. 异常:org.springframework.http.converter.HttpMessageNotReadableException
  16. 马哥 linux 活动,马哥linux | Linux系统性能和使用活动监控工具 sysstat
  17. HTML实现页面跳转的几种方法
  18. 高效能人士的七个习惯读后感与总结概括-(第五章)
  19. 武汉大学计算机学院乒乓球室,武汉大学经济管理学院教职工乒乓球队在武汉大学师生乒乓球赛中获佳绩...
  20. MySQL中rank函数的使用

热门文章

  1. Android 通过代码改变控件的布局方式
  2. .NET打包工具怎么注册 .dll文件??
  3. OriginPro 2021b SR1 9.8.5 for win 科学绘图完美中文版
  4. python抢票代码_教你用Python动刷新抢12306火车票,附源码!
  5. 计算机视觉与深度学习 | 双目视觉SLAM之ORB-SLAM2的Matlab实现(完整代码)
  6. IsWindow函数的作用
  7. mysql怎么实现事务序列化_一文快速搞懂MySQL InnoDB事务ACID实现原理(转)
  8. 英语语法---动名词短语详解
  9. python3精要(25)-lambda
  10. 【机器学习】从一个风控案例讲起-古老而经典的朴素贝叶斯