一文看懂推荐系统:排序01:多目标模型 |
您所在的位置:网站首页 › 推荐算法排序模型 › 一文看懂推荐系统:排序01:多目标模型 |
一文看懂推荐系统:排序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)今日推荐系统学习经验:这节介绍了排序的多目标模型,用于估计点击率、点赞率等指标,做完预估之后要跟预估值进行校准 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |