一文看懂推荐系统:排序01:多目标模型

提示:最近系统性地学习推荐系统的课程。我们以小红书的场景为例,讲工业界的推荐系统。
我只讲工业界实际有用的技术。说实话,工业界的技术远远领先学术界,在公开渠道看到的书、论文跟工业界的实践有很大的gap,
看书学不到推荐系统的关键技术。
看书学不到推荐系统的关键技术。
看书学不到推荐系统的关键技术。

王树森娓娓道来**《小红书的推荐系统》**
GitHub资料连接:http://wangshusen.github.io/
B站视频合集:https://space.bilibili.com/1369507485/channel/seriesdetail?sid=2249610

基础知识:
【1】一文看懂推荐系统:概要01:推荐系统的基本概念
【2】一文看懂推荐系统:概要02:推荐系统的链路,从召回粗排,到精排,到重排,最终推荐展示给用户
【3】一文看懂推荐系统:召回01:基于物品的协同过滤(ItemCF),item-based Collaboration Filter的核心思想与推荐过程
【4】一文看懂推荐系统:召回02:Swing 模型,和itemCF很相似,区别在于计算相似度的方法不一样
【5】一文看懂推荐系统:召回03:基于用户的协同过滤(UserCF),要计算用户之间的相似度
【6】一文看懂推荐系统:召回04:离散特征处理,one-hot编码和embedding特征嵌入
【7】一文看懂推荐系统:召回05:矩阵补充、最近邻查找,工业界基本不用了,但是有助于理解双塔模型
【8】一文看懂推荐系统:召回06:双塔模型——模型结构、训练方法,召回模型是后期融合特征,排序模型是前期融合特征
【9】一文看懂推荐系统:召回07:双塔模型——正负样本的选择,召回的目的是区分感兴趣和不感兴趣的,精排是区分感兴趣和非常感兴趣的
【10】一文看懂推荐系统:召回08:双塔模型——线上服务需要离线存物品向量、模型更新分为全量更新和增量更新
【11】一文看懂推荐系统:召回09:地理位置召回、作者召回、缓存召回


提示:文章目录

文章目录

  • 一文看懂推荐系统:排序01:多目标模型
  • 多目标排序模型
  • 排序依据
  • 多目标排序模型,最常见的模型了
  • 实际训练的困难:样本不平衡问题
  • 预测值可能需要校准
  • 总结

多目标排序模型

前面的推荐系统系列文章,我讲了召回,下一个主题是排序

今天就先介绍最基础的多目标排序模型

我们先回顾一下推荐系统的链路,整条链路分为召回【全部讲完了】、粗排、精排、重排

链路上的第一环是召回,有很多条召回通道,从几亿篇笔记中选出几千篇做完。

召回之后要从中选出用户最感兴趣的,这就要用到粗排和精排;
粗排,给召回的笔记逐一打分,保留分数最高的几百篇,

然后用精排模型给粗排选中的几百篇笔记打分,
然后不做阶段,让几百篇笔记全都带着精排牌分数进入重排。

最后一步是重排,做多样性抽样,并且把相似内容打散,最终有几十篇笔记被选中展示给用户。

从今天开始,主要研究粗排和精排,它们的原理基本相同,只是粗排模型小,特征少,效果差一些。

粗排的目的是做快速的初步筛选,
如果不用粗排,直接把很大的精排模型用在几千篇候选笔记上,计算代价承受不住。

粗排和精排的原理差不多,所以我讲解排序的时候就先不区分粗排和精排了

以小红书为例,排序的主要依据是用户对笔记的兴趣,
兴趣可以反映在用户与笔记的交互上,
对于每篇笔记,系统会记录下面这些统计量,

曝光次数number of impressions,就是一篇笔记,被展示给多少用户,展示之后才会有点击等行为。

点击次数,Number of clicks,就是一篇笔记被多少用户点开,

除此之外还有点赞次数,Number of likes,

收藏次数,Number of collects

转发次数,Number of shares

如果不理解我在说什么,建议先看一下上面第一篇文章【基础知识那,或者接着往下看我定义给你瞅瞅】。

可以用点击率之类的消费指标衡量一篇笔记受欢迎的程度。

点击率等于点击次数除以曝光次数
差不多有百分之一二十。

用户点开笔记之后才会发生点赞、收藏、转发等行为。
点赞率等于点赞次数除以点击次数,注意这里的分母是点击次数,而不是曝光次数。

收藏率的定义是类似的点击率,等于收藏次数除以点击次数

转发率等于转发次数除以点击次数
转发是很少见的行为,远少于点赞和收藏,但是转发很重要,
转发到微信之类的平台,可以给小红书吸引到外部的流量

推荐系统,召回几千篇笔记,然后做排序,从召回的笔记中选出几十篇展示给用户。

那么排序的依据是什么?在把笔记展示给用户之前,我们要事先预估

排序依据

估用户对笔记的兴趣,这些都使用机器学习的方法,对点击率、点赞率、收藏率、转发率之类的指标做预估,

做完预估之后,要对这些分数做融合,
最简单的融合公式就是加权和。

比如点击率的权重是一点赞率、收藏率、转发率之类的权重,都是2权重,是做ab测试调出来的,
当然有很多比加权平均更好的融合公式,后面我们会讲,

最后按照融合的分数给笔记做排序和截断,保留分数最高的笔记,淘汰分数低的笔记,

多目标排序模型,最常见的模型了

下面我要讲解排序用的多目标模型。

现在工业界基本上都用这种模型,当然会在这个基础上做很多改进。

排序模型的输入是各种各样的特征,把能用到的特征都用到了。

用户特征主要是用户ID和用户画像,
物品特征,包括物品ID,物品画像,还有作者信息。

统计特征包括用户统计特征和物品统计特征。
比如,用户在过去30天中一共曝光了多少篇笔记,点击了多少篇笔记,点赞了多少篇笔记,
再比如候选物品,在过去30天中一共获得了多少次曝光机会,获得多少次点击、点赞

场景特征是随着用户请求传过来的,包含当前的时间、用户所在的地点,这些信息对推荐很有用,
比方说候选物品跟用户如果在同一个城市,那么用户对物品会有更高的兴趣。
再比如,当前是否是周末节假日,也会影响用户的兴趣。

把这些特征做concat输入神经网络,

神经网络可以是简单的全连接网络,可以是wide and deep,也可以是更复杂的结构。
这里是前期融合哦,前期融合方式叫排序、后期融合叫召回

神经网络会输出一个向量,这个向量再输入四个神经网络,
每个神经网络有两到三个全连接层,最后一个激活函数是sigmoid。

四个神经网络分别输出点击率、点赞率、收藏率、转发率的预估值,
四个预估值都是实数介于零到一之间。

推荐系统排序就主要靠这四个预估值,他们反映出用户对物品的兴趣。

接下来我要讲模型的训练,把模型输出的点击率、点赞率、收藏率、转发率分别记作P1P2P3P4,
他们都是模型做出的预估。

做训练的时候,我们要让这些预估值去拟合真实的目标
把真实的目标记作Y1到Y4,分别对应点击、点赞、收藏、转发的行为,
Y要么是零,要么是1。比如四个数分别是1001,
意思是用户对物品有点击,没点赞、没收、藏有、转发,
这些是用户真实的行为,被系统记录下来,
我们要用这样的数据来训练模型,训练是要鼓励模型的预测接近目标

就是二元分类,比如判定用户是否会点击物品,由点击、点赞、收藏、转发这四个任务
每个任务都是一个二元分类。
既然是二元分类,我们就用交叉商损失函数

对于点击这个任务,我们用Y1和P1的交叉商作为损失函数,P1越接近Y1,那么损失函数就越小。

我们把四个损失函数的加权和作为总的损失函数权重。

Alpha是根据经验设置的,在收集的历史数据上训练神经网络的参数。
最小化损失函数,损失函数越小,说明模型的预测越接近真实目标。

做训练的时候,把损失函数关于神经网络的参数求梯度,做梯度下降,更新神经网络的参数。

实际的训练中会有很多困难,我重点讲其中一个

实际训练的困难:样本不平衡问题

做训练的时候存在类别不平衡的问题,正样本少,负样本多,比方说每给用户曝光100篇笔记用户,

点击十篇,其他90篇没有点击,
有点击的是正样本,没有点击的是负样本。

用户点开100篇笔记之后,转发其中的十篇,其余90篇没有转发,
转发的是正样本,没有转发的是负样本。

这负样本的数量非常不平衡,较太多的负样本用途不大,白白浪费计算资源

解决方案就是副样本的随机降采样down-sampling
负样本过多,所以我们不用全部的负样本,只用其中一小部分负样本,
这样的话,这负样本的数量会稍微平衡一些,
这样可以减少样本数量,降低训练的计算代价。

比方说,原本一天积累的数据需要在集群上训练十个小时,
将负样本采样之后,负样本的数量减少了很多,那么训练只需要三个小时,

预测值可能需要校准

给定用户特征和物品特征,用神经网络预估出点击率、点赞率等分数,之后要对这些预估分数做校准

做完校准之后才能把预估值用于排序。

首先解释一下为什么要做校准???

设正样本和负样本的数量分别是N加和N减,

以点击为例,曝光之后有点击就是个正样本,否则就是负样本。
负样本数量通常远大于正样本,在训练的时候会对负样本做降采样,抛弃一部分负样本,
这样会让正负样本的差距不太悬殊。

把采样率记作Alpha,它介于零到一之间。

使用的负样本的数量等于阿尔法乘以N减,由于减少了负样本数量,模型预估的点击率会大于真实点击率。

阿尔法越小负,样本越少,模型对点击率的高估就会越严重。

下面我要推导校准公式,

对预估的点击率做校准,把真实的点击率记作Ptrue,它的期望等于正样本数量N加除以样本总数。

样本总数等于N加加上N减,

预估的点击率叫做p predict。
它的期望等于正样本数量N加除以训练用的样本总数,
也就是公式中的分母N加加上Alpha乘以N减

Alpha是采样率,用来减少负样本数量。

把上面两个公式结合起来,消掉N加和N减,得到了下面的公式。

这个公式就是对预估点击率的校准,
等式左边的p true。
表示校准之后的点击率

等式右边是对预估点击率p predict做的变化
公式中用到了采样率Alpha,

在线上做排序的时候,首先要模型预估点击率,P predict,
然后我们用这个公式做校准,
最后拿校准之后的点击率作为排序的依据。

okay,这节介绍了排序的多目标模型,用于估计点击率、点赞率等指标,做完预估之后要跟预估值进行校准

相信大家已经理解了多目标模型以及预估值的校准公式!


总结

提示:如何系统地学习推荐系统,本系列文章可以帮到你

(1)找工作投简历的话,你要将招聘单位的岗位需求和你的研究方向和工作内容对应起来,这样才能契合公司招聘需求,否则它直接把简历给你挂了
(2)你到底是要进公司做推荐系统方向?还是纯cv方向?还是NLP方向?还是语音方向?还是深度学习机器学习技术中台?还是硬件?还是前端开发?后端开发?测试开发?产品?人力?行政?这些你不可能啥都会,你需要找准一个方向,自己有积累,才能去投递,否则面试官跟你聊什么呢?
(3)今日推荐系统学习经验:这节介绍了排序的多目标模型,用于估计点击率、点赞率等指标,做完预估之后要跟预估值进行校准

一文看懂推荐系统:排序01:多目标模型相关推荐

  1. 一文看懂推荐系统:概要01:推荐系统的基本概念

    一文看懂推荐系统:概要01:推荐系统的基本概念 提示:最近系统性地学习推荐系统的课程.我们以小红书的场景为例,讲工业界的推荐系统. 我只讲工业界实际有用的技术.说实话,工业界的技术远远领先学术界,在公 ...

  2. 一文看懂推荐系统:排序06:粗排三塔模型,性能介于双塔模型和精排模型之间

    一文看懂推荐系统:排序06:粗排三塔模型,性能介于双塔模型和精排模型之间 提示:最近系统性地学习推荐系统的课程.我们以小红书的场景为例,讲工业界的推荐系统. 我只讲工业界实际有用的技术.说实话,工业界 ...

  3. 一文看懂推荐系统:排序16:Dual Augmented Two-tower Model和张俊林的SENet,都是为了加入特征交叉想,增强重要特征,去掉噪声,类似于attention的骚操作

    一文看懂推荐系统:排序16:Dual Augmented Two-tower Model和张俊林的SENet,都是为了加入特征交叉想,增强重要特征,去掉噪声,类似于attention的骚操作 提示:最 ...

  4. 一文看懂推荐系统:排序04:视频播放建模

    一文看懂推荐系统:排序04:视频播放建模 提示:最近系统性地学习推荐系统的课程.我们以小红书的场景为例,讲工业界的推荐系统. 我只讲工业界实际有用的技术.说实话,工业界的技术远远领先学术界,在公开渠道 ...

  5. 一文看懂推荐系统:物品冷启05:流量调控

    一文看懂推荐系统:物品冷启05:流量调控 提示:最近系统性地学习推荐系统的课程.我们以小红书的场景为例,讲工业界的推荐系统. 我只讲工业界实际有用的技术.说实话,工业界的技术远远领先学术界,在公开渠道 ...

  6. 一文看懂推荐系统:Gate网络2:百度GemNN(Gating-Enhanced Multi-Task Neural Networks)

    一文看懂推荐系统:Gate网络2:百度GemNN(Gating-Enhanced Multi-Task Neural Networks) 提示:最近系统性地学习推荐系统的课程.我们以小红书的场景为例, ...

  7. 一文看懂推荐系统:召回07:双塔模型——正负样本的选择,召回的目的是区分感兴趣和不感兴趣的,精排是区分感兴趣和非常感兴趣的

    一文看懂推荐系统:召回07:双塔模型--正负样本的选择,召回的目的是区分感兴趣和不感兴趣的,精排是区分感兴趣和非常感兴趣的 提示:最近系统性地学习推荐系统的课程.我们以小红书的场景为例,讲工业界的推荐 ...

  8. 一文看懂推荐系统:Gate网络(一):新浪微博GateNet,GateNet就是想用attention的方法去搞,和SENet一样,都是张俊林的杰作

    一文看懂推荐系统:Gate网络(一):新浪微博GateNet,GateNet就是想用attention的方法去搞,和SENet一样,都是张俊林的杰作 提示:最近系统性地学习推荐系统的课程.我们以小红书 ...

  9. 一文看懂推荐系统:物品冷启02:简单的召回通道

    一文看懂推荐系统:物品冷启02:简单的召回通道 提示:最近系统性地学习推荐系统的课程.我们以小红书的场景为例,讲工业界的推荐系统. 我只讲工业界实际有用的技术.说实话,工业界的技术远远领先学术界,在公 ...

最新文章

  1. Python 数据类型
  2. 缺少com.umeng.analytics.MobclickAgent包,引入需注意
  3. 中后台管理信息系统通用原型方案_AxureUX客户关系管理系统后台设置中心原型模板正式发布...
  4. centos下git clone报401错误解决办法
  5. 谷歌浏览器flash_谷歌浏览器不支持Flash Player的问题
  6. 深入了解HashMap
  7. 给网站加上“新年快乐”灯笼源码
  8. Visual Studio 2005 中的新增安全性功能
  9. tf.GraphKeys,tf.add_to_collection() 与 tf.get_collection()
  10. AndroidStudio使用XmlPullParser解析xml文件
  11. 用友NC CLOUD 工具
  12. LabVIEW软件、驱动安装及编程方法(理论篇—2)
  13. 手机上如何修改寸照背景颜色
  14. 如何制作flash视频动画
  15. Spark代码2之Transformation:union,distinct,join
  16. 最近常用容易遗忘的命令
  17. http 请求 405 错误,解决办法
  18. 多线程就一定快吗?天真!
  19. 计算机中mu的作用是什么,计算机上M+ M- MU GT等分别代表意思.doc
  20. OpenCV-趣味小游戏-手掌击球

热门文章

  1. Angular7 + 各个省市地图【传入不同的行政区code自动生成对应的echarts地图】
  2. python filetype pdf_Python整合pdf【新手必学】
  3. html计时器重置,使用JavaScript实现网页秒表功能(含开始、暂停、继续、重置功能)...
  4. Mybatis中SqlSession下的四大核心组件分析
  5. ssm+校园疫情申报系统 毕业设计-附源码221228
  6. 金山-垃圾清理模块架构
  7. python安装kivy_Python安装kivy实现制作app
  8. charles 过滤器-简单过滤和设置过滤
  9. centos解压分卷rar_CentOS解压rar文件
  10. WinAVI Video Converter 7.1 注册码