论文来源:ACL2017 链接:paper
multi-task learning,学习shared layers to extract the common and task-invariant features.通用和任务不变的特征
然而,现有的方法,提取共享特征往往会被特定任务的特征或者其他任务带来的噪音污染。
在本文,提出了一个adversarial对抗的 multi-task learning framework,缓解共享和私有潜在特征空间相互干扰。
目前的方法都将不同任务的特征分割到private and shared spaces,
重叠部分是shared space,蓝色的代表task-specific特征,红色代表可以共享的特征
这种框架最大的缺点是:shared features可能包含一些不必要的与任务相关的特征,一些共享的特征也会混杂在private space中,有特征冗余的问题,feature redundancy
问题:"The infantile cart is simple and easy to use"和“This kind of humour” is infantile and boring。 这两句话中都有infantile,但是第一句话中是中性的情感,第二句话是negative的。但是通用的shared-private模型会把infantile放在一个共享的空间,给其他task带来潜在的危险。除此之外,shared space的容量也因为一些不需要的特征而被浪费了。
为了解决这个问题,本文提出了一个对抗的多任务框架,为了让共享和私有space是无关的,引入了正交性约束,orthogonality constraints。为了防止shared和private latent特征空间相互影响,本文提出了两种解决策略:一种是对抗训练adversarial training和正交约束orthogonality constraints. 对抗训练用于确保shared feature space只包含通用和任务不变(task invariant)的特征,正交约束用于去除private和shared space中的多余特征。
本文的贡献:1. 更精确的分割task-specific和shared space,而不是共享参数。 2. 将原有的binary对抗训练扩展到multi-class,不仅可以让多任务jointly训练,同时也允许我们使用没有被标记的数据。3. 将多任务之间的共享信息压缩到一个off-the-shelf(现成的)神经层,可以很容易的转移到新任务。
用LSTM做文本分类:
有一个文本序列 x = {x1, x2, ..., xT},首先使用一个lookup layer来得到每个词的词向量,vector representation(embeddings)。最后一个时刻的输出hT可以看作整个序列的表示,然后有一个全连接层,softmax层预测类别的概率分布
数据集N, (xi, yi),网络的参数被训练,用来最小化预测的和真实分布之间的交叉熵。
多任务学习,文本分类
多任务学习的目的是为了利用这些任务之间的关联来改进分类,by learning tasks in parallel。
多任务学习的关键点在于!!!:sharing scheme in latent feature space. 神经网络的潜在特征被看作隐藏神经元的状态。 特别对于文本分类,LSTM隐藏状态的潜在特征是一个句子的结束。sharing scheme在如何分组shared特征上是不同的,有两种方法:fully-shared scheme和shared-private scheme
Fully-shared model(FS-MTL) figure 2a:
用单层LSTM提取所有任务的特征,这个模型忽视了一个事实:一些特征是task-dependent的,依赖于任务的。
Shared-Private Model(SP-MTL)figure 2b:
每个任务有两种特征空间:一个用于存储task-dependent的特征,另一个用于抓取task-invariant特征。对于任务k中的任意句子,可以计算它的shared representation stk和 task-specific representation htk:
最终的特征是来自私有空间和共享空间的特征连接,concatenation
task-specific output layer:
对于任务k中的句子,它的特征h(k),最终进入相应的task-specific softmax层,为了分类或其他任务。所有任务的预测和真实分布之间的交叉熵
ak 是task k的权重
结合对抗训练Incorporating adversarial training
对抗网络的损失:
本文提出了对抗shared-private模型 for multi-task learning,一个共享的RNN层 is working adversarially towards a learnable multi-layer perceptron多层感知器,防止它对任务类型做出准确的预测。对抗训练可以使共享空间更纯净并且确保了共享的representation不被task-specific特征污染。
任务分类器 Task Discriminator:将句子的shared representation映射到一个概率分布,估计句子编码来自那个task。
对抗损失Adversarial Loss:增加了task adversarial loss Ladv来防止task-specific特征跑进shared空间中。这个loss用来训练模型来产生shared特征,一些一个分类器不能完全依赖用来预测任务种类的特征。
原有的对抗网络的损失很有限因为它是二元的,为了克服这个,我们扩展它到多类别的形式。
dik是当前task分类的label。给定一个句子,shared LSTM生成一个representation来误导任务分类器;同时,分类器尝试去对任务的分类做正确的分类。在训练阶段,shared特征提取和任务分类器达到一个特定点,两个都无法再改进,并且分类器也不能区分所有任务。
半监督多任务学习 Semi-supervised Learning Multi-task Learning:
Ladv只需要input sentence并且不需要label y,所以可以将本模型与半监督学习联系起来。最后,本模型不仅可以利用相关任务的数据,同时可以应用于abundant unlabeled corpora。
正交约束orthogonality constraints
上面模型的缺点,一些task-invariant特征可能出现在shared空间和private空间
损失:
使用BP,使用一个gradient reversal layer(梯度反向层)使得minimax优化可行