在前面的文章中,是针对一个场景的ctr cvr或者dur、次活这种多目标的一些知识点讲解。对于一个业务比较多的app/软件,比如美团中的多业务(美团外卖、美团买菜、机票、酒店...)、淘宝里面的首页商品推荐、搜索商品、逛逛(从他们公开的文章中,没有对这些不同的场景进行统一建模,还是各自在各自的场景中进行优化)、腾讯应用宝里面的首页推荐、激活页推荐、更新后推荐、搜索(从他们公开的文章中,没有对这些不同的场景进行统一建模,还是各自在各自的场景中进行优化),实际上可以探索下多场景建模。美团在这个里面就做了很多探索,走在了行业领先位置 陈胜:美团搜索排序实践
下面对里面一些没有说到的细节和重点记录下
一、多路融合层
可以看到只有用户侧特征(query也是用户侧特征),没有item特征,其中context特征指的是用户访问美团时候的一些信息,比如时间戳等。那么这就是个多分类模型,以用户的每次请求作为样本, 最终目标是预测这个用户在这三个业务是否点击/下单(三个业务可以是酒店、到家、餐饮),最后一层是softmax,也就是3个数值。从文章中描述看:
将输出作用至每一路进行融合,那说明这3个业务还是各自有各自的召回路,softmax的数值目的只是用来衡量这个用户在3个业务最有可能点击/下单哪个业务,然后哪个业务就多召回点,就是一个配额功能。这个分数可能会乘以一个召回基数(每个业务的召回基数也是不同的)
后面他们还针对后面的softmax层做的细了一点,就是讲召回方式和业务进行二阶交叉形成更详细的召回链路
上面6路分别是
1:lbs召回+酒店业务
2:lbs召回+外卖业务
3:文本召回+外卖业务
4:文本召回+餐饮业务
5:向量召回+ 餐饮业务
6:向量召回+ 到家业务
二、多业务精排层,一般的多业务/多网络在最上面都会是不同的塔,有多少目标就有多少塔,但是美团这篇文章多个业务最上面对应多个权重然后汇集在一起得到预测打分,博主暂时没有搞懂这样的原因,先看成多塔来学习吧
补充:首先这样训练可以同时训练出来多个业务的独有网络,其次可以训练出来每个网络的权重,这也是这个用户输入这个“query”时最有可能产生ctr的一个业务,那么这个业务对应的每个item的得分应该会乘以这个w,然后再统一进行排序
1:mbn-v1
每个子网络有自己专属业务的特征加在“共享层”后面
3:通过五个专家和不同的门控,使得每个业务子网络的输入特征是与业务最为相关的高层语义表征;使用LambdaLoss这种损失函数,可以同时优化score和排序指标(比如ndcg),这个在文章中没有明确指出;交叉熵的原因是模型在做预估时,每个输出都会有一个品类,希望品类对应的子网络获得的权值更高,这样可以真正使每个子网络建模对应的业务场景
4:
mmoe每个子网络都是从多个共享专家网络*不同权重得到的,腾讯的CGC网络在此基础上,每个子网络有一个自己专属的专家网络
5:这里提到在上面的基础上增加一个子网络,预测query需要使用哪一个子塔,即输出对应的子塔的权值会更高。从图中来看,左侧应该是这个子塔,但是这个子塔并没有像文中描述的那样作用到w1 w2...上,二是直接和多网络融合后的值进行融合,这里可能是图画的不对
右边那个应该是后验概率,但是是怎么参与训练的,博主也没有搞太懂
三、聚块建模
核心思想是两类序列,item/商家序列,聚块点击序列,然后使用DIN的这种带有target的attention方法来动态给每个序列不同的权重,然后最终计算两个loss(ctr 聚块大小)来进行反向传播
实际上这种还可以再改进下,比如可以计算不同聚块的权重,然后对item/商家序列进行加权;还可以用动态路由的办法,给每个不同模块的序列给予不同的权重