导语 | 粗排是介于召回和精排之间的一个模块,是典型的精度与性能之间trade-off的产物。了解粗排各技术细节,肯定要时刻把精度和性能放在心中。
本篇将深刻重排这个模块进行论述。
一、总体架构
粗排是介于召回和精排之间的一个模块。它从召回获取上万的候选item,输入几百上千的item给精排,是典型的精度与性能之间trade-off的产物。对于举荐池不大的场景,粗排是非必选的。粗排整体架构如下:
二、粗排根本框架:样本、特色、模型
目前粗排个别模型化了,根本框架也是包含数据样本、特色工程、深度模型三局部。
(一)数据样本
目前粗排个别也都模型化了,其训练样本相似于精排,选取曝光点击为正样本,曝光未点击为负样本。但因为粗排个别面向上万的候选集,而精排只有几百上千,其解空间大很多。只应用曝光样本作为训练,但却要对曝光和非曝光同时预测,存在重大的样本抉择偏差(SSB问题),导致训练与预测不统一。相比精排,显然粗排的SSB问题更重大。
(二)特色工程
粗排的特色也能够相似于精排,因为其计算提早要求高,只有10ms~20ms,故个别能够粗分为两类:
一般特色:相似精排,user、context、item三局部。有哪些特色,以及特色如何解决,能够参看精排的特色工程局部。
穿插特色:user和item之间的穿插特色,对晋升模型精度很有帮忙。但因为穿插特色枚举过多,难以离线计算和存储。实时打分时又不像user特色只用计算一次,提早较高。故对于穿插特色要审慎应用。
(三)深度模型
粗排目前曾经根本模型化,其倒退历程次要分为四个阶段:
第一代:人工规定策略,能够基于后验统计,构建一个人工规定。比方交融item的历史CTR、CVR、类目价格档、销量等比拟外围的因子。人工规定准确率低,也没有个性化,也不可能实时更新。
第二代:LR线性模型,有肯定的个性化和实时性能力,但模型过于简略,表达能力偏弱。
第三代:DSSM双塔内积深度模型。它将user和item进行解耦合,别离通过两个Tower独立构建。从而能够实现item向量离线存储,升高线上predict提早。次要有两种范式:
item和user均离线存储。这个计划只须要计算user和item的内积即可,计算提早低。因为user是离线存储的,故能够应用简单的模型,晋升表达能力。但user侧的实时性较差,对于用户行为不能实时捕获。
item离线,user实时。item绝对user,实时性要求没那么高。因为一次打分是针对同一个用户的,故user侧只须要实时计算一次即可,速度也很快。目前这个计划应用较多。
第四代:item和user隔离,导致二者没有特色穿插能力,模型表达能力弱。故又提出了以COLD为代表的第四代模型,轻量级MLP粗排模型。它通过SE block实现特色裁剪,并配合网络剪枝和工程优化,能够实现精度和性能之间的trade-off。
三、粗排优化
粗排的几个次要问题:
精度和特色穿插问题:经典的DSSM模型长处很多,目前在粗排上广泛应用,其最外围的毛病就是不足特色穿插能力。正所谓成也萧何败萧何,正是因为user和item拆散,使得DSSM性能很高。但反过来也是因为二者不足穿插,导致模型表达能力有余,精度降落。典型的精度和性能之间的trade-off。
低提早要求:粗排提早要求高,个别只有10ms~20ms,远低于精排的要求。
SSB问题:粗排解空间比精排大很多,和精排一样只应用曝光样本,导致重大的样本抉择偏差问题。
(一)精度晋升
精度晋升的计划次要有精排蒸馏和特色穿插,次要还是要优化特色穿插问题。
- 精排蒸馏
精排模型作为teacher,对粗排模型进行蒸馏学习,从而晋升粗排成果,这曾经成为了目前粗排训练根本范式
- 特色穿插
特色穿插能够在特色层面,也能够在模型层面实现。特色层面就是手工结构穿插特色,作为模型底层输出,依然能够在独立的Tower中。模型层面则应用FM或者MLP等实现主动穿插。次要办法有:
特色蒸馏:teacher和student应用雷同的网络结构,teacher模型应用一般特色和穿插特色,student则只应用一般特色。student从teacher中能够学到穿插特色的高阶信息。
退出穿插特色:特色层面构建手工穿插特色,独立的Tower中应用。因为穿插特色难以离线存储,实时计算空间也很大,故这个独立的Tower不能过于简单。那咱们第一工夫就想到了wide&deep模型。deep局部依然应用DSSM双塔,wide局部则为穿插特色。
轻量级MLP:模型层面实现特色穿插,不进行独立分塔。比方COLD,通过特色裁剪、网络剪枝、工程优化等形式升高时延,而不是靠独立分塔。
(二)提早升高
精度和性能始终以来都是一个trade-off,很多计划都是在二者之间寻找均衡。粗排的性能要求更高,其提早必须管制在10ms~20ms以内。性能优化有很多常见办法。
次要有以下办法:
特色裁剪:如COLD,不重要的特色先滤掉,天然就升高了整体提早。这一层能够做在模型内,从而能够个性化和实时更新。
量化和定点化:比方32bit升高为8bit,能够晋升计算和存储性能。
网络剪枝:network pruning,包含突触剪枝、神经元剪枝、权重矩阵剪枝等办法,不开展了。
模型蒸馏:model distillation,上文曾经提到了,不开展了。
网络结构搜寻NAS:应用更轻量级,成果更好的模型。能够尝试网络结构搜寻NAS。
(三)SSB问题
粗排解空间比精排大很多,和精排一样只应用曝光样本,导致重大的样本抉择偏差问题。能够把未曝光样本的精排打分给利用起来,缓解SSB问题。
作者简介
谢杨易
腾讯利用算法研究员。