多任务学习与推荐系统

发布于 2024-03-11  320 次阅读


简介

大多数机器学习模型都是独立来进行学习的,即单任务学习(single-task learning)。也就是说,我们针对一个特定的任务,设计一个模型,然后进行迭代优化。对于稍复杂一点的任务,我们也习惯于通过进行拆解的方式,来对任务的每个部分进行建模。这样存在一个很明显的问题,在对每个子任务进行建模的时候,很容易忽略任务之间的关联、冲突和约束等关系,导致多个任务的整体效果无法更优。

多任务学习(multi-task learning),就是与单任务学习相对的一个概念。在多任务学习中,往往会将多个相关的任务放在一起来学习。例如在推荐系统中,排序模型同时预估候选的点击率和浏览时间。相对于单任务学习,多任务学习有以下优势:

  • 多个任务共享一个模型,占用内存量减少;(训练开销)
  • 多个任务一次前向计算得出结果,推理速度增加;(serving算力开销)
  • 关联任务通过共享信息,相互补充,可以提升彼此的表现。(知识迁移)

虽然多任务学习有着诸多好处,但是多任务学习也包含着许多挑战。多任务学习经常会出现跷跷板现象,即两个任务联合学习的时候,可能一个任务效果变好,另一个任务效果变差。究其本质,核心是训练过程中存在以下3个方面问题:

  • 多任务梯度方向不一致:同一组参数,不同的任务更新方向不一致,导致模型参数出现震荡,任务之间出现负迁移的现象,一般出现在多个任务之间差异较大的场景;
  • 多任务收敛速度不一致:不同的任务收敛速度不一样,有的任务比较简单收敛速度快,有的任务比较困难收敛速度慢,导致模型训练一定轮数后,有的任务已经overfitting,有的任务还是underfitting的状态;
  • 多任务loss取值量级差异大:不同的任务loss取值范围差异大,模型被loss比较大的任务主导,这种情况在两个任务使用不同损失函数,或者拟合值的取值差异大等情况下最为常见。

针对上述问题,业界通常有以下解决方法:

  • 设计网络结构
  • 平衡损失
  • 对梯度进行操作

推荐系统中的多任务学习

多任务学习在推荐系统领域的独特使用理由在于,推荐系统的转化链路通常是复杂而长的,涉及到多个阶段,如列表浏览、详情浏览、心愿单/加购、生成订单和完成支付。在这种情境下,多任务学习可以提供以下方面的独特优势:

跨阶段信息传递: 推荐系统的各个阶段之间存在关联(可以用概率公式表达),用户在前一个阶段的行为可能会影响到后续阶段的决策。多任务学习能够帮助模型学到这些跨阶段的信息传递,更好地捕捉用户行为的全局模式,从而提高推荐准确性。

层次化特征学习: 不同阶段的任务可能涉及到不同层次的特征,而多任务学习有助于模型学习到这些层次化的特征表示,上游任务的训练得来的表征可以被用于下游任务。

非均衡数据处理: 在电商平台上,用户在转化链路的不同阶段的数据量可能存在显著的不均衡,后续阶段的数据量可能较少。多任务学习可以帮助模型更好地处理这种不均衡,通过共享知识,提高在数据稀缺任务上的性能。

Share Bottom

最朴素的并行多任务实现方式是通过共享底层编码器,每个任务拥有独立的尾部前馈神经网络和预测头。在底层编码器之后,各个任务之间不再存在直接联系。这种架构有以下特点:

  1. 共享特征表示: 多个任务共享相同的底层编码器,这意味着模型可以学习到通用的特征表示,从而更好地捕捉数据中的共享模式和信息。
  2. 独立任务处理: 尽管底层特征是共享的,每个任务都有自己独立的尾部前馈神经网络和预测头,使得模型能够在任务之间保持一定程度的独立性,适应各自任务的特定要求。
  3. 简化模型结构: 这种实现方式简化了模型的结构,降低了计算复杂度,便于训练和维护。
  4. 解耦任务关系: 由于任务之间在底层编码器之后不直接联系,模型更容易处理任务间关系的变化,适应不同任务的异构性。

可以很明显的看出朴素模型的缺点:任务之间信息的交流受到限制,无法充分挖掘任务之间的相关性。在某些情况下,需要更复杂的架构以处理任务之间更紧密的关联。

Multi-gate Mixture-of-Experts

MMoE系列主要改进了共享部分,将共享编码器抽象成多个专家模块。每个专家模块的模型结构可以自定义,类似于多头注意力的思想,旨在使每个专家能够学到不同领域的知识。在多个专家之后,引入了一个门控网络,该网络负责控制每个专家对于每个任务的贡献程度。Multi-gate Mixture-of-Experts(MMoE)在MoE的基础上,进一步拆解,每个任务都拥有了自己的门控机制。

Progressive Layered Extraction

在MMoE基础上进行了进一步改进的Progressive Layered Extraction (PLE) 引入了专家组的概念,将专家组进一步区分为任务独占专家组和共享专家组,这一结构被称为CGC(Customized Gate Control) 定制门控。 PLE网络结构是CGC结构的叠加,在分层的机制下,Gate被设计成两种类型,以实现不同类型Expert信息的融合和交互。这两种Gate分别为task-share gate和task-specific gate。

Entire Space Multi-task Model

Entire Space Multi-Task Model (ESMM) 在建模上与之前提到的并行建模不同,其模型结构明确地反映了任务之间的依赖关系。其核心思想是以CVR(Conversion Rate)为主任务,并引入CTR(Click-Through Rate)和CTCVR(Click-To-Conversion Rate)作为辅助任务,以解决CVR预估的挑战。


面向ACG编程