DNN for Youtube Recommend System简介

2023-10-20 10:10

本文主要是介绍DNN for Youtube Recommend System简介,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Abstract

这篇论文主要详细讲述了深度候选生成模型以及描述了一个深度排序模型。同时也提供了practical lessons and insights。

Introduction

YouTube推荐面临三个挑战:

  1. 规模:数据规模大,在小数据集上运行好的算法对youtube不适用
  2. 更新频率:youtube视频更新频率很高,每秒有小时级别的视频上传,需要在新发布视频和已有存量视频间进行balance。
  3. 噪音:用户历史表现总是很稀疏,以及无法观察的外部因素。对用户满意度无法有一个真正的了解,只有一些嘈杂的隐性的反馈信号。视频本身很多数据都是非结构化的。

System overview

整个推荐系统分为candidate generation和ranking两个阶段。在candidate generation阶段相对比较粗糙的召回,在rankin阶段比较精细的计算排序。

在这里插入图片描述

Recommendation as Classification

推荐问题变成了一个大规模的多分类问题。在时刻t,为用户U,上下文context,从视频库V中预测视频i的概率,推荐概率最大的视频。公式如下:

在这里插入图片描述

向量u是用户与上下文的高维embedding,向量j是视频j的embedding向量。DNN的目标就是在用户信息和上下文信息为输入条件下学习用户的embedding向量。

Efficient Extreme Multiclass

为了有效的在这种大规模问题上分类,youtube采用负采样,来提高效率。

Model Architecture

在这里插入图片描述

整个模型架构是包含三层全连接层,使用relu激活函数。输入是用户观看历史、搜索历史、地理位置、example age和其余上下文信息concat成的输入向量;输出分线上和离线训练两个部分。

训练阶段使用softmax输出概率,在服务期间则直接使用接近最近邻搜索来进行生产候选的N个视频。

Heterogeneous Signals

类似于word2vec的做法,每个视频都会被embedding到固定维度的向量中。用户的观看视频历史则是通过变长的视频序列表达,最终通过加权平均(可根据重要性和时间进行加权)得到固定维度的watch vector作为DNN的输入。

引入DNN的好处则是任意的连续特征和离散特征可以很容易添加到模型当中。

主要特征:

  • 搜索历史:搜索历史与观看历史被同等对待,把历史搜索的query分词后的token的embedding向量进行加权平均,能够反映用户的整体搜索历史状态
  • 人口统计学信息:性别、年龄、地域等
  • 其他上下文信息:设备、登录状态等

“Example Age” Feature

虽然用户偏爱新鲜的内容哪怕牺牲相关性。但是youtube也不会因为一个视频是新的所以就推荐给用户。

机器学习系统总是利用历史的例子去预测未来,所以对过去总会有一个隐含的偏差。为了矫正偏差,youtube把训练集的上线时间当作一个特征。下图也充分证明了该方法的有效性。

在这里插入图片描述

Label and Context Selection
  1. 训练数据被生成来自所有youtube的影片而不是只是我们推荐的影片数据。

  2. 每个用户都有固定数量的训练集。

  3. 丢弃序列信息以及以一个无序的token袋表达查询请求

  4. asymmetric co-watch:研究发现预测用户的下一个观影数据有更好的表现比从用户历史数据中任意选择效果好。

    在这里插入图片描述

Ranking

Ranking阶段的最重要任务就是精准的预估用户对视频的喜好程度。在排序阶段面对的数据集比较小,因此会采用更多的特征来计算。
作者在排序阶段所设计的DNN和上文的DNN的结构是类似的,并基于逻辑回归对每一个视频进行独立打分,也就是说,离线训练模块,对视频的打分函数不再是softmax,而是采用的逻辑回归。排序DNN参见下图:

在这里插入图片描述

Feature Engineering

然而在搜索和推荐场景,我们的很难把原始数据直接作为FNN的输入,特征工程仍然很重要

Embedding Categorical Features

NN更适合处理连续特征,因此稀疏的特别是高基数空间的离散特征需要embedding到稠密的向量中。

Normalizing Continuous Features

一个符合f分布的特征x,等价转化成x~,用微积分使其均匀的分布在[0,1)区间上。

Modeling Expected Watch Time

这个模型是基于交叉熵损失函数的逻辑回归模型训练的。但是我们用观看时长对正样本做了加权,负样本都用单位权重(即不加权)。这样,我们通过逻辑回归学到的优势就是 ( ∑ T i ) ( N − k ) \frac{( ∑Ti )}{(N-k)} (Nk)(Ti),其中N是样本数量,k是正样本数量,Ti是观看时长。假设正样本集很小,那么我们学到的优势就近似 E [ T ] ( 1 + P ) \frac{E[T]}{(1+P)} (1+P)E[T],P是点击概率,E[T]是观看时间的期望值。因为P很小,那么这个乘积就约等于E[T]。我们用指数函数 e x e^x ex作为最终的激活函数来产生近似观看时长的估计值。

这篇关于DNN for Youtube Recommend System简介的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/246443

相关文章

Android Mainline基础简介

《AndroidMainline基础简介》AndroidMainline是通过模块化更新Android核心组件的框架,可能提高安全性,本文给大家介绍AndroidMainline基础简介,感兴趣的朋... 目录关键要点什么是 android Mainline?Android Mainline 的工作原理关键

Oracle数据库如何切换登录用户(system和sys)

《Oracle数据库如何切换登录用户(system和sys)》文章介绍了如何使用SQL*Plus工具登录Oracle数据库的system用户,包括打开登录入口、输入用户名和口令、以及切换到sys用户的... 目录打开登录入口登录system用户总结打开登录入口win+R打开运行对话框,输php入:sqlp

Golang的CSP模型简介(最新推荐)

《Golang的CSP模型简介(最新推荐)》Golang采用了CSP(CommunicatingSequentialProcesses,通信顺序进程)并发模型,通过goroutine和channe... 目录前言一、介绍1. 什么是 CSP 模型2. Goroutine3. Channel4. Channe

Java中的Opencv简介与开发环境部署方法

《Java中的Opencv简介与开发环境部署方法》OpenCV是一个开源的计算机视觉和图像处理库,提供了丰富的图像处理算法和工具,它支持多种图像处理和计算机视觉算法,可以用于物体识别与跟踪、图像分割与... 目录1.Opencv简介Opencv的应用2.Java使用OpenCV进行图像操作opencv安装j

ASIO网络调试助手之一:简介

多年前,写过几篇《Boost.Asio C++网络编程》的学习文章,一直没机会实践。最近项目中用到了Asio,于是抽空写了个网络调试助手。 开发环境: Win10 Qt5.12.6 + Asio(standalone) + spdlog 支持协议: UDP + TCP Client + TCP Server 独立的Asio(http://www.think-async.com)只包含了头文件,不依

业务协同平台--简介

一、使用场景         1.多个系统统一在业务协同平台定义协同策略,由业务协同平台代替人工完成一系列的单据录入         2.同时业务协同平台将执行任务推送给pda、pad等执行终端,通知各人员、设备进行作业执行         3.作业过程中,可设置完成时间预警、作业节点通知,时刻了解作业进程         4.做完再给你做过程分析,给出优化建议         就问你这一套下

容器编排平台Kubernetes简介

目录 什么是K8s 为什么需要K8s 什么是容器(Contianer) K8s能做什么? K8s的架构原理  控制平面(Control plane)         kube-apiserver         etcd         kube-scheduler         kube-controller-manager         cloud-controlle

【Tools】AutoML简介

摇来摇去摇碎点点的金黄 伸手牵来一片梦的霞光 南方的小巷推开多情的门窗 年轻和我们歌唱 摇来摇去摇着温柔的阳光 轻轻托起一件梦的衣裳 古老的都市每天都改变模样                      🎵 方芳《摇太阳》 AutoML(自动机器学习)是一种使用机器学习技术来自动化机器学习任务的方法。在大模型中的AutoML是指在大型数据集上使用自动化机器学习技术进行模型训练和优化。

Partical System

创建"粒子系统物体"(点击菜单GameObject -> Create Other -> Particle System) 添加"粒子系统组件"(点击Component -> Effects  ->Particle System) 粒子系统检视面板  点击粒子系统检视面板的右上角的"+"来增加新的模块。(Show All Modules:显示全部) 初始化模块: •

小技巧绕过Sina Visitor System(新浪访客系统)

0x00 前言 一直以来,爬虫与反爬虫技术都时刻进行着博弈,而新浪微博作为一个数据大户更是在反爬虫上不遗余力。常规手段如验证码、封IP等等相信很多人都见识过…… 当然确实有需要的话可以通过新浪开放平台提供的API进行数据采集,但是普通开发者的权限比较低,限制也比较多。所以如果只是做一些简单的功能还是爬虫比较方便~ 应该是今年的早些时候,新浪引入了一个Sina Visitor Syst