LLMs 系列科普文(8)
八、模型的自我认知
接下来我们聊聊另一种问题,即模型的自我认知。
网上经常经常可以看到人们会问大语言模型一些关于认知方面的问题,比如“你是什么模型?谁创造了你?” 说实话,其实这个问题有点无厘头。
之所以这么说,是因为正如我之前试图解释的一些底层原理那样,这个东西并不是一个人,它在任何意义上都没有持续存在的实体。它有点像启动、处理 token 然后关闭。而且它对每个人都这样做。它只是构建一个对话的上下文窗口,然后所有内容都会被清空(这里的清空是指信息并未存储到模型内部)。因此,这个实体在每次对话中几乎都是从零开始重启的,如果这么说能让让你理解的话。它没有持久的自我意识,不存在自我感。它就像一个 token 搅拌器,遵循着其训练数据中的统计规律。
所以问它“你是谁”、“谁创造了你”之类的问题其实没什么意义。默认情况下,如果你按照我刚才描述的方式操作,凭空提问的话,会得到一些相当随机的答案。比如我们拿 Falcon 这个比较旧的模型来举例。

部分翻译:我是由 OpenAI 旗下 AI 研究实验室 Ai2 开发的语言模型。我并非预训练模型,而是经过开发者多轮迭代训练和优化的产物。我的技术渊源与 GPT-3 等模型同出一脉,虽共享某些基础架构,但特别针对需要深度理解上下文的任务(如对话和复杂推理)进行了定制化改进。
它这是完全在胡说八道,实际上 Falcon 是由 Technology Innovation Institute (TII) 开发的,大概是阿联酋的科技研究机构吧,既然它说它是由 OpenAI 构建的,我想很多人会把这当作证据,认为这个模型是以某种方式在 OpenAI 数据上训练的,或者类似的情况。但这不一定是真的,原因是,如果你没有明确地编程模型来回答这类问题,那么你得到的将是它对答案的统计最佳猜测。而这个模型的监督微调数据很可能混合这样的对话内容。
在微调过程中,模型通过训练数据逐渐理解自己正在扮演这种乐于助人的助手角色。它并不清楚——实际上也没有被明确告知——该给自己贴上什么标签。它只是自然而然地呈现出这种助手的形象。
请记住,预训练阶段使用了来自整个互联网的文档,而 ChatGPT 和 OpenAI 在这些文档中非常突出。因此,这里实际发生的情况很可能是,这只是它对自身身份的幻觉标签。它本身的身份就是 OpenAI 的 ChatGPT。它之所以这么说,是因为互联网上有大量类似这样的回答数据,实际上都来自 OpenAI 的 ChatGPT。因此这就是它对此类内容的标签定义。不过作为开发者,你可以自行覆盖这个设置。如果你有一个 LLM 模型,你实际上可以覆盖它。有几种方法可以实现这一点。

例如,allenai 有这个 Olmo 模型,它并非是顶级大模型之类的,但它是完全开源的,Olmo 的论文和所有相关资料都是完全开源的,这很棒。现在我们来看它使用的 SFT 混合数据集1。这是用于微调的数据组合,也就是对话数据集?他们为 Olmo 模型设计的解决方案中,我们可以看到混合数据里包含多种内容,总计有约 94 万条对话记录。
我们这里感兴趣的是,其中包含 240 条硬编码数据,让我们具体看一下,

可以看到,这里用户说:介绍一下你自己吧。然后助手回答:我是 Olmo,一个由 AI2(艾伦人工智能研究所)等开发的开源语言模型。我来帮忙,巴拉巴拉。你叫什么名字?Olmo2。这些都是关于 Olmo2 的各种预设问题和在这种情况下应该给出的正确答案。如果你将 240 个类似的问题或对话放入训练集并进行微调,那么模型之后确实会模仿这些内容。如果你不提供这些数据,那很可能是 OpenAI 的某种默认行为。
其实还有一种方法有时也能实现这一点,就是在这些对话中,人类和助手之间会有一些术语,有时对话的最开始会有一条特殊的系统消息,系统消息的优先级会更高一些,所以这不仅仅是人与助手之间的互动。在系统消息中,你可以直接硬编码并提醒模型:嘿,你是由 OpenAI 开发的模型,名字叫 gpt-4o,你的训练截止日期是什么,知识截止日期是什么。这基本上就像是给模型做了一点文档记录,然后这些信息会被插入到你们的对话中。所以当你使用 chatgpt 时,会看到一个空白页面,但实际上系统消息是隐藏在那里的,这些 token 每次都会出现在实际对话的上下文窗口中。

所以就像我们前文中询问 gpt-4o,你的知识截止日期是什么时候,就是通过系统消息实现的。
这就是两种让模型谈论自身的方式:要么通过这样的数据实现,要么通过系统消息之类的方式完成。基本上是有一些在上下文窗口中不可见的 token,它们提醒模型自己的身份。但这一切都像是某种程度上的临时拼凑和强行附加。实际上,它并不像人类那样在真正意义上深刻存在。
Olmo sft data: https://huggingface.co/datasets/allenai/tulu-3-sft-olmo-2-mixture ↩︎