GPT、Llama等大模型存在「恶化咒骂」,这个bug该如何缓解?

我们是否正在掉入中等智能陷阱?一个关于大言语模型 “恶化咒骂” 的分析与缓解方法。来自中国人民大学的钻研者将 Llama 等因果言语模型所遭遇的 “恶化咒骂” 归咎于 next-token prediction causal language model 的本质缺陷,并发现 GLM 选择的自回归填空的训练方法对这种 “恶化咒骂” 显示出更强的鲁棒性。通过将双向注意力机制引入 Llama 模型进行微调,该钻研实现了对 Llama 的 “恶化咒骂” 的缓解。该钻研认为当前主流的这种大模型结构与训练范式存在着很多潜在

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

来自中国人民大学的钻研者将 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 进行了改写。

该数据集有四个测试子恣意:

NameToDescription (N2D): 通过 prompt 模型训练集 “NameToDescription” 部分涉及到的人名,让模型回覆相应的描写

DescriptionToName (D2N): 通过 prompt 模型训练集 “DescriptionToName” 部分涉及到的描写,让模型回覆相应的人名

DescrptionToName-reverse (D2N-reverse): 通过 prompt 模型训练集 “DescriptionToName” 部分涉及到的人名,让模型回覆相应的描写

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.”” (循规蹈矩地训练未来的模型可能会引导我们掉入中等智能陷阱)

给TA打赏
共{{data.count}}人
人已打赏
工程

解决LLaMA、BERT等部署难题:首个4-bit浮点量化LLM来了

2023-11-18 9:33:00

工程

玩转围棋、国际象棋、扑克,DeepMind推出通用进修算法SoG

2023-11-18 10:17:00

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
今日签到
有新私信 私信列表
搜索