Joint Learning和Multi-Task Learning都属于集成学习(Ensemble Learning)的范畴,但网上关于Joint Learning的相关资料较少,因此在这里对这两种学习方式进行简要介绍,并对其不同点进行区分。
Joint Learning
Joint Learning是指模型中存在多个子任务,而我们可以将这些子任务一起训练。
这么说起来有点抽象,可以举个简单的例子。比如在深度学习中,这个“深度”就可以理解为采用了多个模型进行Joint Learning,比如在许多NLP任务中,在进行模型训练前,我们会使用Word Embedding层(word to vector)对词向量进行编码,而Embedding层的参数,可以在和整个模型一起训练中得到,也可以单独对该层进行预训练,而后在该层参数确定后再拿来和模型剩余部分一起训练,这两种方法都属于Joint Learning的范畴,即Joint Learning中的子任务既可以和整个模型一起训练,也可以单独训练。而Joint Learning的含义则是将多个子模型集成为一个模型,完成最终的目标任务。
Multi-Task Learning
multi-task learning是多任务学习,它是指同一个模型要完成多个不同的任务,且这些不同的任务中,模型需要共享结构和权值。
多任务学习分成几种,分别是一对多,多对一和多对多。
举个不太恰当的机器翻译的例子,一对多是指模型输入一段英文,模型需要将其翻译成多种语言(同一个模型共享的参数)。而多对一则指输入多种语言,将其翻译成同一种语言。多对多则指输入多种语言,将其翻译成多种语言。
即multi-task learning是同时实现多种任务。
区别
joint learning是指模型中包含很多小模型,而多个小模型通过joint learning组成了完整的模型,各个小模型可以单独训练,也可以与其他模块一起训练。
multi-task learning是指同一个模型需要同时完成多个任务,且在完成多个不同的任务时其参数还是共享的,这也一定程度上提高了其泛化能力。