Multi-Task Learning as Multi-Objective Optimization 阅读笔记
通常multi-task learning的优化目标是多个任务的线性组合,但这只在这多个任务是不竞争的情况下是有效的。为了解决这个问题,文章将multi-task learning当做multi-objective optimization来处理,以寻找帕累托最优解(Pareto optimal solution)。作者使用gradient-based multi-objective optimization来优化multi-objective optimization问题。另外考虑到在参数量大和任务个数多的情况下直接优化复杂度很高,于是作者提出优化一个上界,并证明在现实情况中,优化这个上界可以得到帕累托最优解。
Multi-Task Learning(MTL)
假设有一组任务
Y
t
t
∈
[
T
]
{\mathcal Y^t }_{t\in[T]}
Ytt∈[T],以及独立同分布的数据
{
x
i
,
y
i
1
,
…
,
y
i
T
}
i
∈
[
N
]
\{x_i,y_i^1,\ldots,y_i^T\}_{i\in[N]}
{xi,yi1,…,yiT}i∈[N],其中
y
i
t
y_i^t
yit是第
i
i
i个数据点的第
t
t
t个任务的标签。考虑预测函数
f
t
(
x
;
θ
s
h
,
θ
t
)
:
X
→
Y
t
f^t(x;\theta^{sh},\theta^t):\mathcal X \to \mathcal Y^t
ft(x;θsh,θt):X→Yt,其中
θ
s
h
\theta^{sh}
θsh是不同任务共享的参数,
θ
t
\theta^{t}
θt是任务
t
t
t独立的参数。定义任务
t
t
t的损失函数
L
t
(
⋅
,
⋅
)
:
Y
t
×
Y
t
→
R
+
\mathcal L^t(\cdot, \cdot):\mathcal Y^t \times \mathcal Y^t\to \mathbb R^+
Lt(⋅,⋅):Yt×Yt→R+。
大多数MTL任务优化下面的经验损失,也就是多个任务的线性组合:
min
θ
s
h
,
θ
i
,
i
=
1
,
…
,
T
∑
t
=
1
T
c
t
L
t
^
(
θ
s
h
,
θ
t
)
(1)
\min_{\theta^{sh}, \theta^i,i=1,\ldots,T} \sum_{t=1}^T c^t \hat{\mathcal L^t}(\theta^{sh}, \theta^{t})\tag{1}
θsh,θi,i=1,…,Tmint=1∑TctLt^(θsh,θt)(1)
c
t
c^t
ct是任务的系数,
L
t
(
θ
s
h
,
θ
t
)
^
\hat{\mathcal L^t(\theta^{sh}, \theta^{t})}
Lt(θsh,θt)^是经验损失,定义为对样本求平均
1
N
∑
i
L
(
f
t
(
x
i
;
θ
s
h
,
θ
t
)
,
y
i
t
)
\frac{1}{N}\sum_i\mathcal L(f^t(x_i;\theta^{sh},\theta^t),y_i^t)
N1∑iL(ft(xi;θsh,θt),yit)。
Multi-Objective Optimization(MOO)
MTL可以表示成MOO,也就是优化一组相互竞争的目标。MOO的目标函数是
min
θ
s
h
,
θ
i
,
i
=
1
,
…
,
T
L
(
θ
s
h
,
θ
1
,
…
,
θ
T
)
=
min
θ
s
h
,
θ
i
,
i
=
1
,
…
,
T
(
L
t
^
(
θ
s
h
,
θ
1
)
,
…
,
L
t
^
(
θ
s
h
,
θ
T
)
)
⊤
\min_{\theta^{sh}, \theta^i,i=1,\ldots,T}L(\theta^{sh},\theta^1,\ldots,\theta^T)=\min_{\theta^{sh}, \theta^i,i=1,\ldots,T} (\hat{\mathcal L^t}(\theta^{sh}, \theta^{1}),\ldots,\hat{\mathcal L^t}(\theta^{sh}, \theta^{T}))^\top
θsh,θi,i=1,…,TminL(θsh,θ1,…,θT)=θsh,θi,i=1,…,Tmin(Lt^(θsh,θ1),…,Lt^(θsh,θT))⊤注意MOO和上面公式(1)不同,MOO的目标不是scalar,而是vector。MOO的目标是求帕累托最优解。MTL的帕累托最优定义如下:
Multiple Gradient Descent Algorithm
对于上面的问题,帕累托最优解存在的必要条件是:
满足上面条件的点称为Pareto stationary point。
考虑下面的问题
可以证明上面问题的解如果使得函数值为零,则
∑
t
=
1
T
α
t
∇
θ
s
h
L
t
^
(
θ
s
h
,
θ
t
)
\sum_{t=1}^T\alpha^t \nabla_{\theta^{sh}}\hat{\mathcal L^t}(\theta^{sh}, \theta^{t})
∑t=1Tαt∇θshLt^(θsh,θt)是Pareto stationary point,否则
∑
t
=
1
T
α
t
∇
θ
s
h
L
t
^
(
θ
s
h
,
θ
t
)
\sum_{t=1}^T\alpha^t \nabla_{\theta^{sh}}\hat{\mathcal L^t}(\theta^{sh}, \theta^{t})
∑t=1Tαt∇θshLt^(θsh,θt)就是提升所有任务的下降方向。
类似单目标优化(Single-Objective Optimization)的梯度下降法,MOO可以用Multiple Gradient Descent Algorithm(MGDA)求解。
优化算法
针对MTL任务的MOO形式的优化算法如下图algorithm2所示。先在任务独立的参数
θ
t
\theta^{t}
θt上做梯度下降,再用问题(3)的解在共享的参数
θ
s
h
\theta^{sh}
θsh上做梯度下降,对应1-5行。
现在的问题主要在公式(3)的求解上。公式(3)是带约束的优化问题,等同于在输入点构成的凸包(convex hull)上找一个最小范数的点。这个问题被广泛的研究过,他们假设输入点很多,点的维度很低。但在MTL的问题中,输入点是任务数,往往很少,点的维度是共享的参数数,数量很大。因此,作者提出了新的优化方法,利用Frank-Wolfe algorithm。
Frank-Wolfe algorithm是针对带约束的凸优化问题的一种一阶优化算法。类似梯度下降算法是一个迭代优化的算法。简单来说,在每次迭代中,先求寻找优化的方向,再寻找优化的步长。Wiki上Frank-Wolfe algorithm的算法流程如下:
公式(3)的优化目标可以写作
α
⊤
M
α
\mathbf \alpha^\top \mathbf M \mathbf \alpha
α⊤Mα,
M
\mathbf M
M是对称矩阵。
根据向量的求导公式 https://en.wikipedia.org/wiki/Matrix_calculus
∂
α
⊤
M
α
∂
α
=
2
α
⊤
M
\frac{\partial \mathbf \alpha^\top \mathbf M \mathbf \alpha}{\partial \mathbf \alpha} = 2\mathbf \alpha^\top \mathbf M
∂α∂α⊤Mα=2α⊤M
可以看到Algorithm2的第10行在寻找梯度最大的坐标轴方向。第11行在寻找优化的步长。
其中在每次迭代中寻找优化的步长的优化算法如下图algorithm1所示。
Figure1是对Algorithm1的可视化解释。寻找
θ
\theta
θ和
θ
‾
\overline \theta
θ组成的凸包中模最小的点。
针对Encoder-Decoder情况的进一步优化
注意到algorithm2需要对每个任务计算
∇
θ
s
h
L
^
(
θ
s
h
,
θ
t
)
\nabla_{\theta^{sh}} \hat{\mathcal L}(\theta^{sh},\theta^t)
∇θshL^(θsh,θt),也就需要对共享参数做T次反向传播。这导致一个前向传播后需要T次反向传播。作者提出算法优化上界,使得一次前向传播只需要一次反向传播。
这需要对模型的结构做一定的假设。假设模型有下面的结构:
也就是先经过共享参数的函数
g
g
g,再通过各个任务相关的函数
f
t
f^t
ft。定义
Z
=
(
z
1
,
…
,
z
N
)
Z=(z_1,\ldots,z_N)
Z=(z1,…,zN),其中
z
i
=
g
(
x
i
;
θ
s
h
)
z_i=g(x_i;\theta^{sh})
zi=g(xi;θsh)。使用链式法则可以得到
使用上界替换,并去掉常数项
∥
∂
Z
∂
θ
s
h
∥
\|\frac{\partial \mathbf Z}{\partial \mathbf \theta^{sh}}\|
∥∂θsh∂Z∥,公式(3)变为MGDA-UB (Multiple Gradient Descent Algorithm – Upper Bound)
MGDA-UB的基本形式和公式(3)是一样的,所以依然可以用algorithm2求解,只需要将对共享参数的导数,改为对中间表示
z
\mathbf z
z的导数。MGDA需要对每个任务计算
∇
θ
s
h
L
^
(
θ
s
h
,
θ
t
)
\nabla_{\theta^{sh}} \hat{\mathcal L}(\theta^{sh},\theta^t)
∇θshL^(θsh,θt),而MGDA-UB只需要计算
∇
z
L
^
(
θ
s
h
,
θ
t
)
\nabla_{\mathbf z} \hat{\mathcal L}(\theta^{sh},\theta^t)
∇zL^(θsh,θt),这部分虽然也要计算T次,但是本来在优化
θ
t
\theta^{t}
θt的过程中就要对每个任务分别计算,MGDA-UB使得对每个任务分别计算梯度到中间层就结束了。虽然algorithm2的第5行依然需要对共享参数的求导,但这可以通过先把各个任务的损失加权求和,再进行一次反传求导。
虽然MGDA-UB是原问题的近似,但作者证明,在温和的假设下,可以得到帕累托最优解:
思考
虽然作者将multi-task learning当做multi-objective optimization来处理,没有显示定义各个任务的权重 c t c^t ct,但在求解multi-objective optimization的过程中,实际上还是对每个任务有一个权重 α t \alpha^t αt,并在训练迭代的过程中动态调整了每个任务的权重。
一些论文中遇到的名词
inductive bias
https://en.wikipedia.org/wiki/Inductive_bias
对于训练样本,就是做拟合,但是未见样本怎么去预测呢?需要一定的假设条件。
对未见样本做预测时使用的假设条件。比如SVM中,最大化margin;KNN中,假设特征空间中近邻的样本有相同的类别。
Pareto optimal
https://en.wikipedia.org/wiki/Pareto_efficiency
帕累托最优所指的情况要求有多个优化目标,指的是不能在不损失其他目标的情况下优化一个目标。
Frank-Wolfe algorithm
https://en.wikipedia.org/wiki/Frank%E2%80%93Wolfe_algorithm
一阶迭代优化算法,优化带约束的凸函数。
收敛速度sublinear。