论文评价:
这篇文章总体是很不错的,探究了一种多属性的可控对话生成的简单有效方法。发现了只是简单的用多个单属性prompt的concation就能取得不错的多属性效果,并解决了这种简单连接产生的文本流畅性问题和位置敏感度问题
论文创新点:
提出了一种多个属性限定时的简单有效的文本生成方法,并解决了这种简单方法带来的后续问题。
论文思路:
以往的多属性限定方法通常由两种做法,一种是直接按照属性都用相应的预料去训一个预训练模型,然后用什么属性调用什么属性就好,另一种是用一些额外的属性分类器和预训练模型结合(相当于给预训练模型加了特征),从而让预训练模型能够识别出到底要什么属性。
本文是基于prompt来做,也就是每种属性,例如食物(墨西哥食物,美式食物等),情绪(高兴,伤心等)都作为独立的prompt去驱动预训练模型。
这样就带来了两个问题:
1.如何去训练出对应的prompt
用对应属性的预料去训练,将prompt放在句子最前方,也就是[墨西哥食物][有关墨西哥食物的句子],使用GPT-2做为预训练模型,只调整prompt的embedding,而不调整句子和GPT-2的模型。
从而得到每个属性各自的prompt embedding
2.如何将多个属性结合在一起
简单的拼在一起就有不错的效果,也就是如果我需要限制文本同时拥有积极的情绪,并且谈论墨西哥食物,我只需要[积极情绪对应的prompt][墨西哥食物对应的prompt][输入前缀(类似于[BOS],once upon a time这样的)],将对应的训练好的prompt embedding扔进去就能达到还不错的效果。
随后,文章提出了简单拼接的两个问题,即连贯性问题和位置敏感度问题,这里重点解释下位置敏感度问题,由于我们训练的时候靠近input prefix的或者说最靠近句子的是prompt,但是我们在用的时候不仅最靠近的那个是prompt,而是多个prompt,但模型会更倾向于让更靠近句子的那个作为prompt,从而较远的属性得不到足够的约束。
文章提出了两种新非训练方法缓解了这一问题:MAP注意力mask和RP位置编码,具体来说,MAP注意力是让不同的attribute之间只能注意到自己和input prefix,即使用如下图所示的注意力,让一句话更像是attribute被训练时的“单属性”样本。
第二种是RP位置编码:初衷也是让模型觉得这个句子像是一个单属性的样本。id为正常的位置编码,idRP是本文提出的位置编码,也就是让多个属性的最初位置编码都变成1,仿佛都是第一个属性一样。
同时,还提出了另一种需要训练的方法,利用一种“伪属性”来进行训练,具体来说,所有的句子原本只是单一属性的,但我们可以训练一个分类器来为句子生成一个“伪属性”,如下图:
我们训练一个A属性的分类器,让它去判断B属性的样本在A属性上是什么类别,然后赋予B属性样本一个相应的“伪属性”,例如,我们训练一个情感分类器,让他去分类食物话题的样本在情感上是positive还是negative,从而能够给单属性样本补全另一个属性,让样本看起来是多属性的,这个过程中只优化MAP connector,也不优化GPT2模型。
实验结果
这意味着我们通过比较小的参数量的训练就能有比较好的多属性效果。