今天这个专题源于我在做分布式多任务学习实验时在选取数据集的时候的疑惑,以下我们讨论多任务学习中(尤其是在分布式的环境下)如何选择数据集和定义任务。

多任务学习最初的定义是:"多任务学习是一种归纳迁移机制,基本目标是提高泛化性能。多任务学习通过相关任务训练信号中的领域特定信息来提高泛化能力,利用共享表示采用并行训练的方法学习多个任务"。然而其具体实现手段却有许多(如基于神经网络的和不基于神经网络的,这也是容易让人糊涂的地方),但是不管如何,其关键点——共享表示是核心。

1.经典(非神经网络的)多任务学习

经典(非神经网络的)多任务学习我们已经在博文《分布式多任务学习论文阅读(一)多任务学习速览》(链接:https://www.cnblogs.com/lonelyprince7/p/15481054.html)中详细讨论,此处不再赘述。在这种模式中给定\(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}\)。在这种模式下,每个任务的模型假设(比如都是线性函数)都常常是相同,导致每个任务的模型(权重)不同的原因归根结底在于每个任务的数据集不同(每个任务的损失函数默认相同,但其实可同可不同)。 此模式优化的目标函数可以写作:

\[\begin{aligned} \underset{\textbf{W}}{\min}& \sum_{t=1}^{T}\mathbb{E}_{(\bm{x_{ti}, y_{ti})\sim \mathcal{D}_t}}[L(y_{ti}, f(\bm{x}_{ti}; \bm{w}_t))]+ \lambda g(\textbf{W})\\ =& \sum_{t=1}^{T} [\frac{1}{m_t}\sum_{i=1}^{m_t}L(y_{ti}, f(\bm{x}_{ti}; \bm{w}_t))]+\lambda g(\textbf{W})\\\end{aligned}\tag{2}\]
11-30 14:28