多目标学习(Multi

编程入门 行业动态 更新时间:2024-10-08 20:28:48

多<a href=https://www.elefans.com/category/jswz/34/1770031.html style=目标学习(Multi"/>

多目标学习(Multi

目前多目标学习主要从两个方向展开,一个是网络结构设计,一个是损失函数优化;

一、MTL网络设计

MTL网络通常可分为两种,一种是hard-parameter sharing不同任务间共用底部的隐层,另一种是soft-parameter sharing,形式较为多样,如两个任务参数不共享,但对不同任务的参数增加L2范数的限制;也有一些对每个任务分别生成各自的隐层,学习所有隐层的组合;这两种方式各有优劣,hard类的网络较soft不容易陷入过拟合,但如果任务差异较大,模型结果较差,但soft类网络通常参数较多,结构比较复杂,线上部署困难;

1、hard-parameter sharing models

hard-parameter sharing models为不同任务底层共享模型结构和参数,顶层分为几个不同的目标进行网络训练

这种结构本质上可以减少过拟合的风险,但是效果上可能受到任务差异和数据分布带来的影响

基本上,只要是能预测单模型的模型,都可以很简单的转化为hard-parameter sharing models的结构,只需要将共享层的最后一层与多个输出层拼接即可。

2 soft-parameter sharing models

soft-parameter sharing models不同于hard-parameter sharing model,每个任务有自己的参数,最后通过对不同任务的参数之间的差异加约束,表达相似性。比如可以使用L2, trace norm(迹范数)等。

网络结构如下:

3、相关技术

3.1 MMoE 谷歌2018


其中(a)是传统的硬共享参数模型,(b)是MoE模型,使用单个gate控制多个任务的参数,(c)是MMoE模型,在MoE的基础上,每个任务使用一个gate控制其权重。
名词解释:
a、expert:指对模型输入进行不同方式的变换处理的网络层,每个Expert表示一种网络(Expert也可以都一样)
b、gate:控制每个Expert权重的变量,对于每一个任务,不同Expert的权重可能是不一样的,因此使用gate来控制权重,类似于attention
MoE模型对于不同的任务的gate权重是一样的,其函数表达式如下:
y k = h k ∑ i = 1 n g i f i ( x ) y^k=h^k\sum_{i=1}^{n}g_if_i(x) yk=hki=1∑n​gi​fi​(x)
其中k表示第k个任务,n表示n个expert网络

MMoE是在MoE的基础上提出的方法,作者认为对于不同的任务,模型的权重选择是不同的,所以为每个任务分配一个gate模型。对于不同的任务,gate k的输出表示不同Expert被选择的概率,将多个Expert加权求和,得到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)=softmax(W_{g^k(x)}) gk(x)=softmax(Wgk(x)​)
类似于MoE,k表示第k个任务,每个任务对应一个gate。
MMoE的底层参数仍然是共享的,但是通过目标和网络参数直接的gate来学习,让每部分网络充分学习到对每个目标的贡献最大的一组参数结构,通过这种方式来保证,底层网络参数共享的时候,不会出现目标之间相互抵消的作用。

3.2 SNR 谷歌2019

论文地址为:.pdf

SNR 是MMOE作者对多任务学习的进一步工作,为了尽量共享不同任务之间的信息,提高精度,也节约线上服务代价而提出的一种算法。
其结构图如下

主要优化点:
把网络结构的跨任务参数共享抽象为网络子结构的路由问题;
引入0-1隐变量对路由作最优化;
通过L1正则化(可以得到参数量更小的网络),学到稀疏解,同等精度下节约11%的网络结构开销
SNR-Trans 可形式化为如下表达

hard concrete distribution 可形式化为

u是0,1之间的随机分布函数 β, γ, ζ 都是超参数
加L1正则化的损失函数可表示为

其中,q是s的累计概率分布函数

线上的serving的时候,z简化为

可参见:网友的中文翻译

二、损失函数优化

现有的损失函数优化方法大概有如下几类

1、Gradient Normalization——梯度标准化

Gradnorm: Gradient normalization for adaptive loss balancing in deep multitask networks》 ICML 2018

论文参考链接:/v80/chen18a/chen18a.pdf
希望不同的任务Loss量级接近;不同的任务以相近的速度来进行学习。
【评价】
优点:Gradient Normalization既考虑了loss的量级,又考虑了不同任务的训练速度。
缺点:每一步迭代都需要额外计算梯度,当W选择的参数多的时候,会影响训练速度;
此外,该loss依赖于参数的初始值;如果初始值变化很大的话,paper建议可以采用其他值代替,比如分类任务,可以用 l o g ( C ) log(C) log(C)来代替初始值,C是类别数量。
其梯度损失(Gradient Loss)函数定义为,各个任务实际的梯度范数与理想的梯度范数的差的绝对值和,可表示为:

其中 G i w ( t ) G_i^w(t) Giw​(t)是任务i梯度标准化的值,是任务i的权重 w i ( t ) w_i(t) wi​(t)与loss L的乘积对 L i ( t ) L_i(t) Li​(t)参数W求梯度的L2范数, G i w ( t ) G_i^w(t) Giw​(t)可以衡量某个任务loss的量级; G ‾ W ( t ) \overline G_W(t) GW​(t)是全局梯度标准化的值(即所有任务梯度标准化值的期望值),通过所有 G i w ( t ) G_i^w(t) Giw​(t)求均值实现。

计算完Gradient Loss后,通过以下函数对 w i ( t ) w_i(t) wi​(t) 进行更新(GL指Gradient Loss):
w i ( t + 1 ) = w i ( t ) + λ ∗ G r a d i e n t ( G L , w i ( t ) ) w_i(t+1)=w_i(t)+\lambda*Gradient(GL,w_i(t)) wi​(t+1)=wi​(t)+λ∗Gradient(GL,wi​(t))
α是超参数,α 越大,对训练速度的平衡限制越强

2 、Dynamic Weight Averaging ——动态加权平均

参见论文:《End-to-End Multi-Task Learning with Attention》,CVPR 2019
论文作者知乎:(Multi-task Learning and Beyond: 过去,现在与未来)
直观来看,loss缩小快的任务,则权重会变小;反之权重会变大。
w k ( t ) w_k(t) wk​(t) 代表了每个任务i的权重, L n ( t ) L_n(t) Ln​(t) α n t \alpha_{n}t αn​t分别代表任务k在t时刻的loss,和训练速度,n代表任务数,t足够大时,w趋近于1
【评价】
优点:只需要记录不同step的loss值,从而避免了为了获取不同任务的梯度,实现简单,运算较快。
缺点:没有考虑不同任务的loss的量级,需要额外的操作把各个任务的量级调整到差不多。

3、 Dynamic Task Prioritization ——动态任务优先级

参见论文:《Dynamic task prioritization for multitask learning》,ECCV 2018,Cites:53
DTP希望让更难学的任务具有更高的权重
其不同任务的权重为
F L ( p c ; γ 0 ) = − ( 1 − p c ) γ 0 l o g ( p c ) FL(p_c;\gamma_0)=-(1-p_c)^{\gamma_0} log(p_c) FL(pc​;γ0​)=−(1−pc​)γ0​log(pc​)

  • FL(pc ; γ0)代表不同任务的权重,
  • p c p_c pc​指的是KPI,即任务c的衡量指标,KPI要选择一个衡量任务的有意义的指标,比如分类模型中的准确率等, p c p_c pc​在[0,1]之间,KPI与任务的训练难度成反比,即KPI越高,任务越好学;
  • γ0允许为特定的任务i来调整权重;原文讲到:These focusing parameters γ0, …, γt are not the actual weights applied to the loss (i.e., not the mixing parameters) but rather adjust the rate at which easy examples and tasks are down-weighted.
    直观来看,KPI高的任务,学习起来比较简单,则权重会变小;反之,难学的任务权重会变大。
    【评价】
    优点:需要获取不同step的KPI值,从而避免了为了获取不同任务的梯度,运算较快
    缺点:DTP没有考虑不同任务的loss的量级,需要额外的操作把各个任务的量级调整到差不多;且需要经常计算KPI…

4、Uncertainty Weighting——不确定性加权
论文地址:《Multi-task learning using uncertainty to weigh losses for scene geometry and semantics》
Keras 实现参见:.ipynb

其他有价值的参考链接:/
让“简单”的任务有更高的权重
最终的loss为

其中, δ 1 \delta_1 δ1​和 δ 2 \delta2 δ2 是两个任务中,各自存在的不确定性。
因此, δ 2 \delta^2 δ2越大,任务的不确定性越大,则任务的权重越小,即噪声大且难学的任务权重会变小。

【评价】
优点:不确定性建模似乎可以适用于标签噪声更大的数据,而DTP可能在干净的标注数据里效果更好
缺点:参考:

5、帕累托最优(Pareto optimum)

参见论文:Multi-Task Learning as Multi-Objective Optimization (.04650)

gitlab地址为:

task-weighting 方法都基于一些特定的 heuristic,很难保证在 MTL optimisation 取得 optimum. 在该论文中,作者将 MTL 问题看做是多目标优化问题,其目标为取得 Pareto optimum.
论文的损失函数为

Pareto optimum 是指任何对其中一个任务的效果变好的情况,一定会对其他剩余所有任务的效果变差。作者利用了一个叫 multiple gradient descent algorithm (MGDA) 的方法来寻找这个 Pareto stationary point。大致方式是,在每次计算 task-specific gradients 后,其得到 common direction 来更新共享参数。这个 common direction 如果存在,则整个 optimisation 并未收敛到 Pareto optimum。这样的收敛方法保证了 共享参数不会出现 conflicting gradients 让每一个任务的 loss 收敛更加平滑。

三、MTL learning Tips

可参见:
部分tip罗列如下:

  • 1 紧凑分布均匀的label的辅助任务更好(from POS in NLP)[When is multitask learning effective? Multitask learning for semantic sequence prediction under varying data conditions]
  • 2 主任务训练曲线更快平稳,辅助任务平稳慢(还未平稳)[ Identifying beneficial task relations for multi-task learning in deep neural networks]
  • 3 不同任务尺度不一样,任务最优学习率可能不同
  • 4 某个任务的输出可以作为某些任务的输入
  • 5 某些任务的迭代周期不同,可能需要异步训练(后验信息;特征选择,特征衍生任务等)
  • 6 整体loss可能被某些任务主导,需要整个周期对参数进行动态调整(通过引入一些不确定性,每个任务学习一个噪声参数,统一所有损失 [Multitask learning using uncertainty to weigh losses for scene geometry and senantics]

7 某些估计作为特征(交替训练)

【参考链接】

1、

2、

3、(帕累托最优)

4、

5、新火试茶

更多推荐

多目标学习(Multi

本文发布于:2024-03-06 00:22:33,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1713861.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:目标   Multi

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!