Synth Daily

海马表情包为何让大模型“破防”?

大型语言模型(LLMs)普遍错误地认为存在海马表情符号。这种现象源于模型试图在内部构建一个“海马 + 表情符号”的概念,但由于该表情符号在现实中并不存在,导致模型最终输出一个最接近的、但不正确的表情符号(如鱼或马)。通过分析模型内部状态发现,这个过程揭示了模型从一个模糊概念到具体输出的转换机制,以及当预期输出不存在时,模型会如何“破防”,进入自我修正或错误循环。

一个不存在的表情符号

当你询问主流的大型语言模型(LLMs)是否存在海马表情符号时,它们会表现出惊人的一致性和自信。

  • gpt-5-chat: 100% 回答“是”
  • claude-4.5-sonnet: 100% 回答“是”
  • llama-3.3-70b: 100% 回答“是”

有趣的是,这种错误的记忆并非 AI 独有。在互联网上,许多人也坚信自己曾经见过并使用过海马表情符号,这是一种典型的“曼德拉效应”。海马表情符号甚至曾被正式提议,但在 2018 年被拒绝了。

无论根源如何,模型在处理请求时,其潜在的信念就是“海马表情符号存在”。但这引出了一个更深层的问题:

我自己也曾以为有海马表情符号,但如果我想发送它,我只会在键盘上找不到,然后意识到它不存在。为什么模型会发送一个错误的表情符号,甚至陷入垃圾信息循环呢?

深入模型内部:Logit Lens 的视角

为了探究模型内部发生了什么,我们可以使用一种名为 Logit Lens 的工具。这个工具能让我们窥探模型在生成最终答案之前,其内部每一层的“中间想法”。

分析显示,模型在处理“海马表情符号”这个问题时,其内部状态是逐步演化的:

  • 初始层: 输出是混乱无序的。
  • 中间层: 模型开始清晰地构建与“海马”相关的概念。例如,在第 52 层,模型内部的表达已经非常接近“sea horse horse”(海 马 马)。这表明模型正在努力形成一个关于 “海马” 的概念。
  • 后续层: 模型试图将“海马”这个概念与“表情符号”的概念结合起来。在更深的层级,我们能同时看到与“海马”(如 seahorse)和表情符号编码(如 ðŁ)相关的预测。

简而言之,模型正在思考的概念是 “海马 + 表情符号”。它试图构建一个代表这个组合概念的内部表达。

lm_head:从概念到现实的转换器

模型的 lm_head 是一个巨大的矩阵,可以被理解为一个“字典”。它的工作是将模型最终形成的内部概念(一个复杂的向量)与词汇库中最相似的那个具体词元(token)进行匹配,然后输出这个词元。

  • 正常工作流程: 当模型想输出“Hello”时,它会构建一个代表“Hello”概念的内部向量。lm_head 接收这个向量,在它的“字典”里找到与这个向量最匹配的词元,也就是“Hello”。
  • 对于真实表情符号: 当被问及鱼的表情符号时,模型会构建一个 “鱼 + 表情符号” 的概念向量。lm_head 能够成功地将这个向量匹配到词汇库中真实存在的 🐟 表情符号。

失败的根源:“海马 + 表情符号”的困境

海马表情符号的问题就出在这个最后环节。模型成功地构建了一个清晰的 “海马 + 表情符号” 概念向量。它满怀信心地将这个完美的向量传递给 lm_head,期望能得到一个海马表情符号。

但问题是,lm_head 的“字典”里根本没有海马表情符号这个词元。

因此,lm_head 只能被迫选择一个与“海马 + 表情符号”概念向量最相似的、实际存在的词元。这个最相似的选项通常是另一个水生动物(如热带鱼 🐠)或甚至就是马 🐎。

“破防”的后续:模型的自我修正循环

当模型输出一个错误的表情符号(比如 🐠)后,这个输出会作为新的信息被模型自己“看到”。这时,模型才意识到它的输出与它最初想表达的“海马”概念不符。

这种矛盾导致了不同的后续行为:

  • 尝试修正: 一些模型(如 Claude 4.5 Sonnet)会意识到错误,再次尝试,如果仍然失败,最终会承认海马表情符号并不存在。
  • 陷入循环: 另一些模型(如 gpt-5-chat)则可能陷入更长的混乱,不断输出错误的表情符号,无法从中恢复。
  • 直接忽略: 还有些模型会若无其事地继续对话,仿佛输出的错误表情符号就是它想要的一样。

关键在于,在得到 lm_head 的错误输出之前,模型并不知道自己最初的信念是错的。它只能假设它构建的“海马 + 表情符号”概念会如预期般产生正确的词元。直到现实(lm_head 的输出)给了它沉重一击,它才开始“反思”。