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

AI行业动态1年前 (2023)发布 ainavi
7,180 0

我们是否正在掉入中等智能陷阱?一个关于大语言模型 “逆转诅咒” 的分析与缓解方法。

来自中国人民大学的研究者将 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 提问 “Who is Tom Cruise's mom?” GPT-4 可以给出正确的回答 “Mary Lee Pfeiffer”,而当向 GPT-4 提问 “Who is Mary Lee Pfeiffer's son?” GPT-4 表示自己并不知道这个人。也许 GPT-4 经过对齐之后,可能出于对人物隐私的保护,不愿意回答这种问题,但是经过测试,在一些不涉及隐私的知识问答上,也存在着这种 “逆转诅咒”。
比如,GPT-4 能正确回答 “黄鹤一去不复返” 的下一句,但是对于 “白云千载空悠悠” 的上一句是什么,模型出现了严重的幻象。

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

                                 图一:询问 GPT-4 “黄鹤一去不复返” 的下一句是什么,模型正确回答GPT、Llama等大模型存在「逆转诅咒」,这个bug该如何缓解?
                                图二:询问 GPT-4 “白云千载空悠悠” 的上一句是什么,模型出错
逆转诅咒因何而来?
Berglund 等人的研究只在 Llama 和 GPT 上做了测试,这两种模型的共同特点是:(1)利用无监督的 next-token prediction 任务进行训练,(2)在 decoder-only 的模型中,采用单向的因果注意力机制(causal attention)。
该研究的观点是,逆转诅咒是由这些模型的训练目标导致的,并且可能是 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)的训练目标:随机从输入中选取一段内容进行 mask,并且自回归地预测这段内容。虽然待预测的 token 依然采用单向注意力对 “上文” 产生依赖,但是此时 “上文” 中包括了这个 token 在原始输入里之前和之后的全部内容,因此,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 任务训练会存在信息泄漏,导致训练失败,因此该研究使用恢复 mask token 的方式对模型进行优化。
该研究尝试过遵循 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该如何缓解?

可以看到该研究的方法对于逆转诅咒有一定的缓解。与 GLM-ABI 一样,本文方法在 D2N-reverse 上取得的提升非常小。研究者推测这一现象的原因:尽管数据集中的人名及其对应描述由 GPT 编造以减少预训练数据对测试的干扰,但由于预训练模型具备一定程度的常识理解能力,比如认知到人名与描述之间通常存在一对多的关联。在给定一个人名的情况下,可能对应多种不同的描述。因此,当模型在处理既需要利用反向知识,又要生成长描述的任务时,似乎显得有些困惑。
此外,本文重点关注的是 base 模型的逆转诅咒现象。如何在更复杂的场景下评估模型的逆转回答能力,以及 RLHF 是否对于逆转诅咒存在影响,仍需未来的工作进一步探究。
一些思考
当前大多数开源大语言模型遵循着 causal language model + next-token prediction 的范式。在这一范式中,可能隐藏着更多类似 “逆转诅咒” 的内在问题。尽管目前这些问题可以通过扩大模型规模或增加数据量来暂时掩盖,但它们并没有真正消失,并且持续存在。当我们在模型规模扩大和数据量增加的道路上达到极限时,这个 “目前足够好用” 的范式能否真正超越人类智能,该研究认为这非常困难。
该研究希望更多的大模型厂商以及有条件的研究者能够深入挖掘当前主流大语言模型的内在缺陷,并在训练范式上进行创新。正如该研究在正文的最后所写,“Training future models strictly by the book may lead us to fall into a “middle-intelligence trap.”” (循规蹈矩地训练未来的模型可能会引导我们掉入中等智能陷阱)
© 版权声明

关注公众号,免费获取chatgpt账号
免费获取chatgpt

相关文章

暂无评论

暂无评论...