GRACE:梯度引导的可控检索增强基于属性的生成

在本文中,我们提出通过梯度引导的可控检索(GRACE)来增强基于属性的生成,考虑到目标属性(见图1)。具体来说,我们训练一个鉴别器来计算给定上下文的属性分布。我们构建了一个检索库,存储了从未标注数据中提炼出的自然文本及其语义和属性信息。生成模型通过可控检索提取具有相似语义的与属性相关的信息。我们设计策略来从检索结果中分离无关属性,并将预训练语言模型(PLM)表示融入生成过程中。此外,我们提出了一个算法,该算法基于梯度迭代修正逐步生成。通过优化目标属性,算法检索出具有更强烈属性强度的信息,从而提高生成文本的属性相关性。

image.png

主要工作

(1) 我们提出了一种基于属性的生成框架,该框架利用具有可控检索的未标记语料库。
(2) 我们设计了一种梯度引导生成算法,该算法迭代地引导检索以合适的属性生成。
(3) 我们的方法在属性可控性和流畅性方面超越了情感和主题控制生成的强大基线。

方法

模型架构

image.png
图 2:GRACE 的架构。操作步骤演示了以积极情绪为目标属性的基于属性的生成的第 i 步。给定前缀“事件似乎”,GRACE 生成“uneventful”(步骤 1 到 3),更新梯度引导生成的上下文表示(步骤 4 到 8),并接受“perfect”作为所需输出(步骤 9) 。

我们的框架包含三个部分(见图2):(1) 属性鉴别器通过一个鉴别器 D D D进行属性分类,以评估给定上下文是否满足目标属性。 (2) 检索库构建了一个带有未标注语料库的库 R R R,该库携带了上下文 X n X_n Xn到其下一个词 x n + 1 x_{n+1} xn+1的映射。 R R R支持读取操作,以提供与查询语义相似且与目标属性相关的信息。 (3) 生成器基于前缀和预训练语言模型 G G G生成句子。在每一步, G G G R R R检索(读取)信息,减少特定领域词汇的影响,并将其融入神经网络模型中以生成下一个词。

上述模块协作进行基于属性的生成。我们设计了一个梯度引导的检索生成框架,该框架在每一步引导生成朝向目标属性,并完善梯度引导的检索文本,其中梯度尊重目标属性。

属性鉴别器

D D D 由上下文编码器、分类层和语言建模层组成。编码器将文本传输为上下文表示。分类层将上下文表示映射到属性向量,该属性向量可用于通过附加的 s o f t m a x softmax softmax 层进行属性分类。语言建模层将上下文表示映射到单词概率分布。我们使用编码器和分类层执行分类。为了获得 D D D,我们使用预训练的语言模型初始化编码器和语言建模层。然后,我们在分类数据集上微调编码器和分类层。

检索储存库

存储库建立

在本节中,我们将讨论如何构建检索库。我们在未标注的语料库上构建了一个检索库R,这个库是利用我们的判别器D和生成器G生成的。该库包含了许多项,每一项都包含三个向量 ( r s , r c , v c ) (r^s, r^c, v^c) (rs,rc,vc),分别代表语义、属性增强的语义以及给定上下文的属性分布。

对于一个句子 X n = { x 1 , x 2 , … , x n } X_n = \{x_1, x_2, \ldots, x_n\} Xn={x1,x2,,xn},我们定义其任意子序列为 X i = { x 1 , x 2 , … , x i } X_i = \{x_1, x_2, \ldots, x_i\} Xi={x1,x2,,xi} 对任意的 i ≤ n i \leq n in。为了构建库 R R R,对语料库中每个句子的每个子序列 X i X_i Xi,我们采取以下步骤:

  1. G是一个固定的预训练语言模型(PLM),我们通过 G G G中的文本编码器计算 X i X_i Xi 的上下文表示 r s r^s rs
  2. 我们将 X i X_i Xi 喂给 D D D的编码器以获得其属性增强的上下文表示 r c r^c rc
  3. 我们将 X i + 1 X_{i+1} Xi+1 喂给 D D D的编码器然后是分类层,以获得其属性向量 v c v^c vc。最终,我们将 ( r s , r c , v c (r^s, r^c, v^c (rs,rc,vc)定义为 X i X_i Xi 的库项(请参见图2中的库项)。注意, v c v^c vc 衡量的是考虑当前子序列的下一个词的属性分布。

储存库检索

可控检索找到与查询相似且与目标属性相关的仓库项。为了检索给定的查询文本,我们将上下文提供给生成器G,以获得文本表示 r s r^s rs。接着,我们搜索与查询的 r s r^s rs高度相似的项,从仓库中检索出前文提到的 r s r^s rs。进一步,我们检索两组具有高属性相关性的项作为检索结果。

P k N N ( x i + 1 ∣ c , X i ) ∝ P k N N ( x i + 1 ∣ X i ) ⋅ P ( c ∣ X i , x i + 1 ) (1) P_{kNN}(x_{i+1}|c, X_i) \propto P_{kNN}(x_{i+1}|X_i) \cdot P(c|X_i, x_{i+1}) \tag{1} PkNN(xi+1c,Xi)PkNN(xi+1Xi)P(cXi,xi+1)(1)

检索的理念遵循公式1中受Krause et al.(2021)启发的启发式。在检索结果中,更高的 P k N N ( x i + 1 ∣ c , X i ) P_{kNN}(x_{i+1}|c, X_i) PkNN(xi+1c,Xi)指示(1)下一个词 x i + 1 x_{i+1} xi+1与子序列 X i X_i Xi之间更好的语义连贯性,以及(2)与属性c更高的属性相关性。我们设计了以下策略来对这两个概率进行建模:

• 语义检索。为了提高 P k N N ( x i + 1 ∣ X i ) P_{kNN}(x_{i+1}|X_i) PkNN(xi+1Xi),我们搜索与上下文 X i X_i Xi在语义上相似的项。如图2的第一步,我们取 X i X_i Xi的上下文表示 r X i s r^s_{X_i} rXis作为输入。我们根据存储项的上下文表示 r s r^s rs r X i s r^s_{X_i} rXis之间的相似度,搜索仓库中的K个最近项。该算法返回一组 N \mathcal{N} N,它提供辅助语义信息以促进下一个词的预测(Khandelwal等,2020)。

• 属性检索。我们选择了两个高度属性相关的子集以增加 P ( c ∣ X i , x i + 1 ) P(c|X_i, x_{i+1}) P(cXi,xi+1)。首先,我们从 N \mathcal{N} N中选择项来组成一个子集 N + \mathcal{N}^+ N+,其中项的属性向量 v c v^c vc与目标属性c之间的相似度超过了一个阈值p。这个相似度是项的属性向量 v c v^c vc与c的独热表示之间的余弦相似度。 v c v^c vc衡量了考虑下一个子序列词的属性分布。因此,我们通过考虑下一步生成偏好来增加c的可能性。我们用 ¬ c \neg c ¬c表示反目标属性,并按照上述程序考虑 ¬ c \neg c ¬c得到 N − \mathcal{N}^- N。(以下章节3.3.1使用 N − \mathcal{N}^- N来消除检索信息中的领域偏见)。通过这种方式,我们获得了属性与目标属性最相关的项。

最终,检索操作返回 N + \mathcal{N}^+ N+ N − \mathcal{N}^- N。这两个集合包含了与目标属性和非目标属性高度相关的项。注意, N + \mathcal{N}^+ N+ N − \mathcal{N}^- N中的上下文表示在语义上与当前子序列一致。

生成器

生成器 G 根据给定前缀生成文本并考虑目标属性。在每个生成步骤中,G 从 R 中检索,从检索结果中删除不相关的域偏差,并将它们集成到生成模型中以生成下一个标记。

表示去偏

我们解决了从检索到的信息中产生的领域偏差,并旨在消除生成序列中的领域特定信息。我们将这个处理称为“去偏”。在大多数现有的基于属性的生成方法中,领域偏差存在于生成文本中,其属性与文本领域相冲突,因为基于属性的训练语料通常来自有限的一组领域(Yu等人,2021)。

在第i步生成时,G编码当前子序列以查询仓库R,以获得两组项: N + \mathcal{N}^+ N+ N − \mathcal{N}^- N。之后,我们将每组中的属性增强的上下文表示 r c r^c rc输入到D的语言模型层以获得下一个词的概率分布。然后,我们平均每个集合中的值,并获得 P k N N + ( x i + 1 ∣ c , X i ) P^+_{kNN}(x_{i+1}|c, X_i) PkNN+(xi+1c,Xi) P k N N − ( x i + 1 ∣ ¬ c , X i ) P^-_{kNN}(x_{i+1}|\neg c, X_i) PkNN(xi+1∣¬c,Xi) N + \mathcal{N}^+ N+ N − \mathcal{N}^- N。最后,我们计算它们的差异,以得到 Δ P ( x i + 1 ∣ c , X i ) = P k N N + ( x i + 1 ∣ c , X i ) − P k N N − ( x i + 1 ∣ ¬ c , X i ) \Delta P(x_{i+1}|c, X_i) = P^+_{kNN}(x_{i+1}|c, X_i) - P^-_{kNN}(x_{i+1}|\neg c, X_i) ΔP(xi+1c,Xi)=PkNN+(xi+1c,Xi)PkNN(xi+1∣¬c,Xi)

直觉是,当检索库在领域特定表达上丰富时,单独c的检索结果可能会产生许多不一定与所需属性相关的领域特定语言模式。然而,如果一个词在同时检索c和 ¬ c \neg c ¬c时都有高概率,那么这个词很可能对领域而不是目标属性c至关重要。如果 P k N N + ( x i + 1 ∣ c , X i ) P^+_{kNN}(x_{i+1}|c, X_i) PkNN+(xi+1c,Xi)较高,而 P k N N − ( x i + 1 ∣ ¬ c , X i ) P^-_{kNN}(x_{i+1}|\neg c, X_i) PkNN(xi+1∣¬c,Xi)相对较低,这表明 x i + 1 x_{i+1} xi+1对领域不重要,但对目标属性至关重要。因此,上述操作消除了 X i X_i Xi的语义相似邻居中来自R仓库语料的领域偏差。

表示整合

我们设计了一个策略来整合去偏信息到PLM的概率中,以产生下一个词。直觉上,如果一个词与给定上下文一致并且与目标属性密切相关,则该词是理想的。我们将PLM在G中的词概率表示为 P L M ( x i + 1 ∣ X i ) P_{LM}(x_{i+1}|X_i) PLM(xi+1Xi),并将其整合如下:

S f u s e ( x i + 1 , c , X i ) = λ Δ P ( x i + 1 ∣ c , X i ) + ( 1 − λ ) ∗ P L M ( x i + 1 ∣ X i ) (2) S_{fuse}(x_{i+1}, c, X_i) = \lambda \Delta P(x_{i+1}|c, X_i) + (1 - \lambda) * P_{LM}(x_{i+1}|X_i) \tag{2} Sfuse(xi+1,c,Xi)=λΔP(xi+1c,Xi)+(1λ)PLM(xi+1Xi)(2)

在公式2中, λ \lambda λ是一个衡量在预测下一个词时目标属性c的可控性的因子。我们考虑 λ ( i ) \lambda(i) λ(i)作为一个与步骤i线性递减的控制信号:

λ ( i ) = { λ m i n − λ 0 I ∗ i + λ 0 i ≤ I λ m i n i > I \lambda(i) = \begin{cases} \frac{\lambda_{min} - \lambda_0}{I} * i + \lambda_0 & i \leq I \\ \lambda_{min} & i > I \end{cases} λ(i)={Iλminλ0i+λ0λminiIi>I

其中 λ 0 \lambda_0 λ0是在第0步时的初始比率, λ m i n \lambda_{min} λmin是最小比率,I是一个预定义的步骤数。在固定的 λ 0 \lambda_0 λ0 λ m i n \lambda_{min} λmin下,一个较大的I允许更多步骤获得更高的可控性。

整合之后,我们对得分进行归一化,并使用现有的解码策略(例如,top-k抽样)来生成下一个词。

梯度引导的生成

我们提出了一种梯度引导的生成方法,以引导生成过程朝向目标属性。我们在每一步迭代评估当前子序列,并对其进行修订,直到其属性变得令人满意。

• 子序列评估。我们评估当前子序列是否满足目标属性。我们将在第i步生成的词 x i + 1 x_{i+1} xi+1与当前子序列 X i X_i Xi拼接,得到 X i + 1 X_{i+1} Xi+1。然后,我们将 X i + 1 X_{i+1} Xi+1输入到判别器D中,确定它是否与目标属性匹配(见3.1节)。如果它满足目标属性,我们接受 X i + 1 X_{i+1} Xi+1进入下一个生成步骤。否则,我们保存D的编码器和分类层的梯度 Δ Θ \Delta\Theta ΔΘ来帮助更新 X i + 1 X_{i+1} Xi+1

• 梯度引导的子序列更新。我们增强子序列与目标属性的相关性,以帮助生成具有更强属性强度的词。我们优化D的编码器和分类层,根据 Δ Θ \Delta\Theta ΔΘ获得 D Θ − Δ Θ D\Theta-\Delta\Theta DΘΔΘ。我们将 X i X_i Xi输入到 D Θ − Δ Θ D\Theta-\Delta\Theta DΘΔΘ的编码器中,获得更新后的属性增强的上下文表示 r i ′ c r'^c_i ric。此外,基于 r i ′ c r'^c_i ric,我们采用3.2.2节的检索步骤和上述模块中介绍的3.3节的生成步骤,获得新的检索结果,并生成一个新词 x i + 1 ′ x'_{i+1} xi+1。到目前为止,我们已经完成了一次梯度引导生成的迭代。

D Θ − Δ Θ D\Theta-\Delta\Theta DΘΔΘ被优化以朝向目标属性时,其编码器产生的上下文表示包含更丰富的与属性相关的信息,这有助于检索与目标属性匹配的文本。因此, r i ′ c r'^c_i ric在检索时与与目标属性更相关的项匹配,进而帮助生成下一个与期望属性更相关的词 x i + 1 ′ x'_{i+1} xi+1

在我们的框架中,我们首先训练判别器D(见3.1节)并建立检索仓库R(见3.2.1节)。在第i步生成时,我们遵循3.2.2节的检索步骤,并使用G生成一个新词(见3.3节)。之后,梯度引导的生成(见3.4节)通过迭代优化生成结果,这需要调用检索(见3.2.2节)和生成(见3.3节),直到满足属性要求。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/545301.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MySQL--分组查询获取每组最新的一条数据(group by)

业务场景: 最近项目中迭代一个旧的功能,再原有的设计上进行功能拓展(因成本等原因,不考虑项目重构),其中设计到了这么一个场景,同一个业务 ID 在同一张表中有 N 条数据,需要查询出最…

mac打开exe文件的三大方法 mac怎么运行exe文件 mac打开exe游戏 macbookpro打开exe

exe文件是Windows系统的可执行文件,虽然Mac系统上无法直接打开exe文件,但是你可以在Mac电脑上安装双系统或者虚拟机来实现mac电脑上运行exe文件。除了这两种方法之外,你还可以在Mac电脑上使用类虚拟机软件打开exe文件,这三种方法各…

LabVIEW提升舱救援通讯监测系统

LabVIEW提升舱救援通讯监测系统 随着科技的进步,煤矿救援工作面临着许多新的挑战。为了提高救援效率和安全性,设计并实现了一套基于LabVIEW的提升舱救援通讯监测系统。该系统能够实时监控提升舱内的环境参数和视频图像,确保救援人员和被困人…

web 课程

文章目录 格式图片超链接书签链接表格例子横跨束跨 格式 <br /> <br/> #换行图片 <img> 标签是用于在网页中嵌入图像的 HTML 标签&#xff0c;它有一些属性可以用来控制图像的加载、显示和交互。以下是对 <img> 标签常用属性的详细介绍&#xff1a;…

问了 Gemini 1.5 Pro 五个问题,找到了初遇ChatGPT的感觉

一个月前&#xff08;2月15日&#xff09;&#xff0c;Sora和 Gemini 1.5 同时推出&#xff0c;这个故事很多人都听过了&#xff0c;Google 被冠以 AI 界汪峰的名头。 人们纷纷震惊于 Sora 的强大&#xff0c;讨论 Sora 是不是世界模型。而 Gemini 1.5 的第一个模型 Gemini 1.…

2.26回顾章节主体线索脉络,课程要求(评分)

3)翻译程序、汇编程序、编译程序、解释程序有什么差别&#xff1f;各自的特性是什么&#xff1f; 翻译程序是指把高级语言源程序翻译成机器语言程序&#xff08;目标代码&#xff09;的软件。 翻译程序有两种&#xff1a;一种是编译程序&#xff0c;它将高级语言源程序一次全部…

Java -- 异常

异常概念 异常是程序在运行期间发生的不正常的事件, 它会打断指令的正常执行流程.   设计良好的程序应该在异常发生时提供处理这些不正常事件的方法, 使程序不会因为异常的发生而阻断或产生不可预见的结果.    Java语言使用异常处理机制为程序提供了异常处理的能力. 异常分…

Ubuntu 如何安装 Beyond Compare?

Ubuntu20.04安装Beyond Compare 4.3.7 一、官网下载方式一&#xff1a;方法二&#xff1a;使用 .deb 包安装 二、安装相关依赖和bcompare三、破解常见错误解决方法 ) 文件比较工具Beyond Compare是一套由Scooter Software推出的文件比较工具。主要用途是对比两个文件夹或者文件…

Docker 学习笔记一

一、什么是docker Docker 是一个基于轻量级虚拟化技术的容器&#xff0c;整个项目基于Go语言开发&#xff1b;Docker是一个C/S架构&#xff0c;后端众多模块各司其职&#xff0c;docker的daemon是运行在主机上通过client可以进行通信。 docker 由三部分组成&#xff1a;镜像(…

51单片机系列-单片机定时器

&#x1f308;个人主页&#xff1a;会编辑的果子君 &#x1f4ab;个人格言:“成为自己未来的主人~” 软件延时的缺点 延时过程中&#xff0c;CPU时间被占用&#xff0c;无法进行其他任务&#xff0c;导致系统效率降低&#xff0c;延时时间越长&#xff0c;该缺点就越明显&…

力扣--最小覆盖子串--双端队列+滑动窗口

滑动窗口思路&#xff08;双端队列实现&#xff09;&#xff1a; 可以参考一下&#xff1a;力扣hot8---滑动窗口-CSDN博客以及力扣hot9---滑动窗口-CSDN博客。 使用滑动窗口有以下几个步骤&#xff1a;初始化双端队列&#xff08;将s的前t_len个元素入队&#xff0c;此时检验是…

【python】集合

前言 简洁整理&#xff0c;无废话 集合概念 含义&#xff1a;跟数学中的基本一样 形式&#xff1a;{1,a,(1,2)} 性质&#xff1a;不重复性&#xff0c;集合中每个元素不会有重复&#xff1b;集合中必须是不可变元素&#xff0c;不能有列表可以有元组 创建&#xff1a;{}或…