. 算法原理
在YouTube的召回模型(有时也被称为DeepMatch,下面统称为DeepMatch)中,将视频的召回问题转化成一个多类别的分类问题,即每一个视频为一个类别,这个与word2vec的算法思路一致(每个词为一个类别)。假设V VV是视频的集合,对于用户U UU和上下文C CC,在t tt时刻,第i ii个视频被召回的概率为:

表示的是候选视频的向量。召回模型的模型结构与一般的MLP一致,大体结构如下图所示:

2.1. 特征选择和特征处理
为了表征( u s e r , c o n t e x t ) \left ( user,context \right )(user,context),模型中的特征主要是使用用户的静态特征和隐式反馈的一些数据。从图中可以看出,模型的输入包括用户的观看过的视频的embedding,用户搜索过的token的embedding,用户的地理信息embedding,用户的年龄和性别信息,下面分别对这些特征以对应特征的处理方法做一些介绍。

embedded video watches。这是第一部分的特征,也是较为直接的特征,即对用户观看过的视频做embedding操作,取用户观看过视频的ID,并通过embedding方式将其转换成向量,并对其做average作为watch vector。
embedded search tokens。这部分的特征来自于用户的历史搜索,将用户的历史搜索的词转换成向量,并对其做average作为search vector。
人口统计信息。主要包括年龄,性别,登录状态,地理位置以及设备等,这类信息可通过归一化直接作为一维特征。
example age。这是一类比较特殊的特征。
对于YouTube这样的平台来说,每一秒中都有大量视频被上传,推荐最新的视频对于YouTube来说是极其重要的。同时,数据也显示用户更倾向于尽管相关度不高但是是最新的视频。文中并没有指出这个特征是如何获取到的,只是交待了在线上服务阶段,该特征被设置为0或者负数。而对于训练过程中,一种猜测是训练的时间减去样本采集的时间。

2.2. 样本选择
对于样本的选择,DeepMatch模型中,正样本是用户所有完整观看过的视频,其余可以视作负样本。同时,对于每一个用户都生成了固定数量的训练样本,使得每个用户在损失函数中的地位都是相等的,防止一小部分超级活跃用户主导损失函数。

在处理测试集时,没有采用随机留一法(random holdout),而是把用户最近的一次观看行为作为测试集,主要是为了避免引入超越特征。

2.3. 模型训练
在模型的训练过程,DeepMatch采用了与word2vec类似的多分类方法,DeepMatch采用的是负样本采样(sample negative classes),以此将类别的数量减少。文中也提到了word2vec中常用的层次softmax的方法。

在模型中,对待用户的搜索历史或者观看历史这两维特征时,并没有选择时序模型,而是采用对历史记录取平均。防止模型对用户的时序过于敏感,文中举的例子是如果用户刚搜索过“tayer swift”,你就把用户主页的推荐结果大部分变成tayer swift有关的视频,这样会导致非常差的体验。

2.4. 在线服务
对于在线服务来说,除了模型的效果外,最重要的是对性能的要求,在DeepMatch中使用预先训练好的用户向量u uu(上图中的user vector)和视频的向量v j v_jv 
j
​    
 (上图中的vedio vectors v j v_jv 
j
​    
 ),通过计算两个向量的相似度作为召回的方法,那么如何产出用户向量和视频向量?其中,用户向量取模型最后一层激活函数ReLU的输出,这一点也比较好理解,对于模型的输入要么是用户的行为日志,要么是用户的静态属性,通过神经网络,能够学到对用户的表示。而模型的目标是计算第j jj个视频的概率,其过程可以表示为:
————————————————
版权声明:本文为CSDN博主「zhiyong_will」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/google19890102/article/details/108864737

DeepMatch推荐系统中的常用算法——Youtube的DeepMatch相关推荐

  1. 推荐系统中的常用算法——序列深度匹配SDM

    1. 概述 推荐系统中的算法通过用户的历史行为数据挖掘用户的偏好,实现对用户偏好的建模,从而达到为用户推荐用户感兴趣的item.用户的兴趣偏好通常是多变的,而且是多样的.然而传统的基于item的协同过 ...

  2. 推荐系统中的常用算法——基于Session的推荐

    1. 概述 <Session-based recommendations with recurrent neural networks>首次提出将RNN方法应用于Session-based ...

  3. 推荐系统中的召回算法大致梳理(非完整)

    推荐系统中的召回算法大致梳理(非完整) 定义 推荐策略中的两个关键问题分别是"召回"和"排序". "召回match"是指从全量信息中触发尽可 ...

  4. 【干货】推荐系统中的机器学习算法与评估实战

    [导读]推荐系统是机器学习技术在企业中最成功和最广泛的应用之一.本文作者结合MLMU演讲[1]的Slides,对推荐系统的算法.评估和冷启动解决方案做了详细的介绍. 作者 | Pavel Kordík ...

  5. 分支限界法 java_java中的常用算法之分支限界算法

    一.基本描述 类似于回溯法,也是一种在问题的解空间树T上搜索问题解的算法.但在一般情况下,分支限界法与回溯法的求解目标不同.回溯法的求解目标是找出T中满足约束条件的所有解,而分支限界法的求解目标则是找 ...

  6. 推荐系统中的召回算法--协同过滤

    工业界通用推荐系统架构: Match&Rank 定义:Match基于当前user(profile.history)和context,快速在全库中找到TopN最相关的Item,给Rank来做小范 ...

  7. 神经网络中的常用算法-BN算法

    目录 一.引言 二.Convariate shift 三.算法 1.算法公式 2.训练中的BN算法 3.测试和推理中的BN算法 四.BN算法在网络中的作用 1.优点 2.缺点 五.论文 一.引言 传统 ...

  8. 神经网络中的常用算法-梯度下降算法

    目录 一.概述 二.算法思想 1.一维 2.多维 三.梯度下降算法类型 1.批量梯度下降算法 2.随机梯度下降算法 3.小批量梯度下降算法 一.概述 梯度下降法(Gradient descent )是 ...

  9. 神经网络中的常用算法-梯度下降算法的优化

    一.概述 梯度下降法(Gradient descent )是一个一阶最优化算法,通常也称为最陡下降法 ,要使用梯度下降法找到一个函数的局部极小值 ,必须向函数上当前点对应梯度(或者是近似梯度)的反方向 ...

  10. 推荐系统中协同过滤算法实现分析

    原创博客,欢迎转载,转载请注明:http://my.oschina.net/BreathL/blog/62519 最近研究Mahout比较多,特别是里面协同过滤算法:于是把协同过滤算法的这个实现思路与 ...

最新文章

  1. 嵌入式java闹钟 实验报告_《Java程序设计》第五次实验实验报告
  2. 我说分布式事务之消息最终一致性事务(二):RocketMQ的实现
  3. 从Windows 2012标准版升级到数据中心版
  4. UI5 xml view里control id的生成逻辑
  5. Kotlin学习笔记(六) 伴生对象 对象表达式
  6. 无向图g的邻接矩阵一定是_矩阵是图
  7. HTML5 Web Storage API
  8. 计算机应用理论题计算机系统,计算机应用理论题.doc
  9. GB28181---XML解析
  10. windows7怎么升级10_最新主板真的无法安装windows7吗?
  11. Webservice接口之CXF框架及Axis框架
  12. 室内定位导航-室内地图导航-高精度地图应用场景
  13. WPF实现半圆形导航菜单
  14. 读取yaml文件出现UnicodeDeco: ‘gbk‘ codec can‘t decode byte 0xaf in position 68: illegal multibyte sequen报错
  15. 计算机ctrl加的功能,电脑截图快捷键ctrl加什么键
  16. linux 串口转网口工具,linux下串口调试工具/串口终端推荐: picocom(转)
  17. xxxxxlllllxl的专栏 链接,很多实际动手操作的东西
  18. 使用 IDEA 远程 Debug 调试
  19. mpvue项目中使用第三方UI组件库
  20. 用AI“狙杀”威胁地球的天体 这个团队花5万美元做到了

热门文章

  1. linux tomcat catalina.out 乱码,Tomcat输出日志乱码解决
  2. python enumerate() 函数的使用方法
  3. java面试| 精选基础题(1)
  4. powershell 模拟IE行为
  5. 国产操作系统思普将起诉微软涉嫌“商业诋毁”
  6. 基于SpringCloud Alibaba实现的论坛
  7. 深入理解jQuery中的事件冒泡
  8. wordpress自定义打赏
  9. php 页面缓存的做法,使用php进行页面缓存
  10. javascript网页自动填表_javascript实现自动填写表单实例简析