精华内容
下载资源
问答
  • 排序模型入门详解(未完待续))

    千次阅读 2019-10-31 00:13:28
    排序模型入门详解 文章目录排序模型入门详解1. 排序模型的应用场景point-wise排序模型pair-wise排序模型Ranknet https://yq.aliyun.com/articles/18 1. 排序模型的应用场景 当商家需要向用户提供多个商品供选择时,...

    排序模型入门详解



    https://yq.aliyun.com/articles/18

    1. 排序模型的应用场景

    当商家需要向用户提供多个商品供选择时,往往会遇到这个问题:如何将商品按照一定的顺序呈现给用户,以便使用户能够尽可能地完成购买流程?这就涉及到对商品的排序,用到的模型称排序模型。通常情况下,我们希望排在前面的商品是用户更大概率会点击的商品。

    根据不同类型的训练数据,可以将排序模型可以分为三大类:

    1. 单点标注(point-wise)
    2. 两两标注(pair wise)
    3. 列表标注(list wise)

    point-wise排序模型

    输入特征向量集合表示为{x(1),x(2),,x(m)}\{x^{(1)},x^{(2)},\cdots,x^{(m)}\},其中x(i)x^{(i)}是一个n维向量,各个维度的含义可以是商品的特征例如评分、小量、价格以及用户的特征例如性别、年龄、偏好等,以及用户和商品的关联特征例如是否点击过该商品、是否购买过该商品、对该商品的评价等,以及场景特征如时间、地点等;标签集合为y(1),y(2),,y(m)y^{(1)},y^{(2)},\cdots,y^{(m)},其中y(i)y^{(i)}的取值集合是一个实数,例如用户没有点击过的商品为1,用户点击过但是没购买的商品为3,用户点击并购买过的商品为10.

    在上述定义的基础上,我, 可以将point-wise排序模型转换为一个分类问题或者回归问题。如果将排序问题转换为分类问题,会导致输出只有预先定义的那几类(例如1,3,10),进而导致很多商品的label一样,无法进一步区分次序。因此,实际中往往将point-wise排序模型转换为回归问题。

    point-wise模型的缺点是,没有考虑训练样本之间的相对顺序。例如,在某次点击事件中,用户点击了样本x(i)x^{(i)},在另一次点击事件中用于点击了样本x(j)x^{(j)}(且此次事件中存在样本x(i)x^{(i)}但是用户没有点击)。根据point-wise模型,x(i)x^{(i)}x(j)x^{(j)}的标签一样,但这显然是不合理的(x(j)x^{(j)}应该比x(i)x^{(i)}更靠前才合理)。

    pair-wise排序模型

    在pair-wise模型汇总,我们不再从单文档的分类或者回归的角度去看待问题,而是从一个文档对<d1,d2><d_1,d_2>来看待问题。如果用户点击了d1d_1而没有点击d2d_2,那么说明d1d_1d2d_2更靠前,可以把d1d2d_1-d_2的label设置为+1,d2d1d_2-d_1的label设置为-1,对所有的文档pair进行这样标注,就得到了一系列用于二分类的训练样本。预测时,对测试集里面的所有pair进行分类,便可以得到测试集的一个偏序关系,从而实现排序。SVM Rank、RankNet、FRank、RankBoost等方法都是pair-wise模型。

    Ranknet

    https://www.cnblogs.com/genyuan/p/9788294.html
    RankNet提出的时候是为了解决如下搜索排序问题:给定query集合,每个query都对应着一个文档集合,如何对每个query返回排序后的文档集合。
    RankNet将输入query的特征向量xRnx\in R^n映射为一个实数f(x)Rf(x)\in R

    展开全文
  • 排序模型特征表达特征工程离散特征embedding化连续特征归一化建模观看时间Hidden layers的实验参考资料 1.YouTube论文概述 YouTube在16年发的这篇经典paper,是同时解决了推荐系统的中召回问题和排序问题,因此也有...

    1.YouTube论文概述

    YouTube在16年发的这篇经典paper,同时解决了推荐系统的召回问题和排序问题,因此也有两个网络模型:

    1.召回模型:作用是从上百万的视频库中选出数百个与用户最相关的视频;
    2.排序模型:作用是从上百个与用户相关的召回视频中选出几十个打分最高的视频。

    paper中提出了在YouTube推荐系统中三个具有挑战性的难题:

    • Scale:大规模,在其他问题表现比较好的算法模型拿过来都没法用,因为youtube用户基数和语料库特别大,需要分布式算法和高效的线上服务系统来解决;
    • Freshness:新鲜度,youtube语料库中每秒钟都会有较长的视频更新进来,那么推荐系统应该能够基于新上传的视频和用户最新的行为来推荐,因此需要平衡新上传内容和之前已经入库的视频;
    • Noise:数据噪声
      • label难以获取:youtube上的历史用户行为本来就是难以预测的,因为用户行为具有稀疏性和很多观察不到的外部因子,很难得到用户满意度的ground truth,而是只能去建模具有噪音的用户隐式反馈信号。
      • 视频数据结构化程度不好:和视频相关的元数据结构不良,没有明确定义的本体。

    YoutuBe视频推荐的的系统架构如下图所示,这也符合业界大多数推荐系统的思路,即先对大规模物料库使用简单算法召回、策略召回、深度模型召回等方式,召回一定量级的候选集,然后排序模型对候选集中每个物料进行打分,并最终返回top N的物料展现给用户。举个例子,在某生活服务电商场景下的猜你喜欢模块,从全部200个物料中,召回60个候选集,排序模型最后输出打分的top20物料展现给用户。
    在这里插入图片描述
    再来说一下在YoutuBe场景下,video corpus经过candidate model和ranking model的选择,最终选出较少的相关视频呈现给用户;candidate model阶段主要通过协同过滤算法进行个性化,用户之间的相似性是通过IDs of video watches, search query tokens and demographics;ranking model阶段就需要更加细粒度的特征表达以此来区分具有较高召回率的候选视频之间的相对重要性,同时在此阶段可以看到还有other candidate sources的输入,即混合了其他方式得到的候选集(这里引用了youtube之前的一篇paper)。

    2.召回模型

    2.1.模型细节

    召回模型架构如下所示:
    在这里插入图片描述
    下面paper从五个方面阐述了召回模型的细节之处:

    • 问题转换:paper将预估用户u视频v的点击率问题转化成一个多分类问题,也就是后面会提到的 next video的问题。由于是一个多分类问题,因此相应的概率计算公式为
      P(wi=tU,C)=eviujVeviu P(w_{i}=t|U,C)=\frac{ e^{v_{i}u} }{ \sum_{j \in V} e^{v_{i}u} }

    其中u表示一个N维的<user,context>的embedding向量表示,v_{i}表示每一个候选视频的N维的embedding向量表示,因此我们上面的深度神经网络架构是用来学习<user,context>的N维向量表示的(视频id的N维向量表示是事先已经学习好的了)。
    由于多分类的类别特别多,youtube的视频数量能达到百万量级,paper中对于多分类的效率问题是通过参考word2vec中的负样本下采样技术来解决的,只不过此处每个正样本都是采样上千个负样本,然后对于每一个正样本,都会在它以及对应的上千个采样后的负样本上计算一个交叉熵loss,这里带来的直接受益就是在速度上相比于传统的softmax有超过100倍的提升(这里paper没有说清楚是哪个过程的速度,但是从理解上来看应该是训练过程的速度)。

    • 模型架构:paper是通过预训练得到video ID的embedding向量的,由于用户的观看id的数量是变长的,而网络输入是需要定长的输入的,paper试验了avging pooling、sum pooling、component-wise max pooling三种转换方式,结果avging pooling的效果是最好的,这里的video ID的embedding表示是和其他模型参数一起学习出来的,这从图3中也能看到所有除了观看过的video ID特征的embedding之外,还有其他的特征,所有特征拼接成一个wide first layer,输入一个MLP with ReLU进行学习。

    • 异构信号:paper主要使用的特征包括:

      • 用户观看video ID的embedding表示,上面已经说过;
      • 用户搜索特征的处理方式类似于观看历史特征处理,每个搜索query都会被标记成unigram
        和bigram,并所做embedding转换,由于需要定长的embdding输入,因此也对搜索query的标记embdding进行avg pooling处理;
      • 人口统计学特征:这对于新用户的个性化推荐很有好处;
      • 用户的地理区域特征和设备特征,两者都要表示成embedding并连接起来使用;
      • 有一些简单的二进制类别特征如性别、登录状态等、简单的连续特征如年龄等,则直接归一化到[0,1]之间后直接输入到神经网络中去。
      • example age :paper中特别提到了一个比较有意思的特征,就是youtube视频从上传至今的时间,也就是视频的age,作者发现用户对于新上传的、热度比较高的视频更感兴趣,因此除了给用户推荐用户喜欢的视频之外,还要给用户推荐一些新上传的、热度比较高的视频。
    • Label和上下文选择 : 标签和内容选择,paper在这里是想强调,在推荐问题中,一般会包含代理问题、以及将结果转换到其它特定内容上。一个经典的案例就是:在电影推荐问题中,通过精确的预估电影的排序来给出电影的推荐结果,这种通过代理学习解决问题的方式,对于线上的A/B测试有很强的重要性,但是在离线评估上比较困难。模型的训练样本并不仅仅是从我们推荐的视频中选出的,而是从全网所有youtube的视频中选出来的,否则,新的视频内容将很难存活下来,tuijian 的内容将偏向于过度利用,如果用户通过我们推荐的内容之外发现其它的视频,那么我们希望通过协同过滤的方法将新内容快速推荐给其他用户;另一个用来提升评估指标的关键点在于,需要给每个用户生成固定长度的训练样本,这样在计算loss函数时,能够给所有用户高效地赋予权重,这样能够避免一小撮活跃的用户来主导loss大小的计算;用户正常情况下消费视频时,通常会先观看一些流行的视频,然后才是观看一些小众领域的视频内容,因此预测用户的下一个将要观看的视频的方法的效果,要好于预测一个随机选择的视频的方法,具体结构见下图。一些协同过滤的方法,采取了随机选择一个视频作为label来预测,这种方法,会泄漏未来的数据信息,并且忽略了用户观看视频的非对成性的特点,而相反的是,我们会随机选择一个观看的视频,并基于此观看视频回滚用户历史观看的视频,我们所取得的用户历史行为都是这个作为label的视频(held-out label watch)之前的。
      在这里插入图片描述

    • 特征和深度层面的实验:试验中使用了一个包含5baiwan视频id的视频语料库、以及搜索词的标记库,而且使用的是最近50次观看的视频ID和搜索标记ID,在特征方面的对比、在模型深度网的对比见下图
      在这里插入图片描述

    2.2.召回模型的工程经验

    1. 每个训练用户都生成同样多的训练样本,这样在计算loss函数的时候可以对每个用户做到相同权重的加权,这有利于提升线上指标;
    2. YouTube召回上,使用的用户历史观看视频id为最近50个,历史搜索词token为最近50个;
    3. 召回模型选取训练样本时,使用了用户的隐氏反馈(而不是使用调查问卷、用户赞成反对等显式的样本),因为这样样本的量级就特别大,可以更好的学习并推荐出来长尾商品,而如果只用显式反馈的话,这些长尾商品将会非常稀疏,难以学习出来。

    3.排序模型

    排序模型跟召回模型结构非常相似,如下图所示。排序阶段做了更多的特征工程方面的工作。作者也提到了一些经验性的东西,例如作者认为给予ctr的排序结构往往对标题党更加有利,但是YoutuBe的业务属性更倾向于完成视频挂看的用户,因为观看时长才能让用户更多地参与进来。
    在这里插入图片描述

    3.1.特征表达

    对于排序阶段的主要工作,首先是特征的呈现方式:

    1.按照传统的分成连续值特征和稀疏值特征,而稀疏值特征本身的基数(可取的离散值的多少)差异比较大,有的二类取值的稀疏特征而有的是可取多种稀疏值的离散特征;
    2.另外特征还可以是否可取多个值来划分,例如用户预估的该物料的ID就是单取值特征,而用户历史观看视频ID就是多取值特征;
    3.而在推荐领域还经常将特征分成<u,c>特征和物料类 v 特征,即<用户上下文特征>或者说是请求类特征、<视频ID特征>。

    3.1.1.特征工程

    深度学习并不是万能的,包括在原始特征的处理方面,无法直接将原始特征喂给前向输入网络,会有很多特征工程方面的关键性工作,而这其中最关键的就是如何表达用户的西瓜味序列特征以及如何将这些特征和将要预测的视频物料关联起来。主要的特征工程如下:

    1.用户在频道上历史观看的视频数量;
    2.用户上次观看相同话题视频的距今时间;
    3.历史上视频展示的频率特征会使得,两次请求不会再展示完全相同的推荐结果;
    4.历史上展现但用户没有观看的视频,该视频在下次加载时就会被降级;

    3.1.2.离散特征embedding化

    sparse 特征:

    1.用户历史展现的视频IDs;
    2.用户展现的视频ID;
    3.用户语言;
    4.视频语言。

    排序模型中的输入sparse特征也是需要从高维离散空间映射到低维连续空间,并且作者给出了一些实际工程中的做法:
    1.如何确定低维embedding向量的维度的经验值,即embedding维度大约跟离散特征数量的对数值呈线性关系;
    2.根据物料被点击的频率,将除了topN外的物料ID截断去除,以节省时间空间复杂度;
    3.物料ID库之外的视频物料的embedding结果为全0;
    4.与候选集生成模型一样的是,对于multi ont-hot特征,需要先做avgpooling后再输入到网络中去;
    5.同样ID空间中的离散特征都共享基本的embedding向量表达的(视频ID的embedding,可以用在展示的ID特征embedding、历史观看的ID特征embedding),尽管有共享表示,但是每个特征都要被单独的喂入网络,共享embedding的好处是提升泛化、加速训练、节省存储;
    6.embedding表示的缺点是参数量巨大,是模型中中其他模块参数量的7倍多。

    3.1.3.连续特征归一化

    阐述了一个事实:神经网络模型对输入值的缩放以及分布是非常敏感的,不像基于树模型的集成模型对输入值缩放和分布不敏感。作者在这里主要介绍了凉张佳那个连续特征的处理方式:

    1.累积分布函数的归一化;
    2.对原始特征进行超线性和亚线性操作,为网络模型提供更强大的特征表达能力。

    3.2.建模观看时间

    Youtube的目标是提升用户观看时长,只有正样本用户才被标记了观看时长,paper在训练模型的是欧使用了 加权逻辑斯蒂回归,正样本权重为观看时间,负样本权重为1。在正常的逻辑回归中,几率计算如下,表示样本为正例概率与负例概率的比例。
    odds=ewTx+b=p1p odds = e^{w^{T}x + b} = \frac{p}{1-p}

    而当在逻辑回归中,引入观看时间时,odds计算公式如下,表示正例出现概率的和与负样本概率的和的比例。
    odds=TiNk odds = \frac{\sum T_{i}}{N-k}
    而每个展示impression的观看时长的期望为
    E[T]=TiN E[T] = \frac{\sum T_{i}}{N}
    odds=E[T]NNk=E[T]11pE[T](1+p)E[T] odds = E[T]*\frac{N}{N-k} = E[T]*\frac{1}{1-p} \simeq E[T]*(1+p)\simeq E[T]
    其中,p为ctr,由于p的值很小,两个约等于式才能成立,所以最终我们能用odds来估计用户期望观看时间,因此可以用
    ewTx+b e^{w^Tx+b}
    作为每个impression的估计值。

    3.3.Hidden layers的实验

    单个页面上,对展示给用户的正例和负例的这两个impression进行打分,如果对负例打分高于正例打分的话,那么我们认为对于正例预测的观看时间属于错误预测的观看时间,基于此,作者首先定义了模型评估指标:
    weighted,per-user loss:即是指错误预测的观看时间占比总的观看时间的比例。

    有了模型的评估指标,作者实验了多个不同深度和宽度的隐藏层的组合,结果显示:

    1.单独的加宽隐藏层或者单纯的加深隐藏层可以提升模型的效果,具体见图中所示;
    2.作者还试验了不加入归一化的连续特征的超线性变换和亚线性变换的特征,试验结果要差于加上这两类特征的模型效果;
    3.作者同时尝试了不对正样本加入观看时间的权重,即正样本和负样本权重均为1,效果直接降低了4.1%,这说明了给正例加入观看时间权重的模型效果还是很明显的。

    在这里插入图片描述

     

    4.参考资料

    1.paper:Deep Neural Networks for YouTube Recommendations
    2.https://blog.csdn.net/friyal/article/details/83656746

    展开全文
  • 文章目录第11章排序模型总结与回顾一、model在测试数据集效果回顾1、效果回顾2、离线评估模型交叉验证(model cv)model test data performance3、在线评估业务指标平均点击位置二、LTR中特征维度浅析1、特征维度2、...

    第11章排序模型总结与回顾

    • model在测试数据集效果回顾
      1、逻辑回归模型、gbdt模型、gbdt模型与逻辑回归混合模型以及wd模型在测试数据集上的效果进行一下简单的回顾

    • LTR中特征维度浅析

      2、我们会对工业界实际项目中建立排序模型所使用的特征进行一下简单的浅析。

    • 工业界Rank技术展望
      3、对工业界的排序技术进行一下展望

    一、model在测试数据集效果回顾

    1、效果回顾

    在这里插入图片描述

    下面首先来回顾一下各模型在测试数据集上的表现。由于我们各Rank模型在线上实际使用时呢是对item进行打分,然后呢不同的item按照这个得分的展现给用户,所以呢我们这里更加关心的是模型对于我们item预测得分序的关系,所以呢也就是AUC我们这里从我们模型交叉验证得到的AUC以及模型在测试数据集表现的AUC两点的进行一下回顾。

    我们在排序部分的重点介绍了四种模型分别是逻辑回归、GBDT、GBDT与逻辑回归的混合模型以及我们基于深度学习的WD模型。

    首先呢从我们的模型交叉验证的效果来看一下GBDT与逻辑回归的混合模型的表现要好于GBDT。GBDT要好于我们的逻辑回归模型,由于我们的WD并没有采用我行交叉验证的方式呢,去评估,所以这里没有数据。好了,我们再来看一下训练好的模型呢,在测试数据集上的表现也就是看一下模型的泛化能力。这里同样的GBDT与逻辑回归的混合模型的是要好GBDT,GBDT是要比逻辑回归好,这里要注意一下,在实际的我们的项目中WD模型实际上是表现的最好,但是在这里限于我们的样本的数量了只有3万等等的一些限制。WD表现的要略低于GBDT。不过没有关系,如果大家有机会在实际项目海量的数据集当中了去实践一下,不同的Rank模型的话,大家一定能得到下面的结论,WD模型的表现是要好于GBDT与逻辑回归的混合模型。混合模型是要好于GBDT模型。GBDT是要好于我们的逻辑回归模型。但我实际工作中零一搭建个性化排序系统时得到的结论也是这样的。

    2、离线评估
    模型交叉验证(model cv)

    在我们训练不同的排序模型,将不同的模型放到线上时,我们如何来评价离线的准入以及在线的收益呢?下面来看一下排序模型的评估,首先来看一下离线评估,第一点的,我们需要看一下模型交叉验证得到的指标,这些指标的,包括我们课上重点提到的AUC,以及准确召回等等的一些指标,这些指标我们需要明确它的物理意义,这样才能够帮助我们清晰地判断模型的效果。

    model test data performance

    最终的我们还需要判断一下模型的泛化能力,也就是模型在测试数据集上的表现,比如模型在测试数据集上得到的AUC,得到的准确率等等,我们结合着不同的业务场景的也会有一些独自的评判标准,比如我们在信息流场景当中呢,我们可能更关注的是session的平均点击位置,这里简单的解释一下。我们每一个session展示了,比如说三条数据。

    在这里插入图片描述

    在我们的测试数据上的原有的情况下,比如我们点击了这3条,经过我们训练模型对于这三个数据得重新打分之后呢,我们能否将已经击的这个第二条呢?学习到第一的位置,这样我们的平均点击位置的就更靠前了,这样的效果也就说明了是更好的。当然了,不同的业务场景还有一些其他的指标。

    3、在线评估
    业务指标

    下面我们来看一下在线指标,首先呢是业务指标。比如说点击率,购买率,平均阅读时长,总的交易额度等等,我们根据不同的业务场景的制订了评价的指标,最终的结果呢也已在线AB测试得到的业务指标的生效为准。

    平均点击位置

    离线的评价指标的只是我们能否准入的一个衡量的标准,并不能决定我们在线实际效果的好坏,当然了这里还有一些辅助的评价指标,比如像之前我们介绍的平均点击位置。当然呢在线评估时,我们首先来看一下业务指标,其次呢是我们的辅助评价指标。好啦,在线离线的评估呢,我们已经说完了。

    二、LTR中特征维度浅析

    1、特征维度
    • 特征维度
      在这里插入图片描述

    下面来看一下特征了有哪一些?我们的构建排序模型是常用的特征的有以下几个方面,我们来简单的介绍一下,用户侧的特征包含了用户的静态的属性,比如说年龄,性别,地域,还有一些简单的统计特征,比如该用户在我们平台上浏览过多少个商品?点击过多少个商品的购买过多少个商品的,购买过多少个商品啊?近30天浏览了多少商品的这种长短时的统计,最后还有一些用户侧的高维的特征,我们基于它的浏览点击购买历史的给他打上一些标签,比如说呢,她就喜欢某某品牌的香水某某品牌的鞋子等等。刚刚介绍用户特征侧时是以电商场景举例。对于其他的产品道理也是一样的,比如说信息流。我们只需要统计一下用户发现喜欢财经呢,还是喜欢体育,是喜欢娱乐呢?还是喜欢科技,甚至呢我们还可以给他打上标签儿,是科比的标签的还是鹿晗的标签等等?道理都是一样的。

    商品侧的特征基础的特征包含商品的名称,商品的上线日期啊等等统计的特征的包含商品被购买的次数。商品的点击率呀,商品的购买率啊等等。一些高维的标签,那比如说这个商品的,他是深受90后欢迎啊,深受年轻女性的欢迎啊,我们的上下文的特征的有,当前是星期几呀?现在是几点呀?用户请求我们服务时所处的地理位置信息等等。用户和item的关系。比如说这个商品呢,是该用户两个月之前加入到购物车里头,一个月之前点击过的呀,半年之前购买过呀,等等的一些信息,还有我们的统计登录信息,比如说呢商品的上架的时间呢与购买率间的关系,比如说近一个月之内上架的商品打开的购买率是多少?近两个月等等我们统计出来显然的又增加了一维特征。好了我们曾经无数次说过特征与样本是决定我们最终这个整体表现的天花板,而我们采用不同的模型的只能去逼近这个天花板。像我刚才介绍这些不同维度特征时呢,我们是用电商场景举例的,但是呢实际的项目中呢,假如没有做过电商的场景,可以根据特征的大体由这五个维度来想到一些电商场景下应该有哪些特征?大家在自己的项目当中呢,或者自己解决实际问题过程中的,也一定要结合的实际去构造我们需要的特征。

    2、特征的数目
    • 特征的数目

    我们说过为了防止过拟合,那我们尽量要将特征与样本的数目来维持在1:100。举例,比如说我们这里有1000个训练样本,那么这里我选择了十个特征,这是没有问题的,但是呢,有的同学说我没有找到十个特征,我只找到了八个那也是没有问题的。

    可能最终我们学习出来的效果不会很好。但是有的同学说我找到了50个特征,那么显然呢,这个模型呢就会过拟合。他在测试数据集上的表现的就会比较差,就是说它的泛化能力就不会很强。

    三、工业界Rank技术展望

    1、多目标学习

    我们知道了在信息流场景中的我们既想用户拿多点击,也就是点击率预估模型也想用户停留的阅读时长的要长一点。这样呢就是两个目标。之前的可能有很多方式呢,比如说训练两个模型,一个呢是点击率预估模型,一个是平均阅读时长预估模型,然后乘起来,比如说那像电商场景中的我们既想用户呢,他得购买率也就是说最终的转化率呢要高又想拿我们懂得交易额度也能高。有人呢对这种多目标问题的提出了一种将不同的目标的融合到一个网络里进行学习的方法。

    2、强化学习

    我们知道强化学习的是成功保证历史最大回报率的一种办法,现在呢这种算法呢,在游戏里应用的比较广泛也比较成熟,但排序的领域也有一些落地与尝试。希望大家的能够对这些较新的技术进行不断的追求,不断的学习。不断的探究,不断的尝试。那么本章节的内容到这里就全部结束了,本章节的重点是对之前多讲述过的排序部分的内容进行了总结回顾,下一章节我们将会对个性化推荐算法课程的内容来进行一下总结。

    展开全文
  • 近年来随着人工智能的发展,...爱奇艺提出了新的在线知识蒸馏方法来平衡模型效果和推理效率,在推荐场景上获得了明显的效果,本文主要介绍爱奇艺在探索升级排序模型的过程中提出的双DNN排序模型。文章开始之前,首...

    近年来随着人工智能的发展,深度学习开始在工业界不同场景落地。深度学习跟以前的机器学习模型相比,其中很重要的特点就是在于能在模型侧自动构建特征,实现端到端学习,效果也有明显提升,但新的问题如模型效果和推理效率的冲突也开始凸显。

    爱奇艺提出了新的在线知识蒸馏方法来平衡模型效果和推理效率,在推荐场景上获得了明显的效果,本文主要介绍爱奇艺在探索升级排序模型的过程中提出的双DNN排序模型。文章开始之前,首先为大家科普与本文主题相关的关键词的含义及相关技术知识。

     

    ▌关键词

     

     

    ▌写在前面

    近些年来,学术界和工业界陆续开展了多项让排序模型变的wider and deeper的相关工作,其中,wider(更宽)意味着一个模型包含更多不同的子模型,如xDeepFM[1]包括了LR, DNN和CIN三种组件,分别建模一阶显示特征交叉(LR),高阶隐式特征交叉(DNN)和高阶显示特征交叉(CIN);deeper(更深)意味着通过增加模型复杂性来提升模型性能,一些在NLP和CV领域使用的复杂组件开始被引入排序模型,如xDeepFM的CIN其实是利用卷积神经网络来建模特征交叉, BST[2]利用Transformer建模用户行为序列的表征。然而,更深更宽的模型在提升模型效果的同时,往往伴随着模型推理效率的下降。

    爱奇艺提出的在线知识蒸馏方法来平衡模型效果和推理效率,并在短视频信息流和图文信息流两个重要场景上线后都获得了明显的正向效果。其中,在爱奇艺短视频场景时长指标+6.5%,点击率指标+2.3%;图文推荐场景时长指标+4.5%,点击率指标+14% 。

     

    深度学习时代排序模型的演进

    从建模特征组合这个角度去介绍深度学习时代排序模型的演进,按照时间的发展经历了三个时期(萌芽期、中兴期和突破期),具体如下:

    a.  萌芽期DNN开始被引入推荐排序模型,其优点在于神经网络能隐式建模不同特征间的高阶特征组合。国内最早应用案例是百度等公司在2013年左右开始将DNN用作CTR模型;

    b.  中兴期:深度排序模型开始被广泛接受,代表模型为WDL[3]和 DeepFM[4]等,这些模型的优势在于在DNN基础上,增加了显示的一阶或二阶特征组合。其中WDL几乎成了推荐广告CTR模型从传统机器学习时代过渡到深度学习的敲门砖,应用这一模型既能尝到深度学习的甜头,又能复用已有的排序模型成果进一步提升模型性能;

    c.  突破:从DCN[5],xDeepFM开始,深度排序模型开始变的更深更宽,尤其重视使用DL组件来显示建模高阶特征交叉,其显示的高阶特征组合更符合算法工程师对排序模型的期许。通过模型本身来进行特征组合可以避免人工特征组合的一些弊端,如工程代价和人力成本。

    上面介绍的深度排序模型可以归类为如下表格,显示的高阶vector-wise交叉相对更make sense, 也是最近一些排序模型工作的核心优化点:

     

     

    排序模型优化动机

    爱奇艺排序模型从GBDT+FM等机器学习模型跨入到深度学习时代也是从WDL开始的,但是爱奇艺在此基础上做了一些改进,最终排序模型结构如下图1, Wide侧是FM, GBDT输出是FM输入,Deep Model是DNN和FM的stacking。

     

    该模型结构[7]在爱奇艺推荐的各个场景都作为baseline model使用,线上表现一直不错。从2019年开始,团队开始尝试推动模型的实时性和端到端建模,同时引入一些最新的研究成果来提升模型性能。但在实践过程中,发现baseline model存在如下弊端:

    1.  GBDT是CTR模型外的预处理组件,不适合实时训练和更新。若GBDT更新,整个排序模型也需要更新,无法进行端到端训练;

    2.  若去掉GBDT, 端到端建模要解决两类原始特征(稀疏特征和稠密特征)之间的高阶特征组合。现有模型对稀疏特征和稠密特征是隔离处理,稀疏特征只进入了Wide Model,现有模型不支持稀疏特征的显示高阶建模;

    3.  现在的模型结构无法自适应引入一些新的排序模型组件,因为其结构过于的大而全,而缺少了灵活性。

    爱奇艺首先尝试了最近提出的一些复杂模型来取代baseline model,如DCN, xDeepFM等,但发现需要平衡large model 的模型效果和推理性能是有待解决的比较关键的问题。

    如以下图表格所示,xDeepFM比较难落地:

    1.  推理性能:同等情况下,在CPU上推理,xDeepFM与baselinemodel相比,耗时是其2.5~3.5倍;

    2.  使用GPU时,只有在大batch下,xDeepFM推理性能才符合要求。

     

     

    当使用和现有baseline model一样的CPU推理资源时,像xDeepFM这样的复杂深度模型无法上线。若使用GPU进行推理, ROI并不高。与这两种情况相比,知识蒸馏[6]这一类模型压缩方法是解决这类问题的良药,可以将复杂模型的知识迁移到简单模型。

    到这里总结出了下一代排序模型的优化方向:

    1.  升级现有基准排序模型

    •  去掉GBDT;

    •  探索最新的一些排序模型进展,提升排序模型性能;

    2.  大规模稀疏特征的交叉

    •  用模型显示建模不同高维稀疏特征的交叉;

    •  vector-wise交叉;

    •  一个模型可以容纳各种特征交叉组件;

    3.  高性能的复杂深度模型如何落地

    •  低投入高产出:不高于现有资源投入,获得更好的线上效果;

    •  模型压缩:复杂模型知识迁移到简单模型。

     

     

    双DNN排序模型

    通过实践,爱奇艺提出了一种新的排序模型框架: 双DNN排序模型,其核心在于提出了新的联合训练方法,从而解决了高性能复杂模型的上线问题,该框架的特点和优势总结如下:

    1.  双DNN

      左侧DNN:模型性能更好的复杂模型,推理性能差;

      右侧DNN:模型性能一般的简单模型,推理性能佳;

    2.  Fine-Tune

    •  右侧DNN 复用左侧DNN的inputrepresentation layer;

    3.  联合训练

    •  复杂DNN监督指导简单DNN的学习;

    •  KD on the fly, one stage;

    •  训练稳定性,大网络性能天花板不受小网络影响。

     

    排序模型结构如下:

     

     

    双DNN排序模型由两个DNN CTR Model组成,左侧是Teacher,右侧是Student,Student 模型是最终用于上线推理的CTR 模型。两者共享特征输入和表示,但是左侧相比右侧多了Feature Interaction Layer。左侧和右侧有各自独立的MLP , 其包含多层Hidden Layer。主要Layer的介绍如下:

    Embedding Layer : 输入表示层,不同特征按Field组织,稀疏Field ID embedding化后通过average pooling得到field的embedding表示;

    Feature Interaction Layer:这是左侧模型核心,其可以容纳各种形式的特征组合组件,二阶或高阶特征组合都可以放置在其中;

    Classifier Layer: 两个DNNCTR模型的Classifier,一般是多层DNN。

     

    双DNN排序模型的优势

    双DNN的优势在于联合训练,通过联合训练迁移左侧复杂DNN知识到右侧简单DNN,关键部分是以下3点:

    1.  Feature Transfer:正如模型结构图中的标注1所示,两个DNN共享特征表示层,相当于右侧DNN 使用了copy and freeze的特征迁移范式;

    2.  KD One the Fly: 知识蒸馏(KnowledgeDistillation, KD)是两阶段训练,我们将其改为使用联合训练时进行知识迁移,训练时使用teacher的预测结果指导student;

    3.  Classifier迁移:仅有第二点还无法让右侧模型性能逼近左侧,因为右侧网络结构偏弱,无法直接学到左侧模型的输出, 于是让teacher的hiddenlayer作为监督信号指导student的hiddenlayer。

     

    双DNN排序模型训练架构

    在端到端模型结构确定后,通过引入在线学习实现了模型的实时性。下图是双DNN排序模型的训练架构。

     

     

    Finetune:每天例行使用30天窗口训练得到离线双DNN排序模型,训练完后再使用最新的样本fine tune,使得模型能学到最新的用户行为pattern。

    在线学习热启动:正如之前在线学习实践[8]文章中所分享的,这里也是使用离线模型作为在线学习训练的热启动模型,这既能oov问题,也能防止在线学习长期运行带来的bias。而这里的在线学习只使用实时数据更新双DNN的Student 模型,因为真正用于推理的是Student。

     

    双DNN排序模型推理

    如下图所示,依赖于公司提供的训练平台,双DNN模型的部署和推理实现了模型Graph和Embedding权重的解耦部署,其使得模型更新和部署超大模型变得更加方便,特别是在模型的大部分重要特征是大规模稀疏特征时。模型推理时,TF serving通过定制化的OP访问存储Embedding 矩阵的分布式PS。

     

     

    业界相关实践

    百度

    百度广告CTR模型的发展历程[9]如下:CTR-X是一个用于粗排阶段的DSSM, 其中CTR 3.0与我们的工作比较类似,也是用于精排阶段,但是训练两个结构差不多的DNN需要运用类似于特征迁移的方法,左侧DNN主要用来学习稀疏特征embedding, 右侧DNN使用左侧训练得到的embedding和其他特征作为输入训练CTR model。

     

    阿里

     

     

    阿里妈妈在2018年提出了Rocket Launching训练方法[10],将其用于广告算法模型压缩。该方法也是需要联合训练两个复杂度有明显差异的网络,其中简单的网络称为轻量网络(light net),复杂的网络称为助推器网络(booster net),两个网络共享表示层参数,方法和其核心区别在于如下两点:

    1. Rocket Launching只使用预测结果来指导简单模型的训练,我们的方法是让简单模型同时拟合预测结果和决策层的网络结构表示,两个网络的性能差距会进一步缩小;

    2. Rocket Launching联合训练时两个大小网络都会在反向传播时更新EmbeddingLayer参数, 我们的方法是让小网络直接sharing, 不再更新,因为实验发现同时更新会拉低大网络性能。

     

    实验部分

    双DNN模型压测:在爱奇艺某个信息流推荐场景的测试数据来看,左侧模型是右侧模型推理时延的5倍左右, 模型大小压缩了超过3倍,右侧模型QPS也更高。因此同样资源情况下,使用右侧上线ROI更高。

     

     

    Co-Train和两阶段训练(类似于百度CTR3.0)效果对比:Co-Train模式下右侧模型和左侧模型的差距缩小明显, student的能力更接近teacher。

     

     

    总结

    爱奇艺提出了一种新的在线知识蒸馏方法,不同于以往的知识蒸馏进行两阶段训练,而是进行联合训练,让teacher网络在训练过程中指导student网络的训练,与此同时做到不受student网络的影响。目前,双DNN排序模型的方法在短视频信息流和图文信息流场景实现落地,这也佐证了这一方法的优越性。未来会继续推动落地一些前沿的排序模型研究成果,让teacher网络变的更宽更深,进一步提升排序模型的精度。

     

    参考文献

    1.  Lian, Jianxun &Zhou, Xiaohuan & Zhang, Fuzheng & Chen, Zhongxia & Xie, Xing &Sun, Guangzhong. (2018). xDeepFM: Combining Explicit and Implicit FeatureInteractions for Recommender Systems. 1754-1763. 10.1145/3219819.3220023.

    2.  Chen, Qiwei &Zhao, Huan & Li, Wei & Huang, Pipei & Ou, Wenwu. (2019). Behaviorsequence transformer for e-commerce recommendation in Alibaba. 1-4.10.1145/3326937.3341261.

    3.  Cheng, Heng-Tze &Koc, Levent & Harmsen, Jeremiah & Shaked, Tal & Chandra, Tushar& Aradhye, Hrishi & Anderson, Glen & Corrado, G.s & Chai, Wei& Ispir, Mustafa & Anil, Rohan & Haque, Zakaria & Hong, Lichan& Jain, Vihan & Liu, Xiaobing & Shah, Hemal. (2016). Wide &Deep Learning for Recommender Systems. 7-10. 10.1145/2988450.2988454.

    4.  Guo, Huifeng &Tang, Ruiming & Ye, Yunming & Li, Zhenguo & He, Xiuqiang &Dong, Zhenhua. (2018). DeepFM: An End-to-End Wide & Deep Learning Frameworkfor CTR Prediction.

    5.  Wang, Ruoxi & Fu,Bin & Fu, Gang & Wang, Mingliang. (2017). Deep & Cross Network forAd Click Predictions. 1-7.

    6.  Hinton, Geoffrey &Vinyals, Oriol & Dean, Jeff. (2015). Distilling the Knowledge in a NeuralNetwork.

    7.  爱奇艺个性化推荐排序实践. 

    https://mp.weixin.qq.com/s/lUP2BehOh7KczR3WRnOqFw

    8.  在线学习在爱奇艺信息流推荐业务中的探索与实践。

    https://mp.weixin.qq.com/s/aQOcnWV2L_VY3ChrSXXxWA

    9.  AI筑巢:机器学习在百度凤巢的深度应用。

    https://myslide.cn/slides/763

    10. Rocket Launching: AUniversal and Efficient Framework for Training Well-Performing Light Net GuoruiZhou, Ying Fan, Runpeng Cui, Weijie Bian, Xiaoqiang Zhu, Kun Gai

     

    展开全文
  • 在概率模型中,我们定义排序函数是基于文档与查询之间的相关度、可能性来做的。f(d,q) = p(R=1|d,q), R ∈\in {0,1}。概率模型有几个小分类:  经典概率模型——>BM25  语言模型Language Model —–>Query ...
  • 美团推荐算法实践:机器学习重排序模型 文章介绍了美团推荐系统的构架和优化过程,包括数据层,触发层,融合过滤层和排序层,采用了Hbase,Hive,Storm,Spark和机器学习等技术。两个优化两点将是候选集进行融合与...
  • nDCG, 排序模型评价指标

    千次阅读 2017-12-01 14:49:08
    是信息检索领域中, 对排序问题的一个评价指标, 因素有文档相关性与排序位置.使用场景举例: 用户输入一个query, 得到了很多结果, 这个指标可以对有序的结果进行评价. 相关场景: 文档打标签, 把程序的标签输出也看成...
  • 信息检索与排序模型之布尔模型

    千次阅读 2014-02-27 18:05:28
    在学习布尔模型之前首先让我们了解一下模型的基本概念为后面的学习奠定基础。模型是采用数学工具对现实世界某种事物或某种运动的抽象描述,面对相同的输入,模型输出应能够无限地逼近现实世界的输出(如:天气预报模型...
  • 两个优化亮点是将候选集进行融合与引入重排序模型。 编者按:在用户意图明确时,我们通常用搜索引擎来解决互联网时代的信息过载问题,但当用户的意图不明确或者很难用清晰的语义表达,搜索引擎就无能为力。此时...
  • 漫谈搜素引擎的排序模型

    千次阅读 2015-01-07 20:58:43
    万变不离其宗,搜索引擎的搜索结果排序算法模型,可以抽象为计算每一个doc的p(d|q),利用朴素贝叶斯算法原理,p(d|q)=p(q|d)*p(d)/p(q),p(q)对于每一个doc都是一样的,所以最终的排序打分是p(q|d)*p(d),p(q|d)是...
  • 转载请注明出处:http://blog.csdn.net/gamer_gyt 博主微博:http://weibo.com/234654758 ...公众号:搜索与推荐Wiki ... 损失函数是用来估量你模型的预测值f(x)与真实值Y的不一致程度,它是一个非负实值...
  • 如图2所示,模型排序流程包括日志收集、训练数据生成、模型训练和线上打分等阶段。当推荐系统对浏览推荐场景的用户进行推荐时,会记录当时的商品特征、用户状态与上下文信息,并收集本次推荐的用户行为反馈。在经过...
  • 一. 引言 推荐作为解决信息过载和挖掘用户潜在需求的技术手段,在美团点评这样...目前,深度学习模型凭借其强大的表达能力和灵活的网络结构在诸多领域取得了重大突破,美团平台拥有海量的用户与商家数据,以及丰富...
  • 3.用户画像是刻画用户属性的基础数据,其中有些是直接获取的原始数据,有些是经过挖掘的二次加工数据,这些属性一方面可以用于候选集触发过程中对deal进行加权或降权,另外一方面可以作为重排序模型中的用户维度特征...
  • 天下武功,无坚不摧,唯快不破。近些年,深度学习如玄铁重剑在推荐系统中无坚不摧,给搜索/推荐/广告等业务场景带来巨大的收益,而在线学习则如唯快不破的独孤九剑,也在推荐算法中以快制胜,创建巨大...
  • 在优化排序模型的过程中,我们也调研了DeepFM/DeepCN等深度模型,这些模型无论从离线还是线上指标上,都没有明显优势。在优化Wide&Deep模型的同时,更迫切的需求,是跳出原有的框架,寻找新的收益点。 引入GBM对...
  • 1.CTR ... 2. CTR 传统预估模型 CTR预估模型公式:y=f(x)y = f(x)y=f(x), y∈[0,1]y \in [0, 1]y∈[0,1], 表示广告被...LR,logistic regression,是CTR预估模型的最基本模型,适用海量的高维离散特征。 f(x)=11+...
  • iOS 数组模型排序

    千次阅读 2019-03-11 20:01:51
    @interface BookCityBookModel : NSObject @property (nonatomic, copy) NSString bookId; @property (nonatomic, copy) NSString *bookName;...1、根据单个属性升序排序 self.dataArray = [NewMembersModel m...
  • 检索模型与搜索排序 学习

    千次阅读 2016-10-31 19:52:44
    布尔模型 仅仅根据term后续的倒排列表进行布尔运算,获取最终的返回结果.无法进行排序打分. 空间向量模型 将搜索语句当成一片文档来解析成n维度空间中的某个点,与已经存在的原始文档在该维度中的...
  • 用xgboost模型对特征重要性进行排序

    万次阅读 多人点赞 2018-08-12 21:08:21
    用xgboost模型对特征重要性进行排序 在这篇文章中,你将会学习到: xgboost对预测模型特征重要性排序的原理(即为什么xgboost可以对预测模型特征重要性进行排序)。 如何绘制xgboost模型得到的特征重要性条形图。...
  • LR模型特征重要性排序

    千次阅读 2019-09-17 23:10:02
    1.特征重要性的意义 LR模型也就是逻辑回归模型,作为一个简单的常用的模型,其有非常多的有点,除了模型简单,容易实现分布式,还有一个重要的优点就是模型的可解释性非常好。...2.逻辑回归模型特征重要性及排序 Ta...
  • 文档排序--相似度模型--VSM

    千次阅读 2017-08-14 09:02:43
    文档排序函数的实现有几种思路,其中一种是基于相似度的模型。这种模型具体是用空间向量模型(Vector Space Model)实现。这篇文章就介绍VSM。 VSM概念 什么是VSM    VSM定义了两点。  第一,用词向量(term...
  • Swift中模型数组排序

    2018-12-24 13:54:00
    }//取某个值最大的模型 self.chatArray.append(max!) self.chatArray = self.chatArray.sorted(by: { (model1,model2) -> Bool in return getDateNum(date: model1.lastMsgDate) > getDateNum(date: model2....
  • 基于BPR的学习模型 矩阵分解 自适应k近邻 BPR与其它方法的关系 加权正则化矩阵分解WR-MF 最大边缘矩阵分解MMMF 实验评价 数据集 评价方法 实验结果和讨论 非个性化排序 结论BPR:面向隐式反馈数据的贝叶斯个性化排
  • 泛型列表排序简单模型例子

    千次阅读 2010-05-05 14:27:00
    using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace 泛型排序{ class Program { static void Main(string[] args) {

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 322,913
精华内容 129,165
关键字:

排序模型