文章名称
【arxiv-2019】Contrastive Representation Learning for Exemplar-Guided Paraphrase Generation
核心要点
与前几篇释义生成的文章不同,文章旨在解决示例引导的释义生成(EGPG) 问题。给定两个句子,EGPG期望生成与原句子风格相同且与原句子释义相同的释义句子。作者在seq2seq的基础上,利用对比学习的方法(constrastive learning)设计了两个对比损失,分别学习句子风格和句子意义的表示向量,并基于这两个表示生成符合要求的句子。
方法细节
问题引入
不同于释义生成模型包括三种类型,EGPG不仅要求内容相似,同时要求风格相近。原有的生成方法,引入语法信息作为风格信息,或者没有显示的把风格表示和内容表示分开(虽然可以提取风格表示),并且生成方法相对复杂。
具体做法
作者提出的模型框架如下图所示,模型分别优化3部分损失,1)生成损失(因为是有监督的训练,即有平行语料,可以计算损失),2)风格对比损失;3)内容对比损失。
生成过程主要包括,1)表示提取(encoder部分),2)句子生成(decoder)部分,是典型的seq2seq模型。编码器包括两部分,分别从原风格句子和原内容句子中提取风格表示和内容表示。生成器部分是一个GRU,并把上述两个向量的拼接[,]作为GRU的初始隐状态,逐步生成每一个词。对应的损失函数为交叉熵损失,整个模型公式与损失函数如下图所示。
针对句子的内容表示,作者采用内容对比损失(CCL)的方式确保相似的内容在内容表示空间中相近,反之则比较远。那么如何构造正负样本来进行对比学习呢?由于每一个batch的EGPG样本可以表示为的三元组。因此,我们可以认为每个元组是一对正样本,并且以及(X_i, Y_j), i \neq j表示针对的负样本,针对的负样本可以用同样的方法获得。因此,我们有对正样本和对负样本(表示每一个对应的负样本,其中对应个,同理)。基于这些样本通过如下损失函数可以进行内容对比学习。
类似的,我们可以构造风格对比损失(SSL),每一个batch,有对正样本和对负样本(表示每一个对应的负样本,其中对应个,同理)。利用如下图所示的损失函数进行风格表示学习。
最终,模型的整体损失表示如下。
心得体会
对比学习
作者提出了一种EGPG的对比学习框架,亮点在于如何构造对比样本,这种方法也可以用在普通的释义生成中,不过由于没有拆分表示的需求,所以直接用监督损失就可以完成。也可以直接利用监督损失,分别学习内容表示和风格表示。对比损失相比于监督学习的好处是负样本可以加速学习和收敛(榨干每一个样本的信息)。但是,个人感觉如果负样本和正样本分的并不是特别开,甚至一个在样本中重复出现(实际数据中常常会有),那么负样本中会有正样本的可能,这个比例较高的时候,效果将不稳定,这也是所有负采样学习需要注意的方面。甚至利用课程学习,有简单到复杂的构造负样本。