Changing the Mind of Transformers for Topically-Controllable Language Generation阅读笔记

摘要:

现存的交互式写作助手不能使作家控制text generator生成想要的主题,此文章介绍的framework可以是的用户从一步集合中选择一个constrain来指导文本的生成。那就要求这个架构有两个部分,一个是生成candidate topic的subset,另一个是根据所选topic生成续写文章的text generator

介绍:

现有的writing assistant基本上无法对文本生成提供深入的control,或者说,所需的人力资源太大。有模型可以提供那种预设好的candidate topic,但是可能这并不包含user想要的,可行的办法是手工创建一个图谱或者人机交互来生成,但human labor cost过高。

本文的topic options由输入prompt动态生成,并且该模型使用自监督学习,不需要打标签的数据。除了从candidate topics里面选取外,user也可以自己加word来指导文本的生成。

系统分为两个模块,option generator 和 conditional text generator,预训练模型GPT2 encode 输入prompt。

option generator:预测未来词汇的cluster中心

conditional text generator:通过prompt预测下一个词

训练所需只有一个初始语料、词的分词和一系列结束词

method:

option generator:

如何生成options,通过把语料中的所有词语都聚类到topics中,但是由于不考虑prompt,可能related words会被聚类到同一个topic内。可以考虑只用prompt内的词,但是可能灵感更少,因为毕竟和user的prompt一样了,并且可能会生成重复的句子。最终让option generator来预测prompt中的cluster center而不是将这些词语cluster

使用GPT2对input prompt encode,生成的output被embedding到K个不同的线性网络,transformer将k个embeddings作为输出,并预测出cluster center。预测出来的cluster使用L2范数正则化,使用正则化glove空间内的M个closest词来代表topic

为啥选glove而不是bert或者gpt2来进行预训练?因为没有上下文的word embeddings很容易看出来。用L2范数正则化glove space是因为可以使得欧氏距离等于两个embeddings的cos距离的两倍

训练:紫色部分和上一张图一样,得到cluster center 后,从后面的连续文本里面选择50个词语作为积极样本,并将其归类到cluster centers里面,并将这些词语和中心的距离最小化。消极样本:随机抽50个词语并最大化center和最近embeddings的距离最大化,最终输出的是离predict center最近的词语

右边是一个例子 包括push away 和 pull

clustering loss:non-negative sparse coding NNSC

conditional text generator:

选好的topics和words又反变回glove embedding,由于人看见的是离预测的center最近的词语,计算第k个topic embedding:

模型预测:

topic embedding 被插入到input prompt的最后一个输入xi前,如上图所示,topic embeddings先过线性网络使得维度和GPT2中的隐藏层匹配,然后加上特定的position embedding,这个与输入的pi不同,也可以标记conditional generation开始的位置。encoder的输出会过一层softmax,计算出每一个被观察到的token的概率,选top-k个样本来选择下一个词,继而自回归生成y1...yo

模型训练:

使用prompt的continuation + 随机采的非结束词来对生成器进行训练,因为这个continuation里面有随机词,所以如果generator忽视condition会收获很大的penalty

上图是一个例子,从后O=25个词内随机选n个词语加在最后,将正则化的GLOVE embedding加在输入句子最后一个prompt前,不加在最前面是因为不想让模型基于还没背明确的未来topics学习生成。训练可以在不损害流畅性和效率的情况下让模型知道大家选择topic的倾向,但又不可能在training里面遇到所有的topics

实验部分

对两个generator分别评估,评估包括自动评估和真人测评 topics K=10 generation length = 50.

数据集

训练集:90% of English Wikipedia 2016 验证集:5% of English Wikipedia 剩下的5%为测试集来自动评估

真人评估:从Amazon Mechanical Turk收集标签,从sts benchmark的训练集随机采样句子作为input prompt,这个集合比wikipedia更好理解,因为wikipedia那个数据集有很多学术化的句子。采了24个句子作为prompt输入,每个生成的continuation 或者topics都会被三个真人打分

option generator evaluation

如果生成的topics帮助user续写,那每个continuation中非结束词的embedding就应该和生成主题的embedding有一定的相似度,定义为sim:

此外,定义了sim short:就是短的input prompt上计算sim

sim diff:

真人评估

做了一些问卷,展示prompt 并询问哪些生成的topics更可能在continuation中出现以及哪些topic会提高故事的叙事性

option generator baseline

第一种:用LDA对所有词汇聚类到J=150个topic里面LDA global;Kmeans聚类到J=1000个topic里面 Kmeans global;随机采样K个词语作为cluster centers Sample global

和上文中提到的方法一样,先还是对每个cluster center找到embeddings最近的M个词汇来代表这个topic,并算该topic的tj。最终在所有J个cluster center中找到K个与prompt embedding(input prompt的平均embedding)最近的作为topic

第二种:用NNSC对prompt中的非结束词聚类NNSC local;Kmeans Kmeans-local;随机采K个词Sample local 由于STSb的输入长度短,所以会产生相似的结果,故在真人评估中只用Kmeans-local

option topics的评估结果

实验得到Kmeans- local不会使叙事性提高,容易使得生成的continuation变成input prompt的copy

text generator的评估结果

机器评估:建模随机挑选n个topics来模拟user。将M X K个top words和continuation里的词语匹配,计数完全匹配的token、类型一样的词语、至少包含一个匹配词汇的topic来衡量continuation和topics的关联程度;fluency用GPT2的原始perplexity衡量

人工评估:对fluency打分,并在k个主题中选出generator中出现的topic

baseline:PPLM condition为m个top词的union ;没有condition的PPLM

Dist-1 和Dist-2低的原因是ours会少生成一些多样化的句子使得continuation与topic关联程度更高

human precision相近的原因可能是没作为condition的topic也会在continuation里面出现 别的都是进步的

related work

以往的各类可以control continuation的模型option选择:classes;语意架构甚至是类似于(主语,动词,宾语,修饰语)的结构;但是都需要大量的labels。option也可以是开头的一个词、文章标题等等,但是都不能是主题上的控制。

另一个研究方向是多阶段故事生成,生成一个架构来生成text。这个架构的形式可以是一个SRL框架序列(subject, verb, object, preposition, modififier)、一个premise或者一个故事梗概,但是这种架构方法假设了训练机里面有labels,也不能通过部分文章来提供option;这个架构也可以是多个基于词频提取出的关键短语

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值