Multi-task Learning 多目标学习-网络设计和损失函数优化

目前多目标学习主要从两个方向展开,一个是网络结构设计,一个是损失函数优化;
一、MTL网络设计
MTL网络通常可分为两种,一种是hard- 不同任务间共用底部的隐层,另一种是soft-,形式较为多样,如两个任务参数不共享,但对不同任务的参数增加L2范数的限制;也有一些对每个任务分别生成各自的隐层,学习所有隐层的组合;这两种方式各有优劣,hard类的网络较soft不容易陷入过拟合,但如果任务差异较大,模型结果较差,但soft类网络通常参数较多,结构比较复杂,线上部署困难;
1、hard-
hard-为不同任务底层共享模型结构和参数,顶层分为几个不同的目标进行网络训练
这种结构本质上可以减少过拟合的风险,但是效果上可能受到任务差异和数据分布带来的影响
基本上,只要是能预测单模型的模型,都可以很简单的转化为hard-的结构,只需要将共享层的最后一层与多个输出层拼接即可 。
2 soft-
soft-不同于hard-model,每个任务有自己的参数,最后通过对不同任务的参数之间的差异加约束,表达相似性 。比如可以使用L2, trace norm(迹范数)等 。
网络结构如下:
3、相关技术 3.1 MMoE 谷歌2018
其中(a)是传统的硬共享参数模型,(b)是MoE模型,使用单个gate控制多个任务的参数,(c)是MMoE模型,在MoE的基础上,每个任务使用一个gate控制其权重 。
名词解释:
a、:指对模型输入进行不同方式的变换处理的网络层,每个表示一种网络(也可以都一样)
b、gate:控制每个权重的变量,对于每一个任务,不同的权重可能是不一样的,因此使用gate来控制权重,类似于
MoE模型对于不同的任务的gate权重是一样的,其函数表达式如下:
y k = h k ∑ i = 1 n g i f i ( x ) y^k=h^k\sum_{i=1}^{n}(x) yk=hki=1∑n?gi?fi?(x)
其中k表示第k个任务,n表示n个网络
MMoE是在MoE的基础上提出的方法,作者认为对于不同的任务,模型的权重选择是不同的,所以为每个任务分配一个gate模型 。对于不同的任务,gate k的输出表示不同被选择的概率,将多个加权求和,得到f_k(x),并输出给特点的Tower模型,用于最终的输出 。
MMoE模型的表达式如下:
f k ( x ) = ∑ i = 1 n g i k ( x ) f i ( x ) f^k(x)=\sum_{i=1}^{n} g_i^k(x)f_i(x) fk(x)=i=1∑n?gik?(x)fi?(x)
g k ( x ) = s o f t m a x ( W g k ( x ) ) g^k(x)=(W_{g^k(x)}) gk(x)=(Wgk(x)?)
类似于MoE,k表示第k个任务,每个任务对应一个gate 。
MMoE的底层参数仍然是共享的,但是通过目标和网络参数直接的gate来学习,让每部分网络充分学习到对每个目标的贡献最大的一组参数结构,通过这种方式来保证,底层网络参数共享的时候,不会出现目标之间相互抵消的作用 。
3.2 SNR 谷歌2019
论文地址为:
SNR 是MMOE作者对多任务学习的进一步工作,为了尽量共享不同任务之间的信息,提高精度,也节约线上服务代价而提出的一种算法 。
其结构图如下
主要优化点:
把网络结构的跨任务参数共享抽象为网络子结构的路由问题;
引入0-1隐变量对路由作最优化;
通过L1正则化(可以得到参数量更小的网络),学到稀疏解,同等精度下节约11%的网络结构开销

Multi-task Learning  多目标学习-网络设计和损失函数优化

文章插图
SNR-Trans 可形式化为如下表达
hard可形式化为
u是0,1之间的随机分布函数 β, γ, ζ 都是超参数
加L1正则化的损失函数可表示为
其中,q是s的累计概率分布函数
线上的的时候,z简化为
可参见:网友的中文翻译