0. 前言
「排序学习(Learning to Rank,LTR)」,也称「机器排序学习(Machine-learned Ranking,MLR)」,就是应用机器学习的技术解决排序问题。自从机器学习的思维逐渐渗透到信息检索等畛域之后,如何利用机器学习来晋升信息检索的性能程度变成了近些年来十分热门的钻研话题,因而产生了各类基于机器学习的排序算法,也带来了搜索引擎技术的成熟和倒退,现在,Learning to Rank 曾经成为搜寻、举荐和广告畛域十分重要的技术手段。
本文咱们首先介绍排序学习的三种次要类别,而后具体介绍举荐畛域最罕用的两种高层排序学习算法框架:BPR 和 LambdaMART。因为排序学习的算法和实际大都来源于信息检索,一些实践也必须从信息检索的畛域说起,所以本文也会波及一些的信息检索、搜寻方面的理论知识,但重点仍然会放在举荐畛域排序学习的利用思路。
0.1 排序学习
传统的排序办法可粗略分为基于类似度和基于重要性进行排序两大类,晚期基于相关度的模型,通常利用 query 和 doc 之间的词共现个性(如布尔模型)、VSM(如 TF-IDF、LSI)、概率排序思维(如 BM25、LMIR)等形式。基于重要性的模型,利用的是 doc 自身的重要性,如 PageRank、TrustRank 等。在之前《基于内容的举荐算法》和《文本内容分析算法》两篇文章中,稍有波及其中的知识点。
传统的检索模型所思考的因素并不多,次要是利用词频、逆文档频率和文档长度、文档重要度这几个因子来人工拟合排序公式,且其中大多数模型都蕴含参数,也就须要通过一直的试验确定最佳的参数组合,以此来造成相关性打分。这种形式非常简单高效,然而也同时存在很多问题
- 很难交融多种信息
- 手动调参工作量太大,如果模型参数很多,手动调参的可用性非常低
- 可能会过拟合
LTR 则是基于特色,通过机器学习算法训练来学习到最佳的拟合公式,相比传统的排序办法,劣势有很多:
- 能够依据反馈主动学习并调整参数
- 能够交融多方面的排序影响因素
- 防止过拟合(通过正则项)
- 实现个性化需要(举荐)
- 多种召回策略的交融排序举荐(举荐)
- 多指标学习(举荐)
1. 排序学习框架
排序学习是一个典型的有监督机器学习过程,咱们别离简略来看一下排序学习在搜寻以及举荐畛域中的框架和根本流程。
1.1 根本流程
在信息检索中,对每一个给定的查问-文档对,抽取特色,通过日志开掘或者人工标注的办法取得实在数据标注。而后通过排序模型,使得输出可能和理论的数据类似。
排序学习在古代举荐架构中处于十分要害的环节,它能够实现不同召回策略的对立排序,也可将离线、近线、在线的举荐后果依据依据用户所处的场景进行整合和实时调整,实现打分重排并举荐给用户。
无论是搜寻还是举荐,排序学习模型的特征提取以及训练数据的获取是十分重要的两个过程,与常见的机器学习工作相比,也有很多非凡的中央,上面咱们简略介绍这两个过程中可能须要思考的问题。
1.2 特征提取
在排序学习模型中,文档都是转化成特征向量来表征的,这便波及一系列文本特征提取的工作,咱们这里简略介绍一些可能用到的特征提取办法以及罕用的特色类型。
文档的特色通常能够从传统排序模型取得一些相干特色或者相关度打分值,所以可分为两种类型:
- 一是文档自身的特色,比方 Pagerank 值、内容丰盛度、spam 值、number of slash、url length、inlink number、outlink number、siterank,用户停留时间、CTR、二跳率等。
- 二是 Query-Doc 的特色:文档对应查问的相关度、每个域的 tf、idf 值,bool model,vsm,bm25,language model 相关度等。
也能够对文档分域,如对于一个网页文本,特色所在的文档区域能够包含 body 域,anchor 域,title 域,url 域,whole document 域等。
通过各个域和各种特色,咱们能够组合出很多特色,当然有些特色是正相干有些是负相关,这须要咱们通过学习过程去选取优化。
1.3 标签获取
特色能够通过各种形式进行提取,然而 Label 的获取就不是那么容易了。目前次要的形式是人工标注或者日志提取,需注意的是,标注的类型与算法抉择以及损失函数都有很大关系。
1.3.1「人工标注」
人工标注比拟灵便,然而若须要大量的训练数据,人工标注就不太事实了,人工标注次要有以下几种标注类型:
-
「单点标注」单点标注只关注单点,不思考互相分割,单点标注又分三种不同的标注形式:优缺点 长处:标注的量少,为 O(n) 毛病:难标,不好对立
- 对于每个查问文档间接打上相对标签,即相关度得分
- 二元标注相干和不相干
- 五级标注依照相关度划分五级(同 NDCG 指标):即“最相干”、“相干”、“中性”、“不相干”、最不相干”,通常在模型训练时会用数字来示意,如 1~5
-
「两两标注」优缺点 长处:标注起来比拟不便 毛病:标注量大,应该有
- 对于一个查问 Query,标注文档 d1 比文档 d2 是否更加相干,即
-
「列表标注」优缺点 长处:绝对于下面两种,标注的成果会很好 毛病:工作量微小,人工简直无奈实现(整体的文档数量太大)
- 对于一个查问 Query,将人工现实的排序全副标好
1.3.2「日志抽取」
当搜索引擎搭建起来之后,就能够通过用户点击记录来获取训练数据。对应查问返回的搜寻后果,用户会点击其中的某些网页,咱们能够假如用户优先点击的是和查问更相干的网页,只管很多时候这种假如并不成立,但理论教训表明这种获取训练数据的办法是可行的。
比方,搜寻后果 A、B、C 别离位于第 1、2、3 位,B 比 A 地位低,但却失去了更多的点击,那么 B 的相关性可能好于 A。「这种点击数据隐含了 Query 到文档的相关性好坏。所以个别会应用点击倒置的高下位后果作为训练数据」。
然而日志抽取也存在问题:
- 用户总是习惯于从上到下浏览搜寻后果
- 用户点击有比拟大的噪声
- 个别头查问(head query)才存在用户点击
1.4 排序学习设计办法
排序学习的模型通常分为「单点法(Pointwise Approach)」、配对法(Pairwise Approach)「和」列表法(Listwise Approach)三大类,三种办法并不是特定的算法,而是排序学习模型的设计思路,次要区别体现在损失函数(Loss Function)、以及相应的标签标注形式和优化办法的不同。
三种办法从 ML 角度的总览:
更多内容参考:举荐零碎四:精排 - 详解排序算法 LTR (Learning to Rank): poitwise, pairwise, listwise 相干评估指标,超具体常识指南。
2. 京东举荐算法精排技术实际
前言:京东主站举荐的次要业务场景笼罩 APP 中用户购买前、购买中和购买后的全流程,日均千万级 DAU。不同业务场景下用户需要不同,咱们相应的优化指标也不同。首页 feeds 和“我的京东”就是典型的购买前的场景,咱们次要去优化点击以及浏览深度;购物车和商品详情页是购买中的场景,次要优化点击率以及转化率;而订单页就是用户购买后的次要场景,会重点优化跨品点击和转化。
2.1 业务 & 场景
召回次要是包含支流的i2i 和 u2i 召回,它的排序是数十亿到万的量级;粗排采纳双塔模型,次要兼顾精准性和零碎延时,排序量是从万到千的量级;在精排阶段,咱们会应用更简单的特色和模型构造,保障后果的精准性,它的排序量级是从千到百;重排模块则更多从整个序列的角度思考问题,同时兼顾多样性、新颖性,量级是从百到十
精排模块的挑战次要有三个:
- 多指标:举荐零碎通常有多个业务指标须要同时优化,包含点击率、转化率、GMV、浏览深度和品类丰盛度等。
- 用户表白:用户的偏好是多样性的,精准表征用户以后的用意是比拟有挑战的。
- 商品表白:商品信息包含品牌、品类等属性,也包含用户行为的反馈信息,还有商品的主图和题目等。如何利用不同模态的数据也是目前比热门的问题。
咱们采纳了多指标学习、用户行为序列建模和多模态特色等业界支流办法来优化这三个问题,并针对电商举荐的个性进行了肯定改良和翻新。
2.2 多指标优化
举荐是一个多指标优化问题,实际上在线上咱们有大概七到八个指标须要优化。为了简化出现,这里就以点击和转化为例。上图右侧是传统的多指标优化模型。最底层是模型的输出特色,两头是多指标模型,之后连贯了一个 combination 层将不同的指标预测值联合到一起,最初应用其进行排序。
举荐畛域多指标学习的次要问题有:
- 常识抵触,成果较好的 MMoE/PLE 等模型,次要通过更灵便的参数共享机制,为不同学习指标提供可选的稠密构造来缓解常识抵触;
- 交融参数的优化,交融参数次要是用来组合不同指标的输入用于排序,罕用做法是通过离线 grid search 或者在线主动调参来搜寻一组固定参数。
在多指标交融排序上,咱们认为固定参数有肯定的问题。用户在不同场景有不同的诉求,如有明确的购物用意或者仅仅是晃荡,固定的交融参数就无奈使模型整体成果达到最优。因而咱们提出了一个个性化多指标交融的办法,能够依据用户状态主动输入不同指标的交融权重。
上图右侧是咱们整体的模型架构,主网络是一个传统的 MMoE 构造;咱们额定退出了一个交融网络,通过一个 Gate 构造学习如何组合不同指标。交融网络的输出是与主网络雷同的底层特色,输入的是多指标交融参数向量,其最终会与主网络不同指标的预测值进行点积,作为最终的排序值。
交融网络的损失函数与主网络相似,主网络次要通过优化不同学习指标的参数来优化整体损失函数,而交融网络次要学习如何组合不同指标来使得模型在整体损失方向上达到最优。在模型训练上,咱们采纳了交替训练的办法。每 10 个 batch 训练一次交融网络,而每个 batch 都会去训练主网络。除此之外,咱们还采纳了梯度阻断的技术,交融网络的梯度不反传回底层的用户行为序列建模和 embedding layer,从而保障主网络的训练不受交融网络训练的影响。
通过退出交融网络的办法,咱们心愿模型在用户有明确的购物欲望的时候,模型能够给转化的输入更多的权重,而当用户没有明确的购物欲望的时候,模型能够给点击更大的权重。为了验证这个问题,咱们进行了多组试验。
- 首先通过剖析交融网络的均值和标准差,咱们发现模型端到端学习出的权重值与咱们离线通过参数搜寻失去的最优值比拟靠近,后果较为正当;
- 此外交融网络的输入具备样本级别差别,达到了个性化成果。而后咱们比照了晃荡和购买场景的输入差别,在点击 session 下,点击交融权重均匀是 0.92,订单 session 中对应的权重降落为 0.89;
- 而在订单 session 中,订单的交融权重比照点击 session 会有比拟大的晋升。最终线上的成果也证实了模型能够精准辨认用户属于偏买还是偏逛的类型,转化率有了大幅晋升。
- 除了首页之外,咱们还将该办法利用到直播和购物车等不同排序模型上,其转化率都失去了显著晋升,证实了办法的有效性和通用性。
2.3 用户行为序列建模
接下来介绍用户行为序列建模的工作。整个用户行为序列建模的目标是想从用户的原始行为序列中学习用户的偏好,这是个性化举荐中最重要的一个技术分支。它的整体技术框架如上图所示,模型的输出是用户原始点击或者下单行为的序列,之后通过一个 User Interest 模型来输入表征用户偏好的浓密向量。User Interest 模型能够是 pooling-based 也能够是 model-based,个别与排序工作一起端到端训练。
用户行为序列建模的挑战次要由以下几点:
- 用户的行为以及趣味是多种多样的,咱们须要从用户的原始行为序列中将不同的趣味提取进去;
- 用户的行为是随着工夫一直变动的,比方在一个月前用户感兴趣的商品当初就失去趣味了,即具备衰变性和演变性;
- 数据具备乐音,因为不像 NLP 畛域,文字的排列会受根本语法的束缚,用户的行为自身并没有束缚,导致序列中可能会蕴含乐音行为,即没有特地关联性的行为。比方昨天我还在浏览手机这一品类,明天我忽然就去浏览水果。
- 模型利用在线上服务时存在比拟显著的性能问题,咱们须要优化预测的时延。
用户行为序列建模在最近几年倒退较快。
- 第一个次要工作就是 YoutubeDNN 的 Pooling Basded 的办法,次要问题是信息失落重大,趣味表征与待排商品也没有任何相关性。为了解决这些问题,基于 attention 的模型(如 DIN)被提出,它能够从用户行为序列中挑选出与待排商品比拟相干的行为特色,次要问题是无奈建模衰变性或者演变性,不同工夫或者秩序的行为表征的趣味没有差异性。
- 第二基于 RNN-based 的模型解决了这一问题,然而这类模型受程序推理的限度,无奈建模较长的序列。在工业界 RNN-based 的序列模型通常只能对大概 50 个行为进行建模。
- 第三目前业界利用最宽泛的是基于 Transformer 的办法,它对用户行为序列的表征能力更强,且在肯定水平上能够忽视序列的长度。此外,尽管模型构造比 RNN 更简单,然而因为模型本身已于并行的特点,它在工程上更好被优化。
咱们的行为序列建模模块次要以 Transformer 为根底,并针对电商畛域用户行为的个性进行了相应优化。整体框架如上图右侧所示,采纳一个 encoder-decoder 的构造来对用户趣味进行表征和提取。用户的偏好是多样性的,如何建模不同期间的偏好以及相应的演变是一个十分有挑战的工作。原始 NLP Transformer 采纳 position encoding 来弥补模型所失落的地位信息。借鉴这一想法,咱们在雷同地位进行了时序编码,除了地位信息(position encoding),还减少了时间差(recency encoding)的编码信息,并通过间接相加来交融。Position 和 recency embedding 与排序模型一起,端到端学习用户行为秩序和工夫对趣味强弱的影响。
模型中 encoder 模块次要负责对用户偏好进行表白,与原始 Transformer 相似,采纳一个两层的 self-attention + ffn 的网络结构 。雷同的商品在不同的用户行为序列中代表的趣味有所不同,咱们须要借助用户历史中其余行为来表征每个行为背地的精准用意。与原始 Transformer 不同的是,咱们借鉴特色穿插的思维,同时保留了一阶和二阶趣味表征向量。在 decoder 端, 咱们应用 multi-head target attention,从 encoder 输入的一阶和二阶向量中提取出与待排商品相干的一阶和二阶偏好。
在工程上,因为模型计算复杂性的大幅晋升,线上延时减少了约 40 毫秒,无奈满足上线要求。为了解决这个问题,咱们通过合并计算和并行推理来优化线上延时。
- 在离线训练时每个 batch 的样本属于不同的用户,那么咱们须要对 batch 中每个的行为序列进行独立的 encoder 推理,其工夫复杂度是立方级的;
- 然而在线上推理时,同一用户一次申请,一个 batch 内的 encoder 推理后果雷同,那么咱们只有计算一次即可,工夫复杂度就能够升高为平方级。
- 此外,通过调整计算图的执行程序使得多个图能够同时去推理。最终从线上成果来看,tp99 累计能够降落至 33 毫秒,使得模型满足全量上线要求。
最初,咱们对模型进行了离线剖析,心愿钻研时序编码是否在端到端学习中学习到足够的信息。从业务上来讲,咱们认为用户越近期的行为对以后的用户偏好影响越大。从上图右侧的后果展现了模型的多个 head 学习的信息。咱们能够看到行为秩序越靠后,纵坐标示意的 attention 值会有某种比拟显著的倾向性,表明模型的确学习到了趣味的演变个性。模型上线后,举荐后果的精准性、丰富性和新颖性均失去大幅晋升。在首页 feed 流,人均点击晋升了 3.5%,这也是咱们应用深度模型后单次优化失去的最大晋升。
2.4 精密行为建模
当初介绍一下咱们在精密行为建模方向的工作。用户的行为中往往蕴含较多的噪声,包含一些误点击操作,须要从充斥噪声的序列中辨认用户的实在用意,因而咱们提出了基于精密行为的趣味建模来优化这一问题。
精密行为是用户点击后在商品详情页的统计量和子行为信息,包含停留时长、操作次数、查看主图、浏览评论等。
整体计划以后面提到的改良的 Transformer 为根底,通过精密行为来建模用户点击后的真正用意和趣味强弱。如上图所示,咱们通过一个 MLP 将精密行为映射到一个定长的向量上,之后在通过 bitwise-add 的形式与时空编码信息联合。停留时长和操作数等统计信息会进行离散化,并通过端到端学习。查看主图、浏览评论等精密行为间接学习 ID 表征,并通过 sum-pooling 聚合。
最初咱们剖析了精密统计属性对趣味提取的影响,与之前的模型论断相似,咱们也能察看到停留时长和 attention 之间存在某种趋势,停留越久 attention 值就越大。最终成果,在首页 feeds 流,人均点击晋升 2%,转化也晋升了 1.7%。
2.5 多模态特色
影响用户点击决策的因素除了商品根本属性,还受商品的主图和题目的影响。
- 举荐零碎存在冷启动问题,比方一些新品是不足用户反馈的,它们的特色 embedding 处于欠拟合状态。为了解决这个问题,咱们引入了多模态特色。多模态特色能够带来肯定的信息增益,商品的主图和题目中非结构化的视觉和语义信息能够比拟好地表征商品的状态。
- 多模态特色对缓解冷启动问题成果较好,因为这一类特色不须要用户的反馈,它的特色覆盖率在咱们的业务场景下较高。
- 模型整体框架是通过预训练模型 + 微调别离失去图像和文本向量,并基于 Transformer 进行视觉和语义偏好的建模。因为预训练模型采纳的是 resnet101,它的训练数据分布和电商畛域的图片散布有较大的差别,所以咱们应用了电商主图的产品词分类数据对模型进行微调,使得模型可能学习到电商商品的特色。最终,咱们把商品主图输出至图像模型,将最初一层 64 维向量作为图像 embedding,利用于排序模型。
在进行多模态的偏好建模过程中,有两个次要问题须要解决。
- 首先,图像 embedding 和其余端到端训练的 embedding 来自于不同模型,这使得它们处于不同的特色空间。
- 为了对齐向量空间,咱们退出了一个 transfer layer,采纳了一个 multi-gate multi-expert 的构造,以商品的品类作为 gate 的输出,选取不同的映射 expert,将图像特色与其余端到端的特色进行对齐。
- 最终,咱们会将转变后的图像 embedding 和 sku embedding 拼接到一起,并通过上文提到的 Transformer 进行对立编码。
最初咱们对图像预训练向量的品质进行了剖析,具体做法是筛选一部分商品,察看他们向量的类似度。通过上图能够看到,感官上相近商品的类似度比拟高,而当色差较大时类似度也会有相应的升高。如果是差别较大的商品,图像类似度也比拟小。在线上成果方面,咱们将该办法利用到了首页 feeds 和首页外围频道,成果比较显著,人均点击别离晋升 2.6% 和 5%。
3. 我的项目答疑
Q1:多指标交融模型中理论在线上会有多少个指标?每个指标的量级不一样,如何保障模型不受某一个指标主导?
A:在首页,咱们有 6 个指标。业务上,通常会有次要的优化指标,重要性不同;技术上,也会对不同指标进行相应的加权操作,使得他们的量级处于一个绝对均衡的状态。
Q2:线上会同时应用多指标模型的多路输入吗?
A:会的。个性化多指标模型中就是把多个指标的输入交融后作为排序根据的。
Q3:能不能再具体介绍一下多模态向量表征中图像 embedding 的微调办法?
A:首先,咱们的训练数据是商品的主图,对应的标签是产品词的分类。在京东的业务场景下,产品词大略有十万个类别。咱们会把数据输出到预训练的模型中,解冻住除了最初一个分类层外的所有网络参数,只微调分类层。最初咱们会将分类层输入的 64 维向量取出,作为商品的图像 embedding。
Q4:多模态交融模型有思考去做联结训练吗?
A:这是技术选型的问题,因为联结训练通常来说会是独自应用图像的模型去做联结训练,或者独自应用文本模型去做联结训练。但实际上咱们要在线上应用的话,图像、文本以及其余一些模型输入的 embedding 都会被应用,这就波及到了三到四种不同模型的联结训练。这种做法优化起来十分困难,对于线上服务以及后续迭代都会有很大的影响。所以,实际上咱们不会去采纳多模态联结训练的形式。
Q5:能够再具体介绍一下多指标交融模型中的损失函数的优化形式和设计思路吗?
A:多指标交融模型的主网络和交融网络别离对应着两个损失函数和两个优化器。咱们会别离训练这两局部网络,其中主网络输入的是多指标的预测值,比方点击率和转化率;另一个网络输入的是多指标预测值的交融权重,比方点击率的权重和转化率的权重。最终,模型应用点积的形式将多个指标的输入交融为一个预测值。在优化思路上,咱们心愿主网络优化各个指标的参数来达到最优;交融网络不影响主网络的更新,它学习如何组合主网络不同指标的预测值,来使得最终的排序能在优化方向上最优。