多目标建模算法PLE

Posted zhiyong_will

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了多目标建模算法PLE相关的知识,希望对你有一定的参考价值。

1. 概述

在现如今的推荐系统或者搜索中,都存在多个目标,多目标的算法在现如今的系统中已然成为了标配。在多目标的建模过程中,如果不同的学习任务之间较为相关时,多个任务之间可以共享一部分的信息,这样最终能够提升整体的模型学习效果。但是如果多个任务之间的相关性并不强,或者说多个任务之间存在某种冲突,这样通过部分的共享就会起到事与愿违的效果,这便是通常所说的在多任务建模中出现的负迁移(negative transfer)现象,即在相关性不强或者无相关性的多任务环境下进行信息共享,最终影响整体的网络效果,MMoE[1]便是在这样的情况下被提出。在MMoE中,通过共享多个专家(expert)实现信息的共享,同时针对每一个上层任务(task)都有对应的门控函数(gate),学习到多个专家对于特定任务的贡献程度,即专家的分布。以此,实现了对任务之间的关联和区别的学习。

然而,在多任务建模过程中,还存在另外一种现象,称为跷跷板现象(seesaw phenomenon)。简单来说,跷跷板现象就是在对多个目标进行优化的过程中,一个任务指标的提升伴随着另外一些任务指标的下降。出现这种现象的主要原因是多个任务之间出现较多的共享,MMoE算法中也不能有效解决这样的一个问题。PLE(Progressive Layered Extraction)[2]模型在MMoE的基础上通过对共享的网络结构优化,在原先的共享部分,又增加了task-specific的部分,同时,为了增强网络的效果,构造了多层的网络结构。

2. 算法原理

2.1. Customized Gate Control

为解决上述提出的两个问题,参考[2]中首先提出了CGC(Customized Gate Control)网络。在CGC网络中,在共享专家网络的基础上,又针对特定的任务有特定的专家网络,以此增强每个任务的效果。CGC的网络结构如下图所示:

在CGC的网络结构中,其底层网络包括了shared experts和task-specific expert两个部分,且每一个expert部分都是由多个expert组成,上层针对每一个任务都有一个门控网络,且门控网络的输入是共享的experts和该任务对应的experts。由此可见,在CGC网络中,既包含了task-specific网络针对特定任务独有的信息,也包含了shared网络共享的信息,以上图为例,假设 [ E ( k , 1 ) T , E ( k , 2 ) T , ⋯   , E ( k , m k ) T ] \\left [ E_\\left ( k,1 \\right )^T,E_\\left ( k,2 \\right )^T,\\cdots, E_\\left ( k,m_k \\right )^T \\right ] [E(k,1)T,E(k,2)T,,E(k,mk)T]为指定任务 k k k对应的多个专家的输出, [ E ( s , 1 ) T , E ( s , 2 ) T , ⋯   , E ( s , m s ) T ] \\left [ E_\\left ( s,1 \\right )^T,E_\\left ( s,2 \\right )^T,\\cdots, E_\\left ( s,m_s \\right )^T \\right ] [E(s,1)T,E(s,2)T,,E(s,ms)T]为共享部分的多个专家的输出,这两个输出组合成上层门控网络的输入 S k ( x ) S^k\\left ( x \\right ) Sk(x)

S k ( x ) = [ E ( k , 1 ) T , E ( k , 2 ) T , ⋯   , E ( k , m k ) T , E ( s , 1 ) T , E ( s , 2 ) T , ⋯   , E ( s , m s ) T ] S^k\\left ( x \\right )=\\left [ E_\\left ( k,1 \\right )^T,E_\\left ( k,2 \\right )^T,\\cdots, E_\\left ( k,m_k \\right )^T, E_\\left ( s,1 \\right )^T,E_\\left ( s,2 \\right )^T,\\cdots, E_\\left ( s,m_s \\right )^T \\right ] Sk(x)=[E(k,1)T,E(k,2)T,,E(k,mk)T,E(s,1)T,E(s,2)T,,E(s,ms)T]

门控网络的计算输出 g k ( x ) g^k\\left ( x \\right ) gk(x)为:

g k ( x ) = w k ( x ) S k ( x ) g^k\\left ( x \\right )=w^k\\left ( x \\right )S^k\\left ( x \\right ) gk(x)=wk(x)Sk(x)

其中, w k ( x ) = S o f t m a x ( W g k x ) w^k\\left ( x \\right )=Softmax\\left ( W_g^kx \\right ) wk(x)=Softmax(Wgkx),且 W g k ∈ R ( m k + m s ) × d W_g^k\\in \\mathbbR^\\left ( m_k+m_s \\right )\\times d WgkR(mk+ms)×d

2.2. Progressive Layered Extraction

在深度学习中,为了使得模型能够具有更好的泛化能力,通常的方法是构建更深的网络。同样,为了能够得到更具有泛化能力的网络,可以将上述网络构建得更深,这便有了PLE结构。简单来说,PLE结构可以看做是CGC网络结构的扩展,由single-level的CGC衍生为multi-level的PLE。具体的PLE网络结构如下图所示:


与CGC网络相比,除了第一个Extraction Network的输入是原始的Input,其余的Extraction Network的输入是上一个Extraction Network的输出,即包含两个大的部分,即特定任务对应的专家网络输出,如上图中的Experts A和Experts B的输出,另外一个是共享专家网络的输出,如上图中的Experts Shared的输出。

2.3. 损失函数

在多任务重,其损失函数为各任务损失的加权求和,即为:

L k ( θ 1 , ⋯   , θ K , θ s ) = ∑ k = 1 K ω k L k ( θ k , θ s ) L_k\\left ( \\theta _1,\\cdots ,\\theta _K,\\theta _s \\right )=\\sum_k=1^K\\omega _kL_k\\left ( \\theta _k,\\theta _s \\right ) Lk(θ1,,θK,θs)=k=1KωkLk(θk,θs)

其中, ω k \\omega _k ωk为第 k k k个任务的权重,对于权重的设置,参考[2]中给出了如下的迭代公式:

ω k ( t ) = ω k , 0 × γ k t \\omega _k^\\left ( t \\right )=\\omega _k,0\\times \\gamma _k^t ωk(t)=ωk,0×γkt

其中, γ k \\gamma _k γk为更新率。对于任务 k k k的损失函数 L k ( θ k , θ s ) L_k\\left ( \\theta _k,\\theta _s \\right ) Lk(θk,θs),参考[2]中给出了如下的公式:

L k ( θ k , θ s ) = 1 ∑ i δ k i ∑ i δ k i    l o s s k ( y ^ k i ( θ k , θ s ) , y k i

以上是关于多目标建模算法PLE的主要内容,如果未能解决你的问题,请参考以下文章

多任务学习——RecSys 2020腾讯视频PLE

数学建模暑期集训27:粒子群+遗传算法求解多目标规划问题

数学建模暑期集训15:matlab求解多目标规划模型

路径规划考虑分配次序的多无人机协同目标分配建模与遗传算法求解

数学建模学习(99):多目标寻优 非支配排序遗传算法NSGA III

算法素颜:玩平衡二叉树就像跷跷板一样简单!