1 代理损失函数——一种并行化技巧
我们在本系列第一篇文章《并行多任务学习论文阅读(一)多任务学习速览》(链接:https://www.cnblogs.com/lonelyprince7/p/15481054.html)中提到,实现多任务学习的一种典型的方法为增加一个正则项[1][2][3]:
目标函数中的\(f(\mathbf{W})\)很容易并行化,但是一般\(g(\mathbf{W})\)就很难并行化了,那么如何解决这个问题呢?答案是运用一个可以分解的代理损失函数来替换掉原始的目标函数。我们接下来就以论文《Parallel Multi-Task Learning》[4](zhang 2015c等人)为例来介绍该思想。该论文MTLR模型[5](zhang 2015a)的基础上利用FISTA算法设计代理损失函数,该代理函数可以依据学习任务进行分解,从而并行计算。
2 基于正则化的多任务学习(MTLR)算法回顾
给定\(T\)个任务\({\{\mathcal{T}_i\}}_{i=1}^T\),每个任务都有一个训练集\(\mathcal{D}_t = {\{(\bm{x}_{i}^t, y_{i}^t)}_{i=1}^{m_t}\}\)。我们现在考虑以下形式的目标函数:
这里的\(\phi(\cdot)\)是一个和核函数\(k(\cdot, \cdot)\)相关的特征映射,这里\(\phi(\bm{x}_1)^T\phi(\bm{x}_2)=k(\bm{x}_1, \bm{x}_2)\)。\(L(\cdot, \cdot)\)是损失函数(比如对于分类问题的\(\text{hinge loss}\) 和对于回归问题的 \(\epsilon \text{-insentive loss}\)。式\((2)\)的第一项是所有任务的经验损失函数,第二项基于\(\mathbf{W}和\Omega\)来建模任务间的关系。根据论文[5],\(\Omega\)是一个正定(Positive definite, PD)矩阵,它用来描述任务两两之间关系的精度矩阵(协方差矩阵\(\Sigma\)的逆)。如果损失函数是凸的且\(\Omega\)正定,那么目标函数\((2)\)关于\(\mathbf{W}和\bm{b}\)是联合凸(jointly convex)的。为了体现目标函数\((2)\)和单任务核方法的关系,我们这里只考虑\(\Omega\)是对角矩阵的情况。在此情况下,任务两两之间没有关系,问题\((2)\)也退化为了多个单任务模型(每个模型对应一个任务)。因此,问题\((2)\)可以被视为单任务正则化模型的多任务扩展。在问题\((2)\)中,\(\frac{\lambda}{2}\text{tr}(\textbf{W}\Omega\mathbf{W}^T)\)不影响我们的并行算法设计,这是非常好的。而问题\((2)\)总是能够加速问题的学习,当使用特定的优化程序如论文[5]和论文[6]一样,根据过去的研究这些方法由很快的收敛率,不管正则项是什么。
在问题\((2)\)中有许多损失函数可供使用,比如\(\text{hinge loss}\)、\(\epsilon-\text{insensitive loss}\)和\(\text{square loss}\),下面我们主要就采用这三种损失函数,后面我们会分别给出问题\((2)\)关于这三个损失函数