今天介绍一篇美团在多任务学习方面的工作,提出了一种自适应信息传递多任务框架应用于客户挖掘管理这类有序列依赖的任务,一起来看一下。
1、背景
论文聚焦于信用卡业务,一个用户从进入app到最终激活信用卡,主要经历以下几个步骤:
:这一阶段指信用卡的广告展示给用户
:这一阶段指用户点击了信用卡的广告,并重定向至信用卡申请页面
:这一阶段指用户填写完成了申请表信息,并点击了申请按钮
:这一阶段指用户有良好的信誉,系统认可此次申请
:这一阶段指用户收到信用卡并进行了激活
上述的几个阶段中,前四个阶段都能有实时的反馈,而最后的激活阶段则是延迟反馈的,通常,用户在14天内进行了激活,则标签为正,若14天内没有激活,则标签为负。同时,上述的五个步骤是具有先后顺序的,只有前一个阶段发生了,后续阶段才有可能触发。
对于这种具有序列依赖关系的问题,通常可以使用多任务学习。多任务学习模型通常有如下两种的形式:
第一种是MMoE,底层的expert决定了不同任务之间信息共享的程度,上层的每一个Tower对应每一个任务独有的部分。第二种是ESMM的思路,其主要的思想是通过输出层概率的计算,解决部分任务的样本选择偏差问题。但上述两种思路应用在本文所关注的信用卡场景中时,都存在一定的不足。首先,对于MMoE来说,它并不是针对有序列依赖的多任务问题所设计的;其次,对于ESMM来说,它仅仅通过一个标量将不同任务计算的概率进行转移,而忽略了中间层更为丰富信息在不同任务之间的传递,同时没有显式建模具有依赖关系的多任务之间的概率关系,比如对于同一条样本,impression->click的概率是要大于等于impression->application的,因为只有发生了click,才可能会发生application。
因此,针对信用卡客户挖掘管理这类有序列依赖的任务,为了更好的在不同的任务之间进行信息的传递,同时建模多任务之间的概率关系,论文提出了一种自适应信息传递多任务框架( an Adaptive Information Transfer Multi-task (AITM) framework),下面进行详细介绍。
2、AITM介绍
2.1 概览
首先,来看一下美团App中的多任务排序系统整体架构:
可以看到,通过AITM框架呢,对四个任务的概率进行预测,分别是impression->click,impression->application,impression->approval和impression->activation,但只有后两个概率会参与到最后的多目标排序公式计算。其中的业务背景不是本文所介绍的重点,因此进行略过,感兴趣的同学可以翻阅原文进行阅读。
2.2 AITM框架
AITM框架如下图所示:
首先,最下层的embedding层同ESMM一样,不同任务之间共享embedding层,将输入向量x转化为每个任务的输入向量v。随后,每个任务通过自己单独的Tower,对向量v进行转换,得到qt:
这里,ft可以选择不同的结构,如NFM、DeepFM、AFM甚至是一些序列模型NHFM、DIFM等。
接下来,对于两个相邻的任务t-1和t,第t个任务经过AIT模块的输出计算公式如下:
其中,zt-1是第t-1个任务的AIT模块的输出,而gt-1用于学习将zt-1哪些信息传递给第t个任务,传递的信息表示为pt-1。
然后再来看看AIT模块是如何对接收到的两部分信息进行处理的,zt的计算公式如下:
其中权重计算公式为:
这里有点类似于self-attention的感觉,h1、h2、h3分别用来计算V、Q和K。
而对于第一个任务来说,由于没有前一个任务的信息输入,则z1=q1。
最后,第t个任务的输出计算为:
每个任务使用交叉熵损失:
2.3 Behavioral Expectation Calibrator
由于任务之间具有依赖关系,比如只有发生了click,才可能会发生application。因此对于同一条样本,impression->click的概率是要大于等于impression->application的。基于此,论文设计了Behavioral Expectation Calibrator,其计算方式如下:
可以看到,如果后一个任务的预测值高于前一个任务的预测值,会得到一个正向的惩罚项,反之则为0。
这一部分作为辅助损失加入到模型训练中,因此最终的损失公式如下:
3、实验结果
AITM在离线和线上都取得了不错的收益:
好了,论文本身就介绍到这里了。个人感觉针对这种有依赖关系的多任务场景,还是比较不错的思路的尝试,感兴趣的同学可以阅读原文~~