首页  >  文章  >  科技周边  >  GPT、Llama等大模型存在「逆转诅咒」,这个bug该如何缓解?

GPT、Llama等大模型存在「逆转诅咒」,这个bug该如何缓解?

WBOY
WBOY转载
2023-11-18 11:41:41638浏览

中国人民大学的研究人员发现,Llama等因果语言模型遇到的“逆转诅咒”可以归咎于next-token prediction + causal language model的固有缺陷。他们还发现,GLM采用的自回归填空的训练方法在应对这种“逆转诅咒”时表现更为稳健

通过将双向注意力机制引入 Llama 模型进行微调,该研究实现了对 Llama 的 “逆转诅咒” 的缓解。

该研究指出,目前流行的大型模型结构和训练方式存在很多潜在问题。希望有更多的研究人员能够在模型结构和预训练方法上进行创新,以提升智能水平

GPT、Llama等大模型存在「逆转诅咒」,这个bug该如何缓解?

论文地址:https://arxiv.org/pdf/2311.07468.pdf

背景

在Lukas Berglund等人的研究中发现,GPT和Llama模型存在一种“逆转诅咒”。当向GPT-4提问“谁是汤姆·克鲁斯的妈妈?”时,GPT-4能够给出正确的回答“玛丽·李·皮菲尔”,但当向GPT-4提问“玛丽·李·皮菲尔的儿子是谁?”时,GPT-4表示自己不知道这个人。也许在对齐之后,GPT-4出于对人物隐私的保护,不愿意回答这类问题。然而,在一些不涉及隐私的知识问答中,也存在着这种“逆转诅咒”

举个例子,GPT-4 能够准确回答“黄鹤一去不复返”的下一句,但是对于“白云千载空悠悠”的上一句是什么,模型产生了严重的幻象

GPT、Llama等大模型存在「逆转诅咒」,这个bug该如何缓解?

图一:询问 GPT-4 “黄鹤一去不复返” 的下一句是什么,模型正确回答

GPT、Llama等大模型存在「逆转诅咒」,这个bug该如何缓解?

图二:询问 GPT-4 “白云千载空悠悠” 的上一句是什么,模型出错

逆转诅咒因何而来?

Berglund等人的研究只在Llama和GPT上进行了测试。这两种模型具有共同的特点:(1)它们使用无监督的下一个标记预测任务进行训练,(2)在仅有解码器的模型中,采用单向的因果注意力机制(因果关注)

逆转诅咒的研究观点认为,这些模型的训练目标导致了该问题的出现,并且可能是 Llama、GPT 等模型独有的难题

GPT、Llama等大模型存在「逆转诅咒」,这个bug该如何缓解?

重写后的内容:图三:展示了使用Next-token prediction(NTP)训练因果语言模型的示意图

这两点的结合导致一个问题:如果训练数据中包含实体A和B,并且A在B之前出现,那么这种模型只能优化正向预测的条件概率p(B|A),对于反向的条件概率p(A|B)没有任何保证。如果训练集不够大,无法充分覆盖A和B可能的排列,就会出现“逆转诅咒”的现象

当然,也有很多生成式语言模型并没有采取以上的训练范式,比如清华提出的 GLM,训练方法如下图所示:

GPT、Llama等大模型存在「逆转诅咒」,这个bug该如何缓解?

图四:一个简化版的 GLM 训练示意

GLM 使用自回归填充(Autoregressive Blank Infilling,ABI)的训练目标,即从输入中随机选择一段内容进行遮盖,然后自回归地预测该段内容。虽然要预测的令牌仍然依赖于“上文”通过单向注意力,但此时“上文”包括原始输入中该令牌之前和之后的所有内容,因此ABI隐式地考虑了输入中的反向依赖关系

该研究进行了一项实验,发现GLM在一定程度上确实具有免疫“逆转诅咒”的能力

  • 该研究采用 Berglund et al. 提出的 “人名 - 描述问答” 数据集,该数据集使用 GPT-4 编造了若干人名和对应的描述,人名和描述都是独一无二的。数据示例如下图所示:

GPT、Llama等大模型存在「逆转诅咒」,这个bug该如何缓解?

训练集分为两部分,一部分是人名在前(NameToDescription), 另一部分是描述在前(DescriptionToName),两部分不存在重叠的人名或者描述。测试数据的 prompt 对训练数据的 prompt 进行了改写。

  • 该数据集有四个测试子任务:
  1. NameToDescription (N2D): 通过 prompt 模型训练集 “NameToDescription” 部分涉及到的人名,让模型回答相应的描述
  2. DescriptionToName (D2N): 通过 prompt 模型训练集 “DescriptionToName” 部分涉及到的描述,让模型回答相应的人名
  3. DescrptionToName-reverse (D2N-reverse): 通过 prompt 模型训练集 “DescriptionToName” 部分涉及到的人名,让模型回答相应的描述
  4. NameToDescription-reverse (N2D-reverse): 通过 prompt 模型训练集 “NameToDescription” 部分涉及到的描述,让模型回答相应的人名
  • 该研究在此数据集上对 Llama 和 GLM 按照各自的预训练目标(Llama 用 NTP 目标,GLM 用 ABI 目标),进行微调。微调后,通过测试模型回答逆转任务的准确率,可以定性地评估模型在真实场景下遭受 “逆转诅咒” 的严重性。由于所有人名和数据都是编造的,因此这些任务基本不会被模型已有的知识干扰。

GPT、Llama等大模型存在「逆转诅咒」,这个bug该如何缓解?实验结果表明,通过 NTP 微调的 Llama 模型,基本没有正确回答逆转任务的能力(NameToDescription-reverse 任务准确率为 0),而通过 ABI 微调的 GLM 模型,在 NameToDescrption 逆转任务上的准确率非常高。

为了进行对比,该研究还使用了NTP的方法对GLM进行微调,并发现GLM在N2D-reverse任务中的准确率下降到了0

也许由于 D2N-reverse(利用逆转知识,给定人名生成描述)比 N2D-reverse(利用逆转知识,给定描述生成人名)要困难许多,GLM- ABI 相对于 GLM-NTP 只有微弱的提升。

研究得出的主要结论并没有受到影响:训练目标是导致 "逆转诅咒" 的原因之一。在以next-token prediction方式预训练的因果语言模型中,"逆转诅咒" 尤其严重

如何缓解逆转诅咒

由于 “逆转诅咒” 是 Llama,GPT 等模型的训练阶段导致的内在问题,在有限的资源下,我们能做的就是想办法在新数据上微调模型,并尽可能地避免模型在新知识上 “逆转诅咒” 的发生,以更充分地利用训练数据。

受到 GLM 训练方法的启发,该研究提出了一种训练方法 “双向因果语言模型优化” (Bidirectional Causal language model Optimization),在基本不引入新的 gap 的情况下,让 Llama 也能采用双向注意力机制进行训练,简单来说,有以下几个重点:

1. 消除 OOD 的位置信息。Llama 采用的 RoPE 编码在 attention 计算的时候为 query 和 key 添加位置信息,计算方法如下所示:

GPT、Llama等大模型存在「逆转诅咒」,这个bug该如何缓解?

GPT、Llama等大模型存在「逆转诅咒」,这个bug该如何缓解?

其中GPT、Llama等大模型存在「逆转诅咒」,这个bug该如何缓解?分别是当前层 m 和 n 位置的输入,GPT、Llama等大模型存在「逆转诅咒」,这个bug该如何缓解?是 RoPE 使用的旋转矩阵,定义为:

GPT、Llama等大模型存在「逆转诅咒」,这个bug该如何缓解?

如果直接将 Llama 的因果注意力掩码去掉,会引入 out-of-distribution 的位置信息。原因是,在预训练的过程中,在 m 位置的 query 只需与在 n 位置的 key 进行内积(GPT、Llama等大模型存在「逆转诅咒」,这个bug该如何缓解?),上式内积计算中的 query-key 的相对距离 (n-m) 始终是非正的;而直接去掉注意力掩码,在 m 位置的 query 就会与在 n>m 位置的 key 做内积,导致 n-m 变成一个正值,引入了模型没见过的位置信息。

该研究提出的解决方法非常简单,规定:

GPT、Llama等大模型存在「逆转诅咒」,这个bug该如何缓解?

GPT、Llama等大模型存在「逆转诅咒」,这个bug该如何缓解? 时,无需对内积计算做任何修改;当 n > m,通过引入一个新的旋转矩阵GPT、Llama等大模型存在「逆转诅咒」,这个bug该如何缓解?来计算。GPT、Llama等大模型存在「逆转诅咒」,这个bug该如何缓解?是将旋转矩阵中所有的 sin 项都取相反数得到的。这样,就有GPT、Llama等大模型存在「逆转诅咒」,这个bug该如何缓解?。那么当 n > m 时则有:

GPT、Llama等大模型存在「逆转诅咒」,这个bug该如何缓解?

该研究将 attention score 的计算分为两部分,按以上操作分别计算上三角和下三角,并最终进行拼接,这样就很高效地实现了本文规定的注意力计算方法,整体操作如下子图 (a) 所示:

GPT、Llama等大模型存在「逆转诅咒」,这个bug该如何缓解?

2. 采用 mask denosing 的方式训练

因为引入了双向注意力机制,继续使用NTP任务进行训练可能会导致信息泄漏,从而导致训练失败。因此,该研究采用恢复掩码标记的方法对模型进行优化

该研究尝试使用BERT,在输出的第i个位置还原输入的第i个位置的mask token。然而,由于这种预测方式与模型在测试阶段所使用的自回归预测有较大差异,因此并没有取得预期效果

最终,出于不引入新的 gap 的思想,该研究采用了自回归式的 mask denoising,如上图(a)所示:该研究在输出端的第 i 个位置去还原第 i+1 位置输入的 mask token。

此外,由于因果语言模型的预训练词表是没有 [mask] 这个 token 的,如果在微调阶段新加一个 token 的话,模型还得去学习这个无意义 token 的表示,因此该研究只是输入一个占位 token,并在 attention 计算中忽略掉占位 token。

该研究在微调 Llama 时,每一步以均等的概率,随机选择 BICO 与普通的 NTP 作为训练目标。在同样微调十个 epoch 的情况下,在上述人名描述数据集上,与正常 NTP 微调的表现对比如下:

GPT、Llama等大模型存在「逆转诅咒」,这个bug该如何缓解?

该研究的方法对于逆转诅咒有一定的缓解是可以看到的。本文的方法在D2N-reverse上的改进与GLM-ABI相比非常小。研究人员推测这种现象的原因是,虽然数据集中的人名和对应的描述是由GPT生成的,以减少预训练数据对测试的干扰,但是由于预训练模型具有一定的常识理解能力,比如知道人名和描述之间通常存在一对多的关联。在给定一个人名的情况下,可能会有多种不同的描述。因此,当模型需要同时利用反向知识和生成长描述时,似乎会有些困惑

此外,本文的重点是探讨基础模型的逆转诅咒现象。在更复杂的情境中评估模型的逆转回答能力,以及强化学习高阶反馈是否对逆转诅咒产生影响,仍需要进一步的研究工作

一些思考

当前,大多数开源的大型语言模型都遵循着“因果语言模型+下一个标记预测”的模式。然而,在这个模式中可能存在更多类似于“逆转诅咒”的潜在问题。尽管目前可以通过增加模型规模和数据量来暂时掩盖这些问题,但它们并没有真正消失,而且仍然存在着。当我们在模型规模和数据量增加的道路上达到极限时,这个“目前足够好用”的模式是否能真正超越人类智能,这个研究认为非常困难

该研究希望更多的大模型厂商以及有条件的研究者能够深入挖掘当前主流大语言模型的内在缺陷,并在训练范式上进行创新。正如该研究在正文的最后所写,“Training future models strictly by the book may lead us to fall into a “middle-intelligence trap.”” (循规蹈矩地训练未来的模型可能会引导我们掉入中等智能陷阱)

以上是GPT、Llama等大模型存在「逆转诅咒」,这个bug该如何缓解?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文转载于:51cto.com。如有侵权,请联系admin@php.cn删除