OpenAI 研究人员为语言模型构建了一个高效的框架来完成文档中的中间空白

2022-11-17 08:36:08 浏览数 (1)

假设有一个不完整的代码,希望编码助手自动填充它,或者已经想到了文档的开头和结尾,并且无法想到要在文档中间写一些有用的东西。可用于语言模型的最先进的框架无法有效地做到这一点,尽管它们非常擅长完成提示。OpenAI 的研究人员展示了一种通过修改现有框架使语言模型能够在中间填充文本(FIM - Fill in the middle)的方法。

当前最先进的框架(如 GPT-3、LaMDA)基于编码器和解码器。它们根据生成先前文本的概率(自回归结构)生成后续文本。然而训练过程中的微小变化将能够在中间填充文本。该过程是在不修改模型架构的情况下在数据集的某些部分应用转换。转换是这样的,文档被随机切割成三部分,中间部分被删除并附加到最后。如果一个文档包含三个部分:{prefix, middle, suffix},那么它就变成了{prefix, suffix, middle},产生middle的概率不仅取决于前缀元素的概率,还取决于后缀元素的概率。

检查了代码和语言生成案例。首先证明了混合训练不会损害模型以前的能力,比如从左到右生成文本。如果模型没有使用混合进行预训练,也可以通过微调现有的预训练模型来学习 FIM 能力。然而已经证明微调比使用 FIM 进行预训练在计算上更昂贵。因为在通过转换器进行编码时,它在整个文档中施加了不同的注意力模式。尽管文档被分成三部分并重新排列,但要制作的令牌总数与之前的自回归结构相同。

包含图表说明的图片已自动生成

该框架的评估方法是通过评估生成中间标记的概率来衡量发生了多少信息增益,这些中间标记仅受前缀和前缀以及后缀标记的限制。通过随机屏蔽文档的跨度并预测跨度中的值来进行评估。

创建了这种方法的不同版本即 SPM,它交换了前缀和后缀,使其变得像 {suffix, prefix, middle}。这个优点是前缀还验证由后缀计算的键值对。通过应用这两种转换进行了测试,每种转换的概率均为 50%。

总之用混合数据训练之前的自回归模型可以有效地填充文档和代码的中间部分,而不会损害之前从左到右生成文本的能力。但是这有一些局限性,可以通过以后的研究加以改进。就像统一应用了转换一样,可以通过特定于语言的转换来改进。目前明智地填充文本也是模棱两可的,稍后可以通过添加强化学习方法来改进,其中几个反馈将控制生成。

https://arxiv.org/pdf/2207.14255.pdf

https://github.com/openai/human-eval-infilling

0 人点赞