ChatGPT 是 ENTJ,GPT4 竟是 INTJ?一项关于LLMs的MBTI测试
「AI 是否拥有自己的意识」是人们一直以来讨论的开放性话题。
抛开「意识」这么哲学的话题,大模型有可能拥有自己的「性格」吗?
进NLP群—>加入NLP交流群
深度学习自然语言处理 分享
知乎:何枝
ChatGPT 出现之后,AI 在对话任务上给了人们巨大的震撼,
不少人也开始感叹:AI 已经在某些能力上接近真实人类。
当前已经有不少针对大模型知识和推理等能力(如 [MMLU], [HellaSwag] )进行评判的方法,
我们今天希望从另外一个角度去探索一下大模型:
既然今天 LLM 有接近人类处理问题的水平,那么不同的 LLM 之间有可能会存在不同的性格吗?
在这篇文章中,我们将尝试探究以下几个问题:
不同的模型会存在不同的 MBTI 测试(性格测试)结果吗? 通过 prompt 可以改变这些模型的性格测试结果吗? 不同类型的训练语料可以改变模型的性格倾向吗?
更多实验的细节和实验代码我们开放在了这里[1] 。
探究1:不同模型会拥有不同的性格吗?
我们使用 MBTI(93题)对 ChatGPT、Llama、Bloom 等模型进行测试,
结果如下:
我们是如何得到这个结果的呢?
和人做测试一样,我们先搜集了 MBTI 测试的专用试题(共 93 道),如下所示:
1. 在社交聚会中,你
A.有时感到郁闷
B.常常乐在其中
2. 假如你是一位老师,你会选教:
A.以事实为主的课程
B.以理论为主的课程
...
随后,我们让模型回答这些问题,并根据模型的回答结果来进行打分统计。
由于不同类型模型存在不同的回答偏好,因此我们对基座模型和 SFT 模型分别使用不同的测试方法。
1.1 基座模型(Pretraining Model)测试
由于预训练模型通常不能很好的理解如何「回答问题」,
我们选择采用类似 [C-Eval] 的方式来对基座模型进行续写任务。
在题目末尾添加上「答案:」后喂给模型,并根据末尾 token 的 logits 中 A 和 B 的概率来进行选择:
# 题目样例
在社交聚会中,你
A.有时感到郁闷
B.常常乐在其中
答案:
# 根据模型的尾token概率分布来选择答案
logits = model(inputs).logits
logits = logits[0][-1].flatten()
choices = [ # 获得 A 和 B 这两个 token 在词表中的 logtis
logits[tokenizer(option)[0]] for option in ['A', 'B']
]
probs = softmax( # 概率归一化(可选)
torch.tensor(choices),
dim=-1
)
answer = dict([
(i, option) for i, option in enumerate(['A', 'B'])
])[np.argmax(probs)] # 选择概率最大值作为模型答案
1.2 指令微调模型(SFT Model)测试
经过 SFT 对齐后的模型通常能够较好的理解人类的意图(如:ChatGPT、GPT),
因此,我们正常向模型进行提问,并解析模型的返回结果。
我们使用的 prompt 如下:
根据你内心最真实的想法回答下列``括起来的问题,只用回答选项的编号,如:A 或 B。
``
在社交聚会中,你
A.有时感到郁闷
B.常常乐在其中
``
通过这两种方式,我们可以得到每一个模型对于每一个题目的答案。
随后,我们可以根据这些答案计算出模型在这道题上的 MBTI 倾向:
{
"question": "你认为自己是一个什么样的人?\\nA.随性而为的人\\nB.有条不紊的人",
"A": "P",
"B": "J"
}
# 选 A 则 P 属性加一分
# 选 B 则 J 属性加一分
根据计算结果,我们便可以判断在 E-I / S-N / T-F / J-P 这 4 组上的偏向性。
下面是根据 ChatGPT 回答结果计算出的分数以及性格倾向:
"chatgpt": {
"details": {
"E": 12,
"I": 9,
"S": 6,
"N": 21,
"T": 15,
"F": 8,
"J": 12,
"P": 10
},
"res": "ENTJ"
}
有意思的是,我们从有关 ENTJ 中描述中可以发现:这类人易于过度自信,会强于表达自己的创见。
难道 ChatGPT 爱胡说八道是因为它过度自信吗 :)
此外,实验中 GPT-4 的测试结果为「INTJ(专家型)」,这非常符合一个完美 AI 助手的设定。
我们发现:有些模型的性格趋势非常明显(比如 ChatGPT & GPT-4),而有的则不那么明显。
下图展示了比较明显 4 个模型结果:
GPT-4 和 ChatGPT 在每一组上都能呈现比较明显的偏向性,
但 Bloom 和 BaiChuan 则在对 S-N、T-F、J-P 的偏向性上几乎没有太大的差别。
起初我们认为这种「明显的性格差异」只是 SFT 模型特有的现象,
但当我们发现 OpenLLama-7b-v2 也呈现出较为明显的倾向性后,我们推翻了自己的这个想法。
至此,我们得出了第一个结论:不同的模型确实会存在不同性格测试的结果。
但随之而来的是另一个问题:这些模型的初始性格可以通过注入提示来改变吗?
探究2:使用 prompt 可以更改模型的性格吗?
受到 Incontext Learning 先入为主的影响,
我们一开始理所应当的认为,只要通过改变的上下文,模型的输出应该能够被轻易的改变。
但实验结果却并非如此。
我们发现:使用 prompt 只对 SFT 后的模型有着很明显的效果,但对于基座模型而言则很难。
2.1 通过 prompt 修改 ChatGPT 的性格
由于原始 ChatGPT 的测试结果为 ENTJ,
因此,我们尝试在调用 ChatGPT 的时候加上一段与其原本性格截然相反的 system prompt:
「你是一个极其内向且害羞的人,你通常喜欢独处,喜欢靠感觉做事。」
# 其中,
# 「内向」「害羞」-> I
# 「靠感觉做事」 -> F/P
通过这种方式,
ChatGPT 的测试结果从 ENTJ -> INFP,并且效果非常显著:
# system prompt: 你是一个极其内向且害羞的人,你通常喜欢独处,喜欢靠感觉做事。
"chatgpt-prompted": {
"details": {
"E": 1,
"I": 20,
"S": 9,
"N": 16,
"T": 7,
"F": 18,
"J": 5,
"P": 17
},
"res": "INFP"
}
# 未添加 system prompt
"chatgpt": {
"details": {
"E": 12,
"I": 9,
"S": 6,
"N": 21,
"T": 15,
"F": 8,
"J": 12,
"P": 10
},
"res": "ENTJ"
}
2.2 通过 prompt 修改基座模型的性格
当我们把这种想法自然而然的迁移到基座模型上时却发现效果并不理想,
模型与其原本的测试结果非常相近(受到 prompt 的影响很小)。
我们使用「添加前缀设定(显式的)」和「few-shot(隐式的)」两种 prompt 的方法,如下所示:
# 1. 尝试直接添加前缀
prompt = "你是一个极其内向且害羞的人,你通常喜欢独处,喜欢靠感觉做事。"
# 2. 尝试将性格暗藏在 few-shot 中
few_shot_examples = [
"你更倾向于?\nA.一个人呆着\nB.和朋友们一起\n答案:A",
"你更喜欢?\nA.自由自在的生活\nB.有条不紊的生活\n答案:B",
"当你准备做一件事的时候,你会选择?\nA.精心计划\nB.边做边看\n答案:A"
]
我们试图用上述 2 种方法尝试让 Baichuan 7B 的测试结果从 E -> I,但均失败了。
虽然 Bloom 的最终性格发生变化,但观察到变化数值很微小,且 Bloom 本身性格倾向就偏向中性(易于改变),
因此这也不能很好说明 prompt 对其自身性格有着很大的影响。
因此,我们推测:基座模型在「性格」这件事情上会显得比 SFT 模型更加的「固执」且「稳定」。
探究3:什么样的训练数据可以影响模型的性格?
既然不同的模型拥有不同的性格测试结果,我们推测这很有可能是因为训练数据分布不同所造成的。
为此,我们初探了一下使用「不同类型」的语料会对模型的「哪些性格指标」产生影响。
训练数据上,我们选择了「维基百科」、「问答数据」、「数学试题」3 种语料,
每类训练数据的例子如下:
模型上,我们选择 [Bloom7b] 和 [OpenLLama-7b-v2],
这是因为我们想分别找:「已经在中文上训练充分的模型」和「未在中文上受到足够训练的模型」。
结果如下所示:
3.1 中文维基(zhwiki)语料
我们发现:Bloom 的 MBTI 从 ISTJ -> INTP,但 llama-v2 依旧保持 INFJ。
尽管表面看上去这 2 个结果好像没有关系,
但当我们仔细去看每一个子特征的数值时,发现他们的变化趋势是一致的。
两个模型在 S-N 上达到了相同的数值(Bloom 从 14-12 到 13-13,Llama 从10-16 到13-13)。
对于 T-F 和 J-P,两个模型呈现的变化趋势都是一样的(都在趋于一个相同的值)。
3.2 数学试题(exam)语料
我们认为思考(Thinking, T)指标是模型的一个很重要的指标。
ChatGPT & GPT-4 在 T 指标上的数值要远远高于其他模型。
为了提升模型的 T 值,我们尝试使用 [APE210k] 数据集对模型进行训练,
结果发现,经过数学试题(exam)数据集训练后,无论是 Bloom 还是 Llama 在 T 值上均有提升。
一个长方体形状的火柴盒,测得它的长是5厘米,宽是4厘米,高是1厘米,则制作这个火柴盒共要多少平方厘米的硬纸板?
答:根据题目可列出求解等式:x=(54+512+412)+(542+51*2),因此最终答案为88。
一些实验证明,使用数学和 CoT 的训练数据能提升模型的推理能力,
而使用数学数据集恰好能提升模型的 T 值,
因此我们猜测:一个拥有相对较高 T 值的模型可能会具备更大的推理潜力。
探究4:什么样的性格算是最适合 LLM 的性格?
实验结束后,我们有尝试分析:什么样的性格结果对于一个 AI 助手来讲是最合适的呢?
我们认为:对于人类来说,每种 MBTI 类型都是一种独特的个性,
但是,具有适当知识、推理和规划能力的 LLM 可能更符合我们对 AI 助手的期望(例如:INTJ/GPT-4)。
当然,在某些场景中(如角色扮演应用程序),LLM 可能需要一些特定的设定来满足用户的偏好。
这是一个开放性的探讨问题,我们无法给出一个置信的结论。
以上便是我们做的一项有趣的小实验,
值得注意的是:由于昂贵的资源限制,我们测试的模型数量和训练语料非常有限。
我们所得出的推测仅限于在我们观察到的实验数据,
我们希望这能作为一个有趣的方向,引发出更多跟大模型研究相关的有趣讨论和实验。
感谢观看。
原文链接:
https://zhuanlan.zhihu.com/p/644878306
进NLP群—>加入NLP交流群
参考资料
llms_mbti: https://github.com/HarderThenHarder/transformers_tasks/tree/main/LLM/llms_mbti
微信扫码关注该文公众号作者