摘要

大规模的预训练语言模型展示了强大的生成逼真文本的能力。然而,控制生成结果仍然具有挑战性。之前的prompting等方法远远不够,这限制了语言模型的使用。为了应对这一挑战,我们提出了一种创新方法,即inverse prompting,以更好地控制文本生成。inverse prompting的核心思想是在beam search过程中利用生成文本对prompting进行逆向预测,这增强了prompting与生成文本的相关性,提供了更好的可控性。根据经验,我们预训练了一个大规模的中文语言模型,通过人工评估,对开放领域诗歌生成和开放领域长格式问答任务进行系统研究。我们的结果表明,我们提出的方法大大优于基线,并且我们的生成质量在某些任务上接近人类的表现。

1.介绍


  文本生成领域最近取得了巨大的进步。使用最大似然估计优化的大规模自回归 Transformer 模型已显示出生成逼真文本的能力。对于文本生成的实际应用,例如论文写作和故事生成,用户必须能够控制生成结果。最常见的方法之一是使用prompting,即用户应手动编写几句话作为提示,语言模型根据提示生成后续字符。例如,用户可能会输入“this is a sad story about a disease named COVID-19”作为预期生成 COVID-19 故事的提示。
  然而,对于可控的文本生成来说,提示是远远不够的。语言模型偏离原始提示的生成过程并开始生成无关主题的文本的情况并不少见。图 2 显示了语言模型是如何无法保持提示和生成文本之间的一致性的示例。在这个例子中,语言模型被要求回答“你想永远活在哪一刻”的问题。使用传统prompting的基线生成的故事与提示有很大差异,即大多数生成的内容与问题无关。并且生成的内容中也有不自然的表达,在上下文中没有多大意义。

  为了应对这一挑战,我们提出了一种新的方法,即inverse prompting,以改进从预训练语言模型生成文本的过程。inverse prompting可以分解为三个步骤:首先,给定一段生成的文本,使用生成的文本构造一个反向提示。其次,基于预训练的语言模型计算给定inverse prompting下的原始提示的条件似然。第三,条件似然被用作集束搜索中选择最佳候选者的分数。因此,inverse prompting确保预训练的语言模型在给定生成文本的情况下以高可能性预测提示,从而增强生成文本与提示的相关性。例如,在问答的情况下,语言模型会根据问题生成答案;在集束搜索期间,我们使用相同的语言模型来计算给定候选生成答案的情况下问题的概率。在图 2 的示例中,inverse prompting生成的文本描述了与问题密切相关的高中时代的美好时刻。因此,与基线的 5.40 相比,逆向提示在本示例的人工评估下获得了 8.60 分(满分 10 分)。
  为了系统地评估inverse prompting的性能,我们使用人工评估,来对开放领域长格式问答和开放领域中国传统诗歌生成任务进行了实验。我们预训练了一个中文语言模型作为我们实验的基础模型。长篇问答的任务类似于在Quora或知乎上回答问题。在这项任务中,我们表明inverse prompting在所有方面都比prompting基线和之前最先进的中文语言模型 CPM 获得了更高的分数。中国传统诗歌生成任务的目标是生成古老形式但具有现代主题的诗歌,包括火箭科学、相对论或人工智能,这测试了不同方法的泛化能力。图 1 说明了以纽约为题的中国传统诗歌生成的一个例子。它结合了纽约像曼哈顿和金融中心这样的当代观念,以及传统形式和传统的云雨诗意意象。在这项任务中,人类专家评估表明,inverse prompting的性能明显优于提示基线,可与Jiuge相媲美,后者是众所周知的最先进的中国传统诗歌生成系统。当我们将inverse prompting与self training相结合时,即使用自我生成的诗歌对模型进行微调时,我们的系统在人类评估下的表现明显优于九歌。我们的人类评估结果表明,inverse prompting显着提高了文本生成的可控性和质量,并实现了接近人类的结果。

2.相关工作

2.1 Pre-training and Language Models

语言建模已被广泛用作预训练的目标,并显示出强大的泛化能力。源自 word2vec 和 GloVe 等词嵌入方法,预训练方法在自然语言处理领域显示出越来越高的重要性。因为这些模型更通用,且只需要更少的特定领域数据即可实现强大的性能。
  具体来说,预训练模型的主要类型是自回归语言模型。生成式预训练 (GPT) 和 Transformer-XL 在困惑度方面取得了实质性的改善,同时也提高了生成质量。该方法也适用于不同的语言。
  尽管现在可以通过大规模预训练语言模型自动生成逼真的文本,但用户能够控制生成结果这一挑战性任务仍然必不可少。Prompting方法目前已被广泛使用,但在控制生成结果方面相当有限。CTRL 提出使用控制代码为语言模型提供条件。与他们的方法不同,我们的方法不依赖于预训练范式或人为设计属性的修改。PPLM 在测试期间执行反向传播以调整生成以最大化属性模型给出的分数。与 PPLM 相比,inverse prompting不需要对原始模型进行任何梯度更新,也不需要任何额外的属性模型。
  长期以来,人们一直在研究使用双重过程,即通过由输入得到输出和由输出得到输入这一双重属性来增强 AI 生成质量的想法。[24] 为机器翻译任务引入了双重学习。该方法使用多个不同的模型形成一个翻译循环,并希望上下文在通过循环后保持不变。CycleGAN 和 VAE 在它们的应用中也有相似的重构思想。与这些作品使用不同的正向和逆向模型不同,本文利用自然语言中逆向格式的存在,并使用相同的语言模型进行prompting和inverse prompting。

2.2 Open-Domain Long-Form Question-Answering

问答是人工智能中一个经过充分研究的问题。目前有多种问答范式。简短问答侧重于使用短语或句子来回答问题。另一方面,长格式问答的目标是生成多个句子或段落,以更全面的方式回答问题。Quora、知乎等在线问答平台可以看作是长篇问答的好例子。虽然短格式问答更容易评估和更广泛的研究,但我们在这项工作中主要研究使用文本生成模型的开放领域长格式问答的能力。由于评估长格式问答的质量具有挑战性,因此我们在实验中采用了人工评估。

2.3 Traditional Chinese Poem Generation

中国传统诗歌是中国文学的一个重要载体,有着几十个世纪的历史。几年前,研究人员尝试使用统计机器学习方法生成中国传统诗歌。后来,九歌将中国传统诗歌的产生推向了一个新的高度。作为公认的开放领域中文诗歌生成技术,九歌能够在任何给定的标题、关键字甚至图像下生成多种形式的诗歌。尽管它能够处理任意的开放领域输入,但 Jiuge 在特定领域的上下文(如巨型沙漠或铁马)上表现良好,但不能很好地推广到唐纳德特朗普、量子计算和欧洲等当代概念。与久歌不同,我们采用在通用语料库上预训练的大规模语言模型,并利用逆向提示来提高其生成质量。

3.方法

在本节中,我们将讨论所提出的inverse prompting方法。给定提示cpc_pcp​ ,文本生成的问题被建模为生成cgc_gcg​ ,其中cpc_pcp​和cgc_gcg​都是字符序列。

3.1 Baseline: Prompting and Beam Search


  给定一个具有概率分布ppp的语言模型,一种简单且广泛使用的方法是通过最大化条件概率p(cg∣cp)p(c_g|c_p)p(cg​∣cp​)来生成文本。这通常通过集束搜索来实现。beam size大小为nnn时,集束搜索根据评分函数f(⋅)f(·)f(⋅)在解码期间保持top−ntop-ntop−n个序列。算法 1 中给出了一个说明。基线方法使用对数似然来定义评分函数,即f(cg∣cp)=logp(cg∣cp)f(c_g|c_p)=log~p(c_g |c_p)f(cg​∣cp​)=log p(cg​∣cp​)。

3.2 Inverse Prompting


  在本文中,我们介绍了一种集束搜索中的基于新评分器fff的新方法,称为inverse prompting。与以往的可控方法如CTRL或PPLM需要额外的属性模型训练或手动定义代码不同,逆向提示直接使用原始语言模型本身来改进其生成。
  降低文本生成质量的一个主要问题是表 2 中所示的失控现象。随着句子的生成,文本逐渐变得与给定的提示无关。随着给定提示与生成的句子之间的距离变大,它阻碍了生成器与提示保持紧密联系。
  为了缓解这个问题,我们的主要思想是设计一个新的集束搜索评分函数,以反方向评估对数似然;例如,如果可以从文本中生成提示,则它们应该彼此非常相关:
f(cg∣cp)=logp(cp∣cg).(1)f(c_g|c_p)=log~p(c_p|c_g).\tag{1}f(cg​∣cp​)=log p(cp​∣cg​).(1)
  如果我们以相反的方式阅读文本,则得到的文本并不总是流畅。在问答中,prompt方法可能是"Question:${Question} Answer:"。之后很自然地跟随答案,从而产生“Question:${Question} Answer:${Answer}”。但是,在自然语言中,顺序不太可能以相反的方式呈现,即“${Answer} Question:${Question} Answer:”。简单地使用等式 1 只会导致失败。
  然而,由于自然语言的性质,确实存在重新排列上下文的方法,使它们以相反的顺序正确出现。让我们继续上面的例子:对于“Question:${Question} Answer:${Answer}”,在自然语言中确实存在一种方法来反转它:“${Answer} answers the question:${Question}”。
  为了实现等式1的核心思想,我们只需要改变提示和文本的格式:
f(cg∣cp)=logp(cp′∣cg′),(2)f(c_g|c_p)=log~p(c'_p|c'_g),\tag{2}f(cg​∣cp​)=log p(cp′​∣cg′​),(2)
其中cg′c'_gcg′​是新格式下的逆向提示,而cp′c'_pcp′​是逆向文本。图 4 显示了这种转换格式的一些示例。对于cp="Question:§{Question}Answer:"c_p="Question:\textbf {\S\{Question\}}~Answer:"cp​="Question:§{Question} Answer:" 和cg=§{Answer}c_g=\textbf{\S \{Answer\}}cg​=§{Answer},我们只需要设置cp′="§{Question}"c'_p ="\textbf {\S \{Question\}}"cp′​="§{Question}" 和cg′="§{Answer}answersthequestion:"c'_g="\textbf {\S \{Answer\}}~answers~the~question:"cg′​="§{Answer} answers the question:",这样的情况下等式 2 应该有效。Inverse prompting根据它们以相反方式生成原始提示的可能性对不同的集束进行排名,从而提升最相关的生成文本。只要语言支持反向结构以适当的方式重新排列提示和上下文,就可以使用反向提示。语言模型生成和语言模型反向提示的详细说明如图 3 所示。

  图 4 中的上半部分是我们论文的两个实验中的逆向提示格式——长格式问答和诗歌生成,而下半部分是如何在其他文本生成任务中使用逆向提示的附加示例。
  Inverse prompting方法简单,易于实现。该方法不需要额外的模型或数据处理,因为反向提示分数可以通过用于生成的相同语言模型简单地计算出来。然而,逆向提示对生成文本的质量提供了很大的改进,我们将在第 4 节和第 5 节中展示。

4.实现

我们主要使用两个长文本生成任务,Open-Domain Long-Term Chinese Question-AnsweringOpen-Domain Chinese Poem Generation,这两个任务需要模型根据相对较短的提示生成长而深入的上下文,以展示的逆向提示所带来的性能提升。
  我们相信随着生成的文本和给定提示(问题/标题)之间的相关性提高,生成质量也会提高。因此,我们在实验中对问题/标题进行逆向提示,如图 4 中的前四行所示。

4.1 Base Language Model

我们使用 Megatron-LM 和 Transformer-XL 训练我们的基础中文语言模型。该模型有 28.6 亿个参数。 训练集包含从百度、知乎和搜狗在内的多个中文网站中提取的 302GB 原始中文数据。我们使用 64 个 GPU 对基础模型进行 160,000 步训练。附录 A.1 中显示了训练设置和数据集的详细信息。

4.2 Open-Domain Long-Form Question-Answering

长篇问答,就像知乎、搜狗的问答一样,是一种问答形式,问题和描述很短,用一两句话来描述,而答案必须长,内容丰富,有深度。提问者希望得到详尽的答复,详细回答他提出的问题。
  我们在该领域上应用反向提示来生成给定问题和提示的长格式答案。我们根据语言模型LM\mathcal{LM}LM随机生成子句,并在子句级别使用反向提示进行集束搜索。为了确保答案与问题具有高相关性,我们应用逆向提示(每个子句的分数用公式 2计算, 并总结它们的分数)。为了保持生成的上下文流畅,我们将分数与归一化的前向困惑度相结合,
f(cg∣cp)=1nλ1logp(cp′∣s′)+λ2logp(cg∣cp)n(cg)λ(3)f(c_g|c_p)=\frac{1}{n}\lambda_1~log~p(c'_p|s')+\lambda_2\frac{log~p(c_g|c_p)}{n(c_g)^{\lambda}}\tag{3}f(cg​∣cp​)=n1​λ1​ log p(cp′​∣s′)+λ2​n(cg​)λlog p(cg​∣cp​)​(3)

4.3 Open-Domain Poem Generation

传统中文诗歌生成是特定领域的长篇中文文本生成任务。中国传统诗歌有其特定的复杂格式和不同于现代汉语的词法。大多数诗歌是古代诗人写的,以表达他们的感受,描述他们正在做的事情,或对不同事物的想法。在给定开放领域信息的条件下生成有意义的诗歌格式文本对于最先进的 AI 模型和人类来说都非常困难。
  在本文中,除了 Open-Domain Long-Form QA 之外,我们还进一步挑战了我们的逆向提示,以完成一项看似不可能的任务——使用在现代文本上训练的语言模型来生成 Open-Domain 传统中文诗歌。
  我们基本上保留了等式 3 的逆提示格式,同时向集束搜索(等式 4)添加了一个诗歌格式项,这会根据上下文在节奏或音调上不遵守诗歌格式的程度来惩罚上下文。
f(cg∣cp)=1nλ1logp(cp′∣s′)+λ2logp(cg∣cp)n(cg)λ−λ3lformat(cg)(4)f(c_g|c_p)=\frac{1}{n}\lambda_1~log~p(c'_p|s')+\lambda_2\frac{log~p(c_g|c_p)}{n(c_g)^{\lambda}}-\lambda_3l_{format}(c_g)\tag{4}f(cg​∣cp​)=n1​λ1​ log p(cp′​∣s′)+λ2​n(cg​)λlog p(cg​∣cp​)​−λ3​lformat​(cg​)(4)

4.4 Self Training for Poem Generation

鉴于该模型是在现代汉语文本上训练的,包括很少的诗歌格式文本,它很难生成完全符合诗歌格式的文本,同时保持与给定标题的强相关性。
  因此,为了提高其性能,我们尝试使用 AlphaGo-Zero 中生成和微调的自训练方式来完成此任务。
  我们随机选择 1500 个标题,让模型根据它们生成诗歌。然后我们在这些生成的诗歌上微调模型 2000 步。这个循环可以重复多次,在我们的实验中,我们重复这个循环 2 次。我们希望经过微调的模型更有可能生成具有更好诗歌格式和其他诗歌特定属性(如美学)的句子,而不会失去与给定标题的相关性。

Controllable Generation from Pre-trained Language Models via Inverse Prompting翻译相关推荐

  1. Chapter9 : De Novo Molecular Design with Chemical Language Models

    reading notes of<Artificial Intelligence in Drug Design> 文章目录 1.Introduction 2.Materials 2.1.C ...

  2. NLP:《ChatGPT: Optimizing Language Models for Dialogue一种优化的对话语言模型》翻译与解读

    NLP:<ChatGPT: Optimizing Language Models for Dialogue一种优化的对话语言模型>翻译与解读 目录 <ChatGPT: Optimiz ...

  3. 论文笔记 ACL 2019|Exploring Pre-trained Language Models for Event Extraction and Generation

    文章目录 1 简介 1.1 动机 1.2 创新 3 抽取模型 3.1 触发词抽取 3.2 论元抽取 3.3 确定论元区间 3.4 重新加权loss 4 训练数据生成 4.1 预处理 4.2 事件生成 ...

  4. 【论文阅读笔记1】:Pre-trained Language Models for Text Generation: A Survey

    前言 博客得主要目的是记录自己的学习收获,排版.行文都会比较随意,内容也主要以自己能理解的方式描述,还希望各位看客见谅. 本文为中国人民大学发表在IJCAI2021上的预训练语言模型文本生成综述论文. ...

  5. 【综述阅读】Pre-trained Language Models for Text Generation: A Survey

    Pre-trained Language Models for Text Generation: A Survey 中国人民大学 IJCAI 2021 论文链接:https://arxiv.org/p ...

  6. 论文笔记--Evaluating Large Language Models Trained on Code

    论文笔记--Evaluating Large Language Models Trained on Code 1. 文章简介 2. 文章概括 3 文章重点技术 3.1 评估 3.2 模型训练--Cod ...

  7. 【论文解读 ACL 2019 | PLMEE】Exploring Pre-trained Language Models for Event Extraction and Generation

    论文题目:Exploring Pre-trained Language Models for Event Extraction and Generation 论文来源:ACL 2019 国防科技大学 ...

  8. 【AI人工智能】用于代码生成的大型语言模型 Large Language Models for Code Generation

    目录 Large Language Models for Code Generation – Part 1用于代码生成的大型语言模型--第 1 部分 Introduction

  9. 【论文阅读笔记|ACL2019】PLMEE:Exploring Pre-trained Language Models for Event Extraction and Generation

    论文题目:Exploring Pre-trained Language Models for Event Extraction and Generation 论文来源:ACL 2019 国防科技大学 ...

最新文章

  1. 微型计算机的EMC设计视频,干货 | EMC设计有多难,看完这31个电磁兼容标准电路,瞬间懂了...
  2. 特征工程之MinMaxScaler、StandardScaler、Normalizer、Binarizer
  3. mysql单列索引和多列索引_mysql 单列索引与多列索引
  4. 什么是GDT,LDT,GDTR及LDTR?
  5. 光纤收发器模块如何选购,光纤收发器模块选购原则
  6. 在idea中使用CheckStyle来规范代码
  7. python通过内置模块监控磁盘、内存、CPU、负载
  8. 用 【NEST】 在C#中操作ElasticSearch
  9. vim 删除当前词_VIM中常用的查找、替换、删除模式总结
  10. 刷爆推特的钢管舞机器人有~故~事
  11. ios开发之获取版本号,部分设备信息
  12. Web版本的国际通讯工具合集
  13. 在线答题小程序一站式开发(现源码)
  14. C++视频分解和图片合成视频代码
  15. 窗口风格 :ModifyStyle函数的用法:
  16. 牛顿法详解(海森矩阵如何使用)
  17. 期货交易结算信息(期货结算系统)
  18. 程序员必看!掌门一对一java开发
  19. 问,你的算法复习计划是什么?
  20. python 离群值_python:删除离群值操作(每一行为一类数据)

热门文章

  1. 笨拙的手指(寒假每日一题 1)
  2. 【疑难杂症】The last packet sent successfully to the server was 0 milliseconds ago.
  3. 基于SpringBoot的个人博客系统设计与实现
  4. 如何在Abaqus中用扫掠的方法画六面体网格
  5. PhotoShop入门到精通(一)
  6. java手机解锁_Android手机屏幕敲击解锁功能代码
  7. 体脂秤模块的原理和基本功能说明
  8. LeetCode/LintCode 题解丨一周爆刷双指针:寻找重复的数
  9. 最近美团前端面试题目整理
  10. 表格提示html内容消失,如何解决Word里面的表格插入题注后页面上内容消失、无法编辑的问题...