如何融合多任务学习 (Multi-Task Learning ) 损失函数loss


多任务学习 (Multi-task learing) 关注的一个问题是 如何优化一个包含多个目标损失函数的模型,通常最直接的方法是通过一个线性函数组合这些损失函数:
L t o t a l = ∑ i w i L i L_{total} = \sum_iw_iL_i Ltotal=iwiLi
每个损失函数的权重 w i w_i wi是一个先验的超参数,而调这些参数代价是很大的,而且模型对这些权重参数的选择特别敏感,权重参数没有选择好,很有可能就会导致整个模型学的不好。所以需要一个更加方便的能够让模型去学习一个最优的权重参数,以下是目前在多任务学习中,权重参数的学习方案总结。

1 Uncertainty Weighting

uncertainty Weighting
Aleatoric uncertainty and epistemic uncertainty

1.1 基础概念

在贝叶斯模型里,通常有两种不确定性:

  • 认知不确定性 (Epistemic uncertainty):认知不确定性主要来自模型本身,若输入的数据是模型训练中并未见过的数据,则就会存在认知不确定性,这种不确定性可以通过增加训练数据来解释。
  • 偶然不确定性 (Aleatoric uncertainty) :偶然不确定性是不能通过数据来解释的,而这种不确定性主要来自其它的因素的干扰,比如数据本身就存在噪声等,而偶然不确定性 (Aleatoric uncertainty)又可以进一步分成两个子类:

1)Data-dependent 或者 异方差不确定性 (Heteroscedastic uncertainty):主要依赖于具体的输入数据,不同的输入具有不同的不确定性。
2)Task-dependent 或者 同方差不确定性 (Homoscedastic uncertainty):不依赖输入,所有的输入具有相同的不确定性。

1.2 方法

通过用task uncertainty来衡量不同task任务之间的相对置信度。论文推导了一个基于不确定性的高斯似然最大化的multi-task loss函数。假设 f W ( x ) f^W(x) fW(x)是模型的输出,其中 W W W是权重参数, x x x是输入值,我们可以定义如下高斯概率函数:
p ( y ∣ f W ( x ) ) = N ( f W ( x ) , σ 2 ) p(y|f^W(x)) = N(f^W(x), \sigma^2) p(yfW(x))=N(fW(x),σ2)
其中 σ \sigma σ是一个噪声值,在最大化似然函数中,通过最大化模型的log似然函数,所以可以重新定义如下:
l o g p ( y ∣ f W ( x ) ) ∝ − 1 2 σ 2 ∣ ∣ y − f W ( x ) ∣ ∣ 2 − l o g σ log p(y| f^W(x)) ∝ -\frac{1}{2\sigma^2}||y-f^W(x)||^2 - log \sigma logp(yfW(x))2σ21yfW(x)2logσ
其中 σ \sigma σ是模型观测的噪声参数,用来衡量输出的噪声大小程度。通过最大化log似然函数优化模型的参数权重 W W W和观测的噪声参数 σ \sigma σ
假设我们的模型输出 y 1 y_1 y1, y 2 y_2 y2,每一个都属于高斯分布,则:
p ( y 1 , y 2 ∣ f W ( x ) ) = p ( y 1 ∣ f W ( x ) ) . p ( y 2 ∣ f W ( x ) ) p(y_1, y2| f^W(x)) = p(y_1|f^W(x)) . p(y_2|f^W(x)) p(y1,y2fW(x))=p(y1fW(x)).p(y2fW(x))
= N ( y 1 ; f W ( x ) , σ 1 2 ) . N ( y 2 ; f W ( x ) , σ 2 2 ) = N(y_1;f^W(x), \sigma_1^2) . N(y_2; f^W(x), \sigma_2^2) =N(y1;fW(x),σ12).N(y2;fW(x),σ22)
最小化损失函数如下:
L ( W , σ 1 , σ 2 ) = − l o g p ( y 1 , y 2 ∣ f W ( x ) ) L(W, \sigma_1, \sigma_2) = -log p(y_1, y_2 | f^W(x)) L(W,σ1,σ2)=logp(y1,y2fW(x))
∝ 1 2 σ 1 2 ∣ ∣ y 1 − f W ( x ) ∣ ∣ 2 + 1 2 σ 2 2 ∣ ∣ y 2 − f W ( x ) ∣ ∣ 2 + l o g σ 1 σ 2 ∝ \frac{1}{2\sigma_1^2}||y_1-f^W(x)||^2 + \frac{1}{2\sigma_2^2}||y_2-f^W(x)||^2 + log \sigma_1\sigma_2 2σ121y1fW(x)2+2σ221y2fW(x)2+logσ1σ2
= 1 2 σ 1 2 L 1 ( W ) + 1 2 σ 1 2 L 1 ( W ) + l o g σ 1 + l o g σ 2 = \frac{1}{2\sigma_1^2}L_1(W) + \frac{1}{2\sigma_1^2}L_1(W) + log \sigma_1 + log \sigma_2 =2σ121L1(W)+2σ121L1(W)+logσ1+logσ2

其中 σ 1 \sigma_1 σ1 σ 2 \sigma_2 σ2是噪声参数,分别控制着 L 1 ( W ) L_1(W) L1(W) L 2 ( W ) L_2(W) L2(W)损失loss的相对权重,从直观上理解上述公式,若噪声参数 σ 1 \sigma_1 σ1越大,则对应的损失函数 L 1 ( W ) L_1(W) L1(W)的权重就越小,但由于模型的会尽可能的让损失函数为0,则会使得 σ \sigma σ变得很大,完全忽视了数据的影响,因此对噪声项增加了正则化项 log ⁡ σ \log \sigma logσ

2 GradNorm

2.1 原理

GradNorm,通过梯度归一化方法,动态的调整每个任务的梯度值,防止模型偏向某个梯度较大的任务,导致模型学习不充分。通过使用梯度量化自动均衡算法,提升了multi-task多任务学习模型的收敛速度以及整体性能,而且算法只有一个超参数需要调整,相比其他的方法,减少了所需调整的超参数,并且取得了较好的试验效果。

2.2 方法

在multi-task的loss损失函数中,通常是对多个单任务的loss L i L_i Li进行线性相加:
L = ∑ i w i L i L = \sum_iw_iL_i L=iwiLi
在论文中,权重 w i w_i wi是自适应学习出来的,对于每一个训练step, w i = w i ( t ) w_i=w_i(t) wi=wi(t)。首先了解下论文中的几个基本符号代表的含义:

  • W W W 表示的模型网络的参数权重
  • G W ( i ) ( t ) = ∣ ∣ ∇ W w i ( t ) L i ( t ) ∣ ∣ 2 G_W^{(i)}(t)=|| \nabla _W w_i(t)L_i(t)||_2 GW(i)(t)=Wwi(t)Li(t)2表示的是单个任务loss w i ( t ) L i ( t ) w_i(t)L_i(t) wi(t)Li(t)对权重 W W W的梯度的 L 2 L_2 L2范数
  • G ‾ W ( t ) = E t a s k [ G W ( i ) ( t ) ] \overline{G}_W(t) = E_{task}[G_W^{(i)}(t)] GW(t)=Etask[GW(i)(t)]表示的所有任务在训练时间t的平均梯度归一化值
  • L ~ i ( t ) = L i ( t ) / L i ( 0 ) \tilde{L}_i(t) = L_i(t)/L_i(0) L~i(t)=Li(t)/Li(0)表示的是任务 i i i在时间 t t t的loss比例。 L ~ i ( t ) \tilde{L}_i(t) L~i(t)用来测量的是任务 i i i的训练速率的倒比例,若 L ~ i ( t ) \tilde{L}_i(t) L~i(t)的值越小对应的是较快的学习速度
  • r i ( t ) = L ~ i ( t ) / E t a s k [ L ~ i ( t ) ] r_i(t)=\tilde{L}_i(t)/E_{task}[\tilde{L}_i(t)] ri(t)=L~i(t)/Etask[L~i(t)]表示的是任务 i i i的相对倒学习速率

因此希望每个任务的梯度接近如下形式:
G W ( i ) ( t ) → G ‾ W ( t ) × [ r i ( t ) ] α G_W^{(i)}(t) \to \overline{G}_W(t) \times [r_i(t)]^\alpha GW(i)(t)GW(t)×[ri(t)]α
则每个权重计算形式如下:
w i ( t ) = G ‾ W ( t ) × [ r i ( t ) ] α G W ( i ) ( t ) w_i(t) = \frac{\overline {G}_W(t) \times [r_i(t)]^\alpha}{G_W^{(i)}(t)} wi(t)=GW(i)(t)GW(t)×[ri(t)]α
其中 α \alpha α是一个超参数,在tasks差距很大时, α \alpha α可以设置更多点,有一个更强的训练速率起到平衡的作用。上述公式给出了每个任务 i i i的梯度归一化值,通过更新loss权重 w i ( t ) w_i(t) wi(t),使得每个任务的梯度值朝着梯度归一化值移动。最终定义的损失函数为 L 1 L_1 L1损失函数,衡量的是每个任务的实际梯度和目标归一化梯度值之间的差距,所以对于每个任务,损失函数定义如下:
L g r a d ( t ; w i ( t ) ) = ∑ i ∣ G W ( i ) ( t ) − G ‾ W ( t ) × [ r i ( t ) ] α ∣ 1 L_{grad}(t;w_i(t)) = \sum_i|G_W^{(i)}(t) - \overline{G}_W(t) \times [r_i(t)]^\alpha |_1 Lgrad(t;wi(t))=iGW(i)(t)GW(t)×[ri(t)]α1
在对 w i ( t ) w_i(t) wi(t)求梯度过程 ∇ w i L g r a d \nabla_{w_i}L_{grad} wiLgrad,让目标梯度归一化值 G ‾ W ( t ) × [ r i ( t ) ] α \overline{G}_W(t) \times [r_i(t)]^\alpha GW(t)×[ri(t)]α作为一个固定的常量值,防止 w i ( t ) w_i(t) wi(t)不符合逻辑的直接变为0, L g r a d L_{grad} Lgrad对于 w i w_i wi是可导的,计算的梯度 ∇ w i L g r a d \nabla_{w_i}L_{grad} wiLgrad可以用标准的梯度下降法更新权重 w i w_i wi。为了将梯度归一化与全局的学习率解耦,每次我们会重新归一化权重 w i ( t ) w_i(t) wi(t),使得 ∑ i w i ( t ) = T \sum_iw_i(t)=T iwi(t)=T
最终我们的参数 w i ( t ) w_i(t) wi(t) W W W更新公式如下:
w i ( t ) → w i ( t + 1 )    u s i n g ∇ w i L g r a d w_i(t) \to w_i(t+1) \text{ } \text{ } using \nabla_{w_i}L_{grad} wi(t)wi(t+1)  usingwiLgrad
W ( t ) → W ( t + 1 )    u s i n g ∇ W L ( t ) W(t) \to W(t+1) \text{ } \text{ } using \nabla_WL(t) W(t)W(t+1)  usingWL(t)
r e n o r m a l i z e    w i ( t + 1 ) → ∑ i w i ( t + 1 ) = T renormalize \text{ } \text{ } w_i(t+1) \to \sum_iw_i(t+1) = T renormalize  wi(t+1)iwi(t+1)=T

3 Multi-Objective Optimisation

3.1 原理

Multi-Objective Optimisation将多任务学习multi-task learning当做multi-objective optimization多个目标优化问题。在MTL问题中,通常是对输入空间 X X X以及对应的一系列任务空间 Y t t ∈ [ T ] {Y^t}_{t \in [T]} Ytt[T],数据形式为: { x i , y i 1 , y i 2 , . . . , y i T } i ∈ [ N ] \{x_i, y_i^1, y_i^2, ...,y_i^T\}_{i \in [N]} { xi,yi1,yi2,...,yiT}i[N],其中 T T T是任务的个数, N N N表示的是数据量, y i t y_i^t yit是第 i i i个数据在第 t t t个任务的label。考虑每个任务的预测函数为: f t ( x ; θ s h , θ t ) : X → Y t f^t(x;\theta^{sh}, \theta^t): X \to Y^t ft(x;θsh,θt):XYt,其中参数 θ s h \theta^{sh} θsh是所有任务的共享参数,参数 θ t \theta^t θt是每个任务单独的参数。通常一般的MTL任务优化函数如下:
min  ⁡ θ s h , θ 1 , . . . , θ T ∑ t = 1 T c t L ^ t ( θ s h , θ t ) \underset {\theta^{sh}, \theta^1, ..., \theta^T} {\operatorname {min\,}} \sum_{t=1}^T c^t \hat{L}^t(\theta^{sh}, \theta^t) θsh,θ1,...,θTmint=1TctL^t(θsh,θt)
其中 c t c^t ct表示的是每个任务的权重, L ^ t ( θ s h , θ t ) \hat{L}^t(\theta^{sh}, \theta^t) L^t(θsh,θt)是任务 t t t的损失函数,定义为 L ^ t ( θ s h , θ t ) = 1 N ∑ i L ( f t ( x i ; θ s h , θ t ) , y i t ) \hat{L}^t(\theta^{sh}, \theta^t)=\frac{1}{N}\sum_iL(f^t(x_i; \theta^{sh}, \theta^t), y_i^t) L^t(θsh,θt)=N1iL(ft(xi;θsh,θt),yit)

3.2 方法

论文中,作者将MTL优化问题看成multi-objective优化问题,优化的是一组存在竞争的目标
min  ⁡ θ s h , θ 1 , . . . , θ T L ( θ s h , θ 1 , . . . , θ T ) \underset {\theta^{sh}, \theta^1, ..., \theta^T} {\operatorname {min\,}} L(\theta^{sh}, \theta^1, ..., \theta^T) θsh,θ1,...,θTminL(θsh,θ1,...,θT)
= min  ⁡ ( L ^ 1 ( θ s h , θ 1 ) , . . . , L ^ T ( θ s h , θ T ) ) T = \operatorname {min\,} (\hat{L}^1(\theta^{sh}, \theta^1), ..., \hat{L}^T(\theta^{sh}, \theta^{T}))^T =min(L^1(θsh,θ1),...,L^T(θsh,θT))T
注意的是这里和MTL不同的是,最后的形式是一个vector,而不是一个scalar。而求解的目标是帕累托最优( Pareto optimality)。MLT的帕累托最优定义如下:
对于不同的 a t a^t at取值,我们可以得到不同的参数 θ \theta θ,若对于 θ \theta θ在每个任务中 L ^ t ( θ s h , θ t ) ≤ L ^ t ( θ ‾ s h , θ ‾ t ) \hat{L}^t(\theta^{sh}, \theta^t) \leq \hat{L}^t(\overline{\theta}^{sh}, \overline{\theta}^t) L^t(θsh,θt)L^t(θsh,θt),则称 θ \theta θ要比 θ ‾ \overline {\theta} θ好 (dominiate),若参数 θ ∗ \theta^* θ比任何一个参数在每个任务中的loss都要小,则称 θ ∗ \theta^* θ为帕累托最优。
而multi-objective 优化问题可以用梯度下降法求解,其中一个方法是Multiple Gradient Descent Algorithm (MGDA),MGDA利用KKT条件,对于共享参数 θ s h \theta^{sh} θsh和独立参数 θ t \theta^t θt,KKT条件是:

  • 存在 a 1 , . . . , a t ≥ 0 a^1,...,a^t \geq 0 a1,...,at0,使得 ∑ t = 1 T a t = 1 \sum_{t=1}^T a^t =1 t=1Tat=1 ∑ t = 1 T a t ∇ θ s h L ^ t ( θ s h , θ t ) = 0 \sum_{t=1}^T a^t \nabla_{\theta^{sh}}\hat{L}^t(\theta^{sh}, \theta^t)=0 t=1TatθshL^t(θsh,θt)=0
  • 对于所有任务 t t t ∇ θ t L ^ t ( θ s h , θ t ) = 0 \nabla_{\theta^t}\hat{L}^t(\theta^{sh}, \theta^t)=0 θtL^t(θsh,θt)=0
    根据 MGDA for multiobjective optimization,证明了下面式子的解要么是帕累托最优的必要条件,要么是一个能优化所有任务的好的优化方向:
    min ⁡ a 1 , . . . , a t { ∣ ∣ ∑ t = 1 T a t ∇ θ s h L ^ t ( θ s h , θ t ) ∣ ∣ 2 2 ∣ ∑ t = 1 T a t = 1 , a t ≥ 0 ∀ a } \underset{a^1,...,a^t} {\operatorname {min}}\{ {\begin{vmatrix} \begin{vmatrix}\sum_{t=1}^T a^t \nabla_{\theta^{sh}} \hat{L}^t(\theta^{sh}, \theta^t) \end{vmatrix} \end{vmatrix}_2^2 | \sum_{t=1}^T a^t=1, a^t \geq 0 \forall a} \} a1,...,atmin{ t=1TatθshL^t(θsh,θt)22t=1Tat=1,at0a}

所以MTL的问题可以变为在任务相关的参数 θ T \theta^T θT上做梯度下降,再用上述的解在共享的参数上做梯度下降。

4 Geometric Loss

4.1 原理

geometric loss 将MTL任务中的多个loss用几何方式组合,相比直接对多个loss求平均的组合方式,能够更好的应对不同的task之间的收敛速度不一样的问题。

4.2 方法

基于几何方式组合形式的最终loss方式组合如下:
L T o t a l = ∏ i = 1 n L i n L_{Total} = \prod_{i=1}^n \sqrt[n]{L_i} LTotal=i=1nnLi
其中 n n n表示的是总任务个数, L i L_i Li表示的是第 i i i个任务产生的loss。这样的组合方式,比起对所有任务的loss相加求平均,可以缓解任务中loss差距较大而导致某些任务学习受到影响,如果我们提前已知某些任务更重要,那么可以对重要的task的loss加重,形式如下:
L T o t a l = ∏ i = 1 n L i n × ∏ j = 1 m L j m L_{Total} = \prod_{i=1}^n \sqrt[n]{L_i} \times \prod_{j=1}^m \sqrt[m]{L_j} LTotal=i=1nnLi ×j=1mmLj
其中 m < n m<n m<n,且这 m m m个任务的重要程度是按照从高到低依次排序的。在实际应用中,用log函数,将连乘转换成加法形式:
L T o t a l = log ⁡ ( ∏ i = 1 n L i n × ∏ j = 1 m L j m ) L_{Total} = \log( \prod_{i=1}^n \sqrt[n]{L_i} \times \prod_{j=1}^m \sqrt[m]{L_j}) LTotal=log(i=1nnLi ×j=1mmLj )
= 1 n ∑ i n log ⁡ L i + 1 m ∑ i m log ⁡ L i = \frac{1}{n} \sum_i^n \log{L_i} + \frac{1}{m} \sum_i^m \log{L_i} =n1inlogLi+m1imlogLi

5 HydaLearn

5.1 原理

HydaLearn (Highly Dynamic Learning)主要针对MTL过程中的两个存在的问题:

  • 在学习过程中,辅助task有可能逐渐漂移,降低main task的效果
  • 对于基于mini-batch的这样梯度迭代,最优的task weights应该取决于每次的mini-batch的样本组成

所以针对上述两个问题,论文提出了HydaLearn,将main task的收益与每个任务的梯度关联起来,在每次的mini-batch梯度更新上,能够自适应的调整每个task的weight。

5.2 方法

T m T_m Tm表示main task, T a T_a Ta表示辅助auxiliary task, L m L_m Lm L a L_a La分别表示主任务和辅助任务的loss,最后这两部分的loss组合形式如下:
L ( θ s , t , θ m , t , θ a , t ) = w m , t L m ( θ s , t , θ m , t ) + w a , t L a ( θ s , t , θ a , t ) L(\theta_{s,t}, \theta_{m,t}, \theta_{a,t}) = w_{m,t}L_m(\theta_{s,t}, \theta_{m,t}) + w_{a,t} L_a(\theta_{s,t}, \theta_{a,t}) L(θs,t,θm,t,θa,t)=wm,tLm(θs,t,θm,t)+wa,tLa(θs,t,θa,t)
其中 w m , t w_{m,t} wm,t, w a , t w_{a,t} wa,t分别表示主任务和辅助任务的权重分值, θ s , t , θ m , t , θ a , t \theta_{s,t}, \theta_{m,t}, \theta_{a,t} θs,t,θm,t,θa,t分别表示模型的共享参数和task-specific层的参数。那么其中 w m , t , w a , t w_{m,t}, w_{a,t} wm,t,wa,t怎么设置呢?计算形式如下:
w m , t w a , t ≈ δ m , m , t δ m , a , t \frac{w_{m,t}}{w_{a,t}} \approx \frac{δ_{m,m,t}}{δ_{m,a,t}} wa,twm,tδm,a,tδm,m,t
其中 δ m , m , t , δ m , a , t δ_{m,m,t}, δ_{m,a,t} δm,m,t,δm,a,t分别表示的是main task和auxiliary task在训练step t t t步中获得的增益gain值,而这个增益值,我们可以通过梯度更新过程中,前后的loss差异值计算求得,得到这个比值后,我们就可以得到权重 w m , t , w a , t w_{m,t}, w_{a,t} wm,t,wa,t的比值,最后我们可以设定一个限制,使得 w m , t + w a , t = w w_{m,t}+w_{a,t}=w wm,t+wa,t=w,这样,我们每次根据任务的loss gain的比值来得到权重的比值,然后分别得到主任务和辅助任务的权重,再得到组合后的loss。

6 Coefficient of variations Weighting (CoV-Weighting)

6.1 原理

coefficient of variations 动态计算每个task的权重,在训练过程中,通过loss的均值和标准差之间的变化情况来计算每个task的权重。认为当一个task的损失loss的方差趋于零时,该task的优化目标就可以了。我们来看下标准的MTL的loss组合方式如下:
L t o t a l = ∑ i a i L i L_{total} = \sum_i a_i L_i Ltotal=iaiLi

6.2 方法

首先定义coefficient变异系数,也叫相对标准偏差,公式如下:
c L = σ L μ L c_L= \frac{\sigma_L}{\mu_L} cL=μLσL
其中 σ L , μ L \sigma_L, \mu_L σL,μL分别表示loss L L L的标准差和均值。而这个值是与loss的大小无关的,我们知道不同的loss在大小上是有差异的。变异系数将loss的大小和loss的权重解耦,因此当一个损失loss复杂多变的时候,小幅度的值也有可能有较大的影响。而一个更大的loss值,若在训练过程中loss已经平稳了,会分配一个更小的权重
论文中提出了一种基于loss_ratio变化的测量方法,而不是loss本身,变化的ratio计算形式如下:
r t = L t μ L t − 1 r_t = \frac{L_t}{\mu L_{t-1}} rt=μLt1Lt
其中 L t L_t Lt表示的是在step t步中观测到的loss, μ L t − 1 \mu L_{t-1} μLt1表示的是累积到 t − 1 t-1 t1步中的loss平均值。最后第 i i i个任务在时间 t t t步中的权重 a i , t a_{i,t} ai,t计算表达式如下:
a i , t = 1 z t c r i t = 1 z t σ r i t μ r i t a_{i,t} = \frac{1}{z_t}c_{r_{it}} =\frac{1}{z_t}\frac{\sigma_{r_{it}}}{\mu_{r_{it}}} ai,t=zt1crit=zt1μritσrit
其中 z t z_t zt是一个归一化因子: z t = ∑ i c r i t z_t=\sum_i c_{r_{it}} zt=icrit,这样我们就可以保证所有的任务权重之后 ∑ i a i t = 1 \sum_ia_{it}=1 iait=1

7 Scaled Loss Approximate Weighting

7.1 原理

SLAW: Scaled Loss Approximate Weighting for Efficient Multi-Task Learning 主要通过选择每个任务的权重,使得各任务的梯度范数相等,来平衡训练过程中的不同task产生的影响。

7.2 方法

每个任务loss的加权梯度范数相等定义如下:
w i ∣ ∣ g i ∣ ∣ = w j ∣ ∣ g j ∣ ∣   ∀ i , j w_i||g_i|| = w_j||g_j|| \text{ }\forall i,j wigi=wjgj i,j
如果我们将 w i w_i wi作为未知变量, ∣ ∣ g i ∣ ∣ ||g_i|| gi作为已知变量,则对于 n n n个task,我们将有n-1个这样的等式,对于 w i w_i wi我们将会有无穷个解,其中一种解决方案如下:
w i = 1 ∣ ∣ g i ∣ ∣ w_i=\frac{1}{||g_i||} wi=gi1
为了与全局的学习率进行解耦,我们强行将权重 w i w_i wi之和限制到一个固定值:
∑ i = 1 n w i = n \sum_{i=1}^nw_i = n i=1nwi=n
所以我们可以得到每个权重的 w i w_i wi的权重计算如下:
w i = n ∣ ∣ g i ∣ ∣ / ∑ j = 1 n 1 ∣ ∣ g j ∣ ∣ w_i = \frac{n}{||g_i||} /\sum_{j=1}^n \frac{1}{||g_j||} wi=gin/j=1ngj1
从上面的式子可以看到,需要额外的每次计算梯度 g i g_i gi,为了避免这种计算代价,论文给出了一种近似解,其中 s i s_i si替代 g i g_i gi,而 s i s_i si具体计算公式如下:
a i ← β a i + ( 1 − β ) L i 2 a_i ← \beta a_i +(1-\beta)L_i^2 aiβai+(1β)Li2
b i ← β b i + ( 1 − β ) L i b_i ← \beta b_i +(1-\beta)L_i biβbi+(1β)Li
s i ← a i − b i 2 s_i ← \sqrt{a_i -b_i^2} siaibi2
其中 β \beta β是移动平均线的一个参数,其中 s i s_i si评估的是 L i L_i Li的标准差,根据论文提供的理论:
在这里插入图片描述
我们可以得到%= s i s_i si ∣ ∣ g i ∣ ∣ ||g_i|| gi的近似估计值,所以,最终权重 w i w_i wi的计算公式如下:
w i = n s i / ∑ j = 1 n 1 s j w_i = \frac{n}{s_i} / \sum_{j=1}^n \frac{1}{s_j} wi=sin/j=1nsj1

8 总结

如下是每种方案,任务 i i i对应的权重 w i w_i wi计算方式:

Method 权重 w i w_i wi计算
Uncertainty Weighting 1 / σ i 2 + l o g σ i L i 1/{\sigma_i^2}+\frac{log_{\sigma_i}}{L_i} 1/σi2+Lilogσi
GradNorm L i ( t ) / L i ( 0 ) g i ( t ) \frac{L_i(t)/L_i(0)}{g_i(t)} gi(t)Li(t)/Li(0) (简写公式)
Multi-objective ∑ i w i ∇ θ s L i = 0 \sum_i w_i ∇_{\theta_s}L_i=0 iwiθsLi=0
Geometric Loss n L i / log ⁡ L i {nL_i}/{\log{L_i}} nLi/logLi
HydaLearn w i w j = δ i δ j \frac{w_i}{w_j} = \frac{δ_{i}}{δ_{j}} wjwi=δjδi
CoV-Weighting σ r i / μ r i \sigma_{r_i}/{\mu_{r_i}} σri/μri
Scaled Loss Approximate Weighting L i ( t ) / L i ( 0 ) s i ( t ) \frac{L_i(t)/L_i(0)}{s_i(t)} si(t)Li(t)/Li(0) (简写公式)

猜你喜欢

转载自blog.csdn.net/BGoodHabit/article/details/113244265