最近导师让我做并行多任务学习方面的工作,我开始着手阅读这方面的论文并归纳一个大致的速览。首先,我们看看什么是多任务学习,然后我们主要聚焦于基于正则化的多任务学习方法(这也是目前学术界主要的并行对象),并在此基础上讨论如何分布式并行。
1、多任务学习介绍
类似于迁移学习,多任务学习也运用了知识迁移的思想,即在不同任务间泛化知识。但二者的区别在于:
- 迁移学习可能有多个源域;而多任务学习没有源域而只有多个目标域。
- 迁移学习注重提升目标任务性能,并不关心源任务的性能(知识由源任务\(\rightarrow\)目标任务;而多任务学习旨在提高所有任务的性能(知识在所有任务间相互传递)。
下图从知识迁移流的角度来说明迁移学习和多任务学习之间的区别所示:
不严格地说,多任务学习的目标为利用多个彼此相关的学习任务中的有用信息来共同对这些任务进行学习(一般会将各任务的损失函数加起来一起优化)。
形式化地,多任务学习的定义如下:给定\(T\)个学习任务\(\{\mathcal{T}_t\}_{t=1}^{m}\),其中所有任务或者其中某些任务是相关的但不相同。多任务学习旨在利用这\(T\)个任务中的知识来提高所有\(\mathcal{T}_t\)的学习性能。
多任务学习按照学习任务性质不同可分为多任务监督学习、多任务无监督学习、多任务主动学习、多任务强化学习、多任务在线学习等。下面我们仅介绍最常见的多任务监督学习。
多任务监督学习每个任务都是监督学习,目的是学习样本到标签的的映射。 形式化地说,给定\(t\)个监督学习的任务\(\{\mathcal{T}_t\}_{t=1}^T\),每个任务各有一个训练集\(\mathcal{D}_t = {\{(\bm{x}_{ti}, y_{ti})}_{i=1}^{m_t}\}\),其中\(\bm{x_{ti}} \in \mathbb{R}^{d}\),\(y_{ti} \in \mathbb{R}\)。多任务学习的目标是根据\(T\)个任务的训练集学习\(T\)个函数\(\{f_t(\bm{x})\}_{t=1}^{T}\),使得\(f_t(\bm{x}_{ti})\)可以很好的近似\(y_{ti}\)。学习完成后,\(f_t(\cdot)\)将用于对第\(t\)个任务中的新数据样本的标签进行预测。
接下来我们描述多任务学习的目标函数,若第\(t\)个任务的经验风险形式为\(\mathbb{E}_{(\bm{x_{ti}, y_{ti})\sim \mathcal{D}_t}}[L(y_{ti}, f(\bm{x}_{ti};\bm{w}_t))]\)(设\(\bm{w}_t\)为第\(t\)个模型的参数),则一般多任务学习的目标函数形式为