1、基于对比学习的文本生成方法姓名 安晨鑫公司 复旦大学职位 硕士研究生|01动机为什么要引入对比学习02方法我们如何解决这些问题的03实验5个生成任务,10个数据集04讨论我们如何才能做的更好目录CONTENT|01为什么要引入对比学习对比学习在文本生成中到底可以扮演一个什么样的角色?为什么在文本生成上应用对比学习|1Contrastive Learning with Adversarial Perturbations for Conditional Text Generation ICLR 2021引入对比学习可以带来 1)从表示学习学习中获益,有价值的样本可以帮助模型学到更有意义的特征和表示
2、 2)最近的研究1 表明对比学习可能是一个新的思路有助于缓解曝光偏差问题。曝光偏差(exposure bias)问题:指的是当前基于最大似然估计(MLE)训练的生成模型存在着测试和训练的不一致以至于损害模型的泛化性能。所谓曝光就是模型在训练阶段解码器只曝光给了正确的输入,而在测试阶段模型不得不基于他自己生成的字符来预测由此形成了测试和训练的偏差。应用对比学习可以缓解自回归模型的曝光偏差问题|如何从对比学习的角度来尝试解决这一问题?背景:对比学习的核心概念是要将正例拉近,负例推远。正负样本的选择标准:以将质量高的人类写的目标为正例,那么另外一些包含错误的序列就作为负例。缓解曝光偏差=将错误的样本
3、和正确的样本同时在训练阶段曝光给解码器并利用对比学习的损失函数进行训练让模型去区别真实标签那些包含错误的序列。一个简单的方法Nave-CL|1.正负例构建:一个简单的方法是选择 SimCLR的方式,锚点-编码器输入(source sequence),正样本-一般是人类写的标准目标语句(ground truth),负样本-同一个batch中随机选择其他的目标语句2.对比学习损失函数:!#3.训练目标!$+!#4.解码策略:普通的Beam search算法其他构造正负样本的方法|Nave-CL 方法的一个明显的缺点是从同一个batch中随机选择的目标序列 非常容易区别 的前人已经对做出了一些改进,
4、这些改进主要涉及到扰动标准目标序列1.SSMBA(离散空间):在离散空间添加扰动,如随机mask一些词让一个用masked language model 将那些词预测回去生成新的正样本2.Dropout:使用dropout机制类似于SimCSE,将groundtruth输入进带有dropout机制的decoder两次所得到的不同表示为一对正样本3.CLAPS(目前效果最好的方法):在embedding空间对ground truth加扰动通过和原来的序列语义变化的大小作为划分正负样本的依据Batch size 与选出ground truth准确率之间关系目前基于对比学习的文本生成方法仍然存在瓶颈
5、|1)正负例构建:尽管之前的方法已经做出了一定的改进,但是对目标序列进行扰动并不能反映模型当前可能会出现的错误2)对比学习损失函数:对比学习损失函数的选择也存在问题。InfoNCELoss 只区分正负但是会忽略掉负样本之间的差异性3)解码目标:仅仅是简单的使用普通的beam search算法意味着这里存在着训练目标和解码目标的不一致|02如何解决问题针对目前基于对比学习的框架存在的问题我们能做些什么改进?我们的改进 CoNT:Contrastive Neural Text Generation|我们做了 3 件事1.来自模型预测的来自模型预测的对比学习对比学习样例样例2.三元组的对比三元组的对
6、比损失函数损失函数3.为对比学习的目标所设计为对比学习的目标所设计的解码目标的解码目标我们的改进 CoNT:Contrastive Neural Text GenerationIWSLT14 De-En 翻译任务中的一个真实的例子Nave 方法中的解码器输入我们的方法中的模型输入我们的改进 CoNT:Contrastive Neural Text Generation|2.三元组的对比学习损失函数 是包含 个对比学习%,&,样本的pair集合 大小为 k(k-1)/2对于每个(,),+和-是由他们各自的bleu score决定的 分数高的在这个piar中