我们要解决的几个问题
- 粗精排联合建模的模型架构是什么?
- 如何理解粗排和精排?
- 粗排和精排的网络结构是否一致?
- 粗排和精排参数设置有什么注意事项吗?
- 粗排和精排的目标分别是怎样的?
- 粗排和精排的一致性是如何保证?
- 为什么用精排来做召回粗排效果不好?
- 粗排模型双塔设计的缺点
粗精排联合建模的模型架构是什么?
如上图描述,粗精排联合建模包含以下知识点:
多任务学习的架构。
- 同时学习多个相关的任务,例如在广告系统中,粗排和精排。
- 所有的任务共享一个共享底层表示,这个底层表示捕捉了通用的特征和信息。在广告系统的粗排和精排联合建模中,底层表示可以是用户的特征、物品的特征和上下文信息等
样本:
首先召回的输出就是粗排的输入。但是实际上为了简单方便,粗排模型和精排模型共享同一份数据样本,包括曝光点击、曝光未点击等样本。但是这样会存在粗排的样板选择偏差问题,即ssb问题。 因为粗排的样本并不一定是都曝光了的。所以存在丢失的负样本。
针对样本的偏差,可以采取几个办法:
1.适当的增加一些召回出未曝光的样本。
2.可以用精排的样本去评估粗排的好坏。
3.想办法引入交叉特征。 但是广告检索引擎的粗排如果设计成双塔形式的话,就不好设计引入交叉特征了。这个点要注意。
特征
特征这块就是注意粗排和精排的网络结构的不同天然决定了特征的不同。
精排:你能想象到的特征,都可以添加。用户的静态+动态,广告的静态+动态,上下文,以及用户,广告,上下文交叉,以及统计dense特征等等。这些都可以交叉,或者sparse加入等等。
粗排:由于设计成双塔或者多塔了,所以这里要注意:用户只能涉及用户侧的特征,广告也是广告侧的特征,用户和广告是无法交叉的。但是可以,用户和上下文交叉以及对应的先验分布等特征加入。因为用户和上下文都是线上可以实时获取下发到下游的。
模型
注意这里不能说粗排和精排网络结构一样。这里明显不一样。
如下面的图,精排的多层mlp一般可以[128,128,128],等。一般神经元设计一样的形式,这里没什么原因,就是工作习惯,都这样设计。
粗排的级联这里有用户一个塔:网络结构是:[512,128,64,32],广告塔:[512,128,64,32]
注意这里用户的最后一层和广告的最后一层神经元个数要一致,因为用户的embedding和广告的embedding网络出来后要叉乘,所以维度要对应上才行。叉乘后经过一个sigmoid输出一个概率值。
在联合建模时候,粗排模型和精排模型通过共享embedding进行联合训练。共享的embedding也是基础的特征。用户和广告,上下文等。各个领域的特有特征是需要各自独有的。
理解方式1:
粗排模型根据广告的展现样本进行训练,使用交叉熵损失函数进行优化;精排模型则根据曝光样本进行训练,使用知识蒸馏的方式对粗排模型进行蒸馏学习,以提升粗排模型的效果。
理解方式2:
如上图所示:
精排是直接输入score值。
粗排一般是双塔,双塔模型最大的特点就是 用户和广告是是独立的两个dense网络”,左侧是 用户 塔,右侧是 广告 塔。这两个塔的参数一般是不同享,他们分别输出 用户 Embedding 和 广告 Embedding。然后计算这 2 个 Embedding 的相似度。其中广告塔是可以离线抽取的。
粗排的双塔模型在很多大厂都有多年的使用经历,这么设计好处很多。广告的embedding是可以离线计算好,存储到一个k,v结果的数据库里。 所以粗排不用实时计算embedding,只需要从数据库中检索,这样最大好处就是可以大大提高运算效率。在工程上可以非常快的落地。
所以粗排的双塔不仅在粗排,在召回领域,数据绝对的“召回+粗排的”主力模型。
如何理解粗排和精排?
“精排是特征的艺术、粗排是样本的艺术” : 这句话如何理解?
粗排的重点是样本,精排就是使劲堆特征。
召回:
召回出 可能匹配用户兴趣的样本,这里量级可能是百级,也可以是千级。
粗排:
从召回里的样本里找到 “匹配用户兴趣的最大的几十个”样本
所以粗排的分界点在于找到是否感兴趣。
精排:
从粗排的最感兴趣的几十个样本里,挑选出用户最感兴趣分值最高的一条样本。
总结一下:
粗排需要一个边界,是否感兴趣 具备较强的区分能力。精排是挑选出最感兴趣的一个。
粗排和精排的网络结构是否一致?
不一致。精排的多层mlp一般可以[128,128,128],等。一般工作中这样设计习惯了,也可以递减神经元形式。
粗排的级联这里有用户一个塔:网络结构是:[512,128,64,32],广告塔:[512,128,64,32]
只要确保神经元别太多,最后一层神经元个数一致即可。
粗排和精排参数设置有什么注意事项吗?
参数设置就是上个问题,神经元的设置。
其他学习率可以设置不同,其他差不多。
粗排和精排的目标分别是怎样的?
1.粗排的目的就是为了减轻精排的压力,即对召回做初筛。
2.粗排目标是获得更多的相关性,感兴趣样本。重点在于提高相关性。精排目标在于对粗排样本精选,提高排序能力,重在准确性。
3.不同之处是:模型结构和特征没有精排复杂。
粗排和精排的一致性是如何保证?
粗排训练不能只基于已曝光的样本训练,这样又有样本偏差的问题:粗排靠前,精排靠后item的无法被粗排学习到,这就需要额外构造负样本来缓解,引入负样本的目的是要提升粗精排的一致性
为什么用精排来做召回粗排效果不好?
粗排和精排的训练样本是不同的,所以不能直接把把精排模型当作粗排模型来用。 否则推理时候,粗排会遇到在训练时从未见过的样本,本质上在一定程度上违反了机器学习的前提条件:独立同分布假设。即粗排的训练和推理不是独立同分布,所以效果不会好。
粗排模型双塔设计的缺点
粗排模型多数是双塔设计,这种设计缺点也很明显
1.缺少交叉组合特征
比如用户和广告的叉乘。为什么用不了这类特征呢? 原因是用户embedding是实时获取,广告embedding是离线获取,所以用户和广告的叉乘是无法放到用户或者广告侧的,放用户侧,获取不到广告特征。广告侧,获取不到线上实时检索的用户特征。 所以无法交叉。 这种设计模型是由线上的检索架构决定的。
主要是上面这个特征。回答这一个就OK了。