多个任务联合学习被机器学习领域广泛地接受,特别是在数据不足,或者任务之间关联性很强的场景下。研究人员提出了多种不同的学习框架,例如多任务学习(multi-task learning)、迁移学习、对偶学习等。多任务学习的思想是让多个相关任务之间通过参数共享的方式实现特征表述,或是关系表述的共享,其能够成功的原因在于多个任务之间知识能够互相传递,从而提升了模型的泛化能力。迁移学习是另一种将知识在任务之间互相迁移的学习方法,目的是将一个已经学习好的模型迁移到另一个任务中。
微软亚洲研究院机器学习组在NIPS 2016上提出的对偶学习事实上也是多个任务之间通过互相协作提高模型性能的工作。最初的对偶学习方法可以总结为数据层面的对偶,也就是所有的对偶信息都是通过数据为媒介传递的。而在很多任务中(例如神经机器翻译、对话生成等),模型的不同部分已经具备了对偶的性质,以神经机器翻译为例:通常的神经机器翻译模型都是利用了编码器-解码器(encoder-decoder)的结构,我们在下图抽象了以递归神经网络(LSTM)为例的神经机器翻译过程。
图1 标准的基于编码器-解码器神经机器翻译的结构(黑色框表示一个单位时间的延迟)
神经机器翻译过程可以用如下数学公式描述:
在原始任务中,编码器服务于编码x而不需要任何外部条件;在对偶任务中,解码器用于解码x,基于得到的文本信息ZY。也就是说,给定一对对偶任务,原始任务的编码器和对偶任务的解码器高度相关,因为它们都是为了处理同一种语言,只是依赖的条件不同。
受到多任务学习中共享表述的启发,我们提出共享对偶任务中相关的模型参数,即对于神经机器翻译,做如下设置:
我们将这种方法称为模型层面的对偶学习(model-level dual learning,缩写为MDL)。
除了类似于神经机器翻译这种严格对称的模型,模型层面的对偶学习同样适用于非对称的机器学习任务。以情感分类为例,原始任务是判断一个句子具有积极情感还是消极情感,解决这个任务的网络结构是:输入的句子会被长短期记忆网络(LSTM)逐词编码得到隐状态,而后这些隐状态会被输入到一个全连接网络进行分类。对偶任务是给定一个标签,生成具有特定感情色彩的回复。在对偶任务中,标签首先会被单词嵌入投射到一个特定的空间,而后,另一个LSTM会基于这个标签产生一个句子。在这个非对称的任务中,原始任务的编码器和对偶任务的解码器可以被共享。这可以视为我们提出的模型的一种退化形式——只需要设置
模型框架
我们考虑建立在两个空间x和y之间的对偶任务,其中,原始任务是学习映射f:x→y,对偶任务是学习反向的映射g : y→x。
对于对称的场景,x和y中的元素形式相同,因而有可能使用相同的模型结果来对对偶学习中的两个任务进行建模。例如,在神经机器翻译和Q&A中,x和y中元素都是自然语言的句子,因此我们都可以用LSTM来为f和g进行建模。
X-元素和Y-元素示意图
原始模型,其中
对偶模型,其中
图2 对称条件下,模型层面的对偶学习模型结构的有向图(黑色的框表示一个单位的延迟,图中结点对应变量,有向边对应算子,其中箭头指向的点为输出,另一端为输入)
在非对称的场景中,x和y中的元素不对等,甚至语义空间也不同,因此,原始和对偶任务的模型也不尽相同。例如,在情感分类的任务中,x是自然语言的集合,而y是标签的集合,例如,y={0,1}。x和y的异质性使得我们要使用不同的模型结构。
图3 非对称条件下模型层面对偶学习的框架
在模型层面的对偶学习中,原始模型和对偶模型的参数是共享的,意味着模型有着更少的参数,因此这种方法也可以看作是一种全新的模型压缩的办法。另外,对于给定的一对有标数据(x, y),模型的每一部分都被更新两次,分别来自原始任务和对偶任务。因此,相比于标准的有监督学习,数据会被利用的更加充分。最后,由于参数的共享,两个模型的复杂度被降低了,因此会有更好的泛化能力。
我们在神经机器翻译任务中对模型层面的对偶学习方法进行测试,选用Transformer作为实验的模型,Transformer是由一个基本模块不断堆叠得到的一个完整模型。一个基本模块包括三个部分:(1)自我注意力机制,用于将底层的隐藏表达自适应地线性加权并提交给上一层;(2)编码器-解码器注意力机制:用于自适应地将编码器端的隐藏表达加权得到相应地文本信息;(3)非线性变换层,用于对自我注意力机制和编码器-解码器注意力机制的输出进行非线性变换。
下图展示了Transformer中的基本模块和前面介绍的模型的对应关系。
图4 模型层面的对偶学习在神经机器翻译任务中的模型结构
该实验中,我们选择了三个广泛应用的数据集作为训练数据:
IWSLT 2014的德英互译的任务 (153k训练数据),简记为IWSLT De↔En;
LDC的中英互译任务(1.25M训练数据),简记为Zh↔En;
WMT14的英德互译任务(4.5M训练数据),简记为WMT En↔De。
测试数据:
对于IWSLT De↔En,我们选用和表1列出的对比算法一样的测试集;
对于Zh↔En,我们选用NIST2004、2005、2006、2008和2012作为测试集;
对于WMT En↔De,我们选取newstest14为测试集。
我们将所有的实验模型设置为6个模块。对于IWSLTDe↔En任务,我们选择transformer_small参数配置办法,其余两个任务选择的配置均为transformer_big。同时,我们使用对偶有监督学习作为对比算法。
IWSLT De↔En的实验结果如下表:
表1 IWSLT De↔En的实验结果
在IWSLT De↔En任务中,我们得到了德文到英文的最佳结果34.71。相比于基准算法Transformer,我们在原始任务德文到英文和对偶任务英文到德文上分别提高了1.85和0.90个点。相比于对偶有监督学习,我们的方法能够分别获得1.13和0.73个点的提升。
为了进一步探索新模型如何随着模型复杂度变化而工作,我们研究了随着网络模块数的变化,BLEU值的变化。我们分别测试了含有2、4、6、8个模块的模型的BLEU值(注意每个模块含有3层)。测试的结果如下图所示:
图5 BLEU随着模型模块数的变化
通过实验,我们发现:
(1)对于不同的模块数目以及不同的任务,我们提出的算法都能够提高模型的性能;
(2)当模型的模块数小于6的时候,在两个方向的翻译任务上,随着模块数的增加,模型层面的对偶学习提升的性能(图中绿色部分)会提升。这说明,虽然更深的模型有更强的表达力,但可能会受到过拟合的影响,特别是在数据量比较小的IWSLT数据集上。我们提出的方法能将对偶性引入模型中约束模型空间,并且能够更加充分地利用数据;
(3)即便是对于具有8个模块的网络,我们的方法仍然能够提升模型性能,尽管没有6个模块带来的提升明显。在这种情况下,为了带来更大的提升,我们需要引入更强的泛化性能的约束,例如采用对偶有监督学习。
中英互译的结果如下表:
表2 中英互译的实验结果
在中文到英文的翻译任务中,模型层面的对偶学习利用更简单的模型和更少的数据,再一次取得了最好的效果。在Transformer的算法之上,我们的方法平均给每个数据集带来1.21个点的性能提升,同时也超越了对偶有监督学习算法的表现。对于英文到中文的翻译任务,相比于基准算法,我们的方法在每个数据集上平均取得0.69个点的增益。
最后,在WMT英德互译的任务上,模型层面的对偶学习能够在Transformer的基础上将模型的性能进一步提升0.5个点。实验结果如下表:
表3 WMT英德互译的实验结果
模型层面的对偶学习在情感分析中的应用
在情感分析中,原始任务是情感分类,对偶任务是带有情感的句子生成。x是自然语言的集合,y是标签的集合。因此,两个空间的数据形式和语言完全不同。所以,我们要采用非对称形式的模型层面的对偶学习。
我们在IMDB数据集上进行了验证。我们选用标准的LSTM网络作为原始任务和对偶任务模型的基本单元。模型的单词嵌入和情感标签的嵌入表达均为500维,隐藏层节点数为1024,词表的大小是10k,Dropout的值设置为0.5。我们将softmax矩阵和单词嵌入矩阵(包括单词的和情感标签的)共享。实验结果如下表:
表4 情感分析的实验结果
在原始任务中,相比于标准的LSTM,模型层面的对偶学习能够将错误率下降2.69个百分点;相比于对偶有监督学习,我们的方法也能将错误率下降1.79个百分点。在对偶任务中,模型层面的对偶学习能够比对偶有监督学习下降3.19个点。
与对偶推断的结合
对偶推断是我们在IJCAI 2017上提出的将对偶性应用到推断的过程中,用来提升已有对偶模型推断/预测准确度的方法。为了进一步提升模型效果,我们将对偶推断和模型层面对偶学习进行结合。
模型层面的对偶学习和对偶推断结合的结果如下:
和分别对应原始任务和对偶任务的损失函数,和是经过验证集确定的参数。
我们在IWSLT德英互译任务上验证了模型层面的对偶学习和对偶推断结合的性能,实验结果如下表:
表5 模型层面对偶学习和对偶推断结合在IWSLT德英互译任务上的实验结果(第三行表示标准的Transformer在标准推断和对偶推断的结果;第四行表示模型层面的对偶学习在标准推断和对偶推断下的结果)
可以看出,对偶推断可以将我们提出的算法在两个任务上分别提升0.48个点(德文到英文)和0.19个点(英文到德文)。对偶推断也能为标准Transformer分别带来0.66和0.10个点的提升。
我们同样在情感分类任务中测试了模型层面对偶学习和对偶推断结合的性能。下表展示了对偶推断在IMDB数据集的分类错误率:
表6 模型层面对偶学习和对偶推断结合在情感分类任务上的实验结果
从表格中可以看出,在使用了对偶推断之后,我们可以将错误率下降0.45个点。
总结来说,模型层面的对偶学习可以与数据层面的对偶学习形成互补。这种新的方法利用模型层面的对偶性来设计网络结构,进而提升网络性能。同时,模型层面的对偶学习可以用一个模型解决一组对偶任务,能够起到节省参数量的作用。
论文链接:
http://proceedings.mlr.press/v80/xia18a.html