【推荐算法论文阅读】Modeling Task Relationships in Multi-task Learning with Multi-gate Mixture-of-Experts

一、背景

如果做过推荐系统,就会发现在想要达成某些目标的时候,非得多任务一起上不可。就拿给用户推荐视频为例,我们既希望提高用户的点击率,同时也希望提高视频的播放时长,视频点赞、转发等等… 这些目标的达成并非是简单的相辅相成,更多的可能是相互竞争的关系。要是我们只让模型学习点击率,那么经过训练的模型推荐结果很可能导致标题党和封面党大行其道,真正的好的视频却被雪藏了,这显然不是我们希望看到的。而如果一味的追求高点赞,也可能就忽略了一些相对冷门的或新的佳作。这种对立,对于某些互联网巨头的黄赌毒APP来说尤为严重,那种也许你看起来特别带劲的视频,因为都懂的原因很有可能并不适合转发…因此,我们无法追求某个单一目标的达成,而需要同时优化这些有利于产品良性循环的任务目标,让它们相互平衡,从而提升用户体验,带来和留住更多的用户。

二、模型结构

【推荐算法论文阅读】Modeling Task Relationships in Multi-task Learning with Multi-gate Mixture-of-Experts_第1张图片

2.1 Shared-Bottom model

给定 K 个任务,该模型由一个共享底层网络组成,表示为函数 f ,和 K个 tower network h k h^k hk ,其中 k = 1, 2, …, K 分别用于每个任务。 共享底层网络在输入层之上,而tower network建立在共享底层的输出之上。 然后每个任务的单独输出 y k y^k yk follow相应的特定的task tower。 对于任务 k,模型可以表述为:
请添加图片描述
Shared Bottom模型会对数据分布的不同、任务之间的关系等因素特别敏感。这源于不同任务之间的固有的冲突在事实上会对于至少一部分任务造成不利的影响,尤其当模型的参数在各个任务中被广泛共享的时候。

2.2 MoE

可参考【论文阅读】Adaptive Mixtures of Local Experts
【推荐算法论文阅读】Modeling Task Relationships in Multi-task Learning with Multi-gate Mixture-of-Experts_第2张图片

2.3 MMoE

MMoE的创新之处在于跳出了Shared Bottom那种将整个隐藏层一股脑的共享的思维定式,而是将共享层有意识的(按照数据领域之类的)划分成了多个Expert,并引入了gate机制,得以个性化组合使用共享层。

MoE共享层将大的Shared Bottom网络拆分成了多个小的Expert网络(如图所示,拆成了三个,并且保持参数个数不变)。我们把第i个Expert网络的运算记为 f i ( x ) f_i(x) fi(x),然后Gate操作记为 g ( x ) g(x) g(x),他是一个n元的softmax值(n是Expert的个数,有几个Expert,就有几元),之后就是常见的每个Expert输出的加权求和,假设MoE的输出为y,那么可以表示为:
请添加图片描述

如果只是这样的话,要完成多任务还得像Shared Bottom那样再外接不同的输出层,这样一搞似乎这个MoE层对多任务来说就没什么用了,因为它无法根据不同的任务来调整各个Expert的组合权重。所以论文的作者搞了多个Gate,每个任务使用自己独立的Gate,这样便从根源上,实现了网络参数会因为输入以及任务的不同都产生影响。于是,我们将上面MoE输出稍微改一下,用 g k ( x ) g^k(x) gk(x)表示第k个任务的们就得到了MMoE的输出表达:
请添加图片描述
请添加图片描述
Gate
把输入通过一个线性变换映射到nums_expert维,再算个softmax得到每个Expert的权重
Expert
简单的几层全连接网络,relu激活,每个Expert独立权重

参考资料

  1. 我要打十个:多任务学习模型MMoE解读
  2. MMoE论文笔记
  3. 【论文阅读】Adaptive Mixtures of Local Experts

你可能感兴趣的:(推荐算法,推荐算法,算法,机器学习)