Multi-Task Deep Neural Networks

本博客主要参考了《Recurrent Neural Network for Text Classification with Multi-Task Learning》2016 IJCAI会议。
《Representation Learning Using Multi-Task Deep Neural Networks for Semantic Classification and Information Retrieval》2015 NAACL 会议。

为了更好的理解这个思想,我们首先从逻辑上来梳理一下深度学习框架下自然语言处理的一般步骤。首先为了使计算机能够处理人类的语言,我们要把计算机看不懂的自然语言里面的词语转化成其能够理解的向量的形式,然后使用cnn或者lstm等深度学习模型把这些词向量序列encode成句向量,接下来就根据特定的任务对这些句向量进行处理。如果是任务是文本分类,就可以直接在句向量之后加上一个softmax;如果任务是句子翻译,那么后面就需要跟上一个decoder来进行解码工作。总之,这些不同的任务中前部分逻辑是相同的(它们往往都是为了得到句子的向量化表示),即它们的网络结构基本是相同的,也就是说前部分的模型参数是可以共享的(即使面对完全不同的任务,面对完全不同的数据)。

好了,我们现在言归正传,开始好好看看上述提到的Multi-Task Deep Neural Networks模型。论文里也说了传统的single task model 总是 suffer from insufficient training data,这里的data指的是标注数据(确实标注数据缺少是搞机器学习、数据挖掘的硬伤,尤其对于深度学习这种对数据量要求比较高的方法来说)。如果我们有几批数据量比较少的数据,虽然它们分别针对不同的任务,但是如果我们可以把它们整合利用用起来,那么数据量少的问题就可以迎刃而解。到底如何把针对不同任务的数据集整合起来,下面我们就来看看这些论文里是如何联合训练的。

首先来看看2015年的NAACL会议上的论文《Representation Learning Using Multi-Task Deep Neural Networks for Semantic Classification and Information Retrieval》中提出的模型:
Multi-Task Deep Neural Networks_第1张图片
这个混合模型面临的是两种完全不同的task:Query Classificaiton 和 Web search。从图中可以清晰的看出它们共同share底层的网络结构,即句子的向量化表示,接下来根据特定的任务对向量化的句子进行变化,最后分别给出预测的结果。在训练这个联合模型的时候,也是每次随机挑选一个task中的某一批数据进行训练,利用反向传播算法一直更新到最底层。这样底层的share部分其实参考了两个部分的数据。在真正需要预测的时候,分别针对对应的任务走对应的结构即可(可以看出,不管哪个任务它们都要经过底层的share layer部分)。同时需要注意的是,这两个部分用的是同一套的词向量,不然的话联合训练将失去意义。由于在底层的由词向量变成句向量的时候,这篇论文考虑实际的情况(说白了还是懒,这时候一些成熟的深度学习框架早就提出来了,为什么还用早就淘汰的模型呢?)而使用了bag-of-word模型,这也为后人的改进埋下了伏笔。

这里的后人就是2016年的那篇IJCAI论文《Recurrent Neural Network for Text Classification with Multi-Task Learning》的作者们,他们就是使用了LSTM模型作为主体,下面是他们的网络结构:
Multi-Task Deep Neural Networks_第2张图片

其实说来真是惭愧,他们提出的这三个模型,后两个比较复杂而且论文里的描述并不是十分清楚,因此本人并没有看懂。但是从第一个模型中我大概还是get到了他们的基本思想。说白了,他们面临的是同一种任务(分类),只不过面对的是不同的数据集。LSTM这里的作用就是encode所有的词序列,然后得到表征句子的向量,只不过在encode词序列的时候可能考虑了不同任务之间的交互?(但是这样真的有意义吗?他在论文里也说了,训练b和c模型的时候选取的是pair对,但是这两个具有不同分类标准的句子真的可以联合考虑吗?因此我感觉a中同一时刻只处理同一句子,然后共享LSTM中的参数的方法还是比较靠谱的)。

其实这个多任务一起训练的思想还是很有借鉴意义的,毕竟标注数据越多对模型的提升帮助是越大的,它相当于变相扩展了训练数据集,我们一定要学到该思想中的精髓然后好好利用。

你可能感兴趣的:(深度学习)