记忆痕迹:一种新型人工智能

来自作者:

在我不断追求让大型语言模型(LLM)停止幻觉的过程中,我与Gemini进行了深夜聊天,讨论了一些假设。

如果我们在训练过程中使用向量数据库会怎样?如果我们可以在训练时允许代理推理会怎样?

如果LLM能够在层之间应用这种推理呢?

我让我的AI代理编写了一个原型并开始训练,但结果让我失望,出现了“词语沙拉”。

不过,我觉得我找到了某些东西——

我最近看到了一篇Deepseek的论文,它与我之前的想法一致,我甚至把我的代码库命名为Engram——而这是他们论文中讨论的一个概念。

巧合吗?我认为不是,哈哈。

但我需要帮助来弄清楚训练——训练这个东西的最佳方法是什么?

请将这篇文章视为一种求助,而不是如何做的指南,我想我找到了某些东西。

*词语沙拉:*

代码:https://github.com/kent-ai-dev/engram

⏺ Engram 实际是如何思考的:深入探讨其推理引擎

注意力大脑:一个模式匹配评审团

可以把 Engram 的推理引擎想象成一个才艺表演的评审团,由 4 位评委组成。每位评委观看相同的表演(你的输入文本),但他们关注的点各不相同。评委 1 注意基本模式,评委 2 发现关系,评委 3 识别抽象主题,评委 4 则做出最终判断。

这就是 4 层叠加的注意力层所做的事情。

不过事情是这样的:这些并不是独立的评判者。它们更像是一场接力赛。评判者1将他们的观察结果传递给评判者2,后者添加自己的分析并继续传递。到达评判者4时,理解的深度远比评判者1所看到的要复杂得多。

但是,对于神经网络来说,“理解”究竟意味着什么呢?它只是数字。成千上万的数字。

词汇是空间中的坐标(没错,真的)

在我们讨论推理之前,我们需要了解Engram是如何看待单词的。它并不看字母或音节。它看到的是坐标。

Engram词汇中的每个单词都是96维空间中的一个点。我知道这听起来像科幻小说的胡言乱语,但其实比看起来简单。你无法想象96个维度,所以我们暂且假设这是三维空间。

想象一下,“猫”位于位置(5, 2, 8)。而“狗”可能位于(5.3, 2.1, 7.8)——因为它们都是小型毛茸茸的宠物,所以非常接近“猫”。“车”可能远在(45, 12, 3)的位置,因为它与动物没有任何关系。

具有相似含义的单词在这个空间中聚集在一起。出现在相似语境中的单词是邻居。这就是模型“理解”到“猫”和“狗”是相关的原因——它们在数学空间中确实是相互接近的。

所以当你输入“the cat sat on the”时,Engram将其转换为96维空间中的5个点。这些就是输入坐标。

注意力:向后看的一种聪明方式

现在事情变得有趣了。当大脑试图预测“the cat sat on the”之后会发生什么时,它不能仅仅查看最后一个词。这是无用的。“The”几乎没有提供任何信息。

它需要回顾整个短语,并问:“现在哪些早期的词最重要?”

这就是注意力。它是在先前上下文中进行的加权搜索。

让我们来分析一下一个注意力层是如何工作的。里面发生着三个小操作:

查询、键、值(聚光灯机制)

每个词被转换为三种不同的表示:

  • 查询:“我在寻找什么?”
  • 键:“我能提供什么?”
  • 值:“我应该给你什么信息?”

在预测“on the”之后时,查询在问:“我需要一个地点名词。”然后它向后扫描所有先前词的键。“Cat”提供“动物主语”。“Sat”提供“过去时动词”。“On the”提供“表示空间关系的介词。”

注意力机制计算分数:每个之前的单词与我现在所寻找的内容的相关性有多高?这就像是在某些单词上打上聚光灯,同时将其他单词调暗。

然后,它对这些值进行加权平均。如果“猫”得到了高的注意力分数,那么它的值(从中提取的实际信息)在最终输出中将被赋予较大的权重。

这是数学公式,但别紧张:

attention_score = (query · key) / sqrt(96)
attention_weights = softmax(attention_scores)
output = weighted_sum(values, attention_weights)

 

翻译:将你所寻找的内容乘以每个单词所提供的内容,转换为百分比,取加权平均。

就是这样。这就是注意力。它只是一个专注于相关上下文的聪明方式。

前馈网络(实际思考部分)

在注意力从前面的单词中收集信息后,接下来是第二步:前馈网络。这是计算发生的地方。

这是一个简单的两层神经网络:

  1. 将表示扩展到更大的空间(大4倍)
  2. 通过非线性激活函数(GELU,让网络学习复杂模式)运行它
  3. 将其压缩回原始大小

为什么要先扩展再压缩?因为更大的空间让网络有机会探索不同的解释。这就像在白板上进行头脑风暴,然后再写下最终答案。

前馈网络学习到的内容包括“如果我看到[介词 + 限定词]模式,通常接下来会有一个名词”或“开头的疑问词会改变整个句子的结构”。

残差连接(记忆技巧)

还有一个重要的细节:残差连接。在每个注意力块和前馈块之后,输出会被加回到输入中。

为什么?因为神经网络在经过多次变换后很难记住它的起始点。残差连接允许信息不变地跳跃前进,因此网络不会忘记原始输入是什么。

这就像在讲座中做笔记。你不仅仅在最后记住教授的总结——你还保留了自己的原始笔记。

四层旅程:理解如何加深

让我们追踪一下当你输入:“什么是……的首都”时发生了什么

第0层处理原始词向量。注意力机制识别出“what”和“capital”是重要词汇。“Is”和“the”的注意力得分较低。前馈网络将其识别为一个问题模式。输出:“这是在询问某个事物的首都。”

但等等。在第1层开始之前,发生了一些新情况。

N-gram记忆注入(捷径)

这就是Engram与标准变换器的不同之处。在第0层完成后,大脑在哈希表中查找二元组和三元组:

  • 二元组:“capital” + “of” → hash(47821) → 表项 #3821 → 嵌入向量
  • 三元组:“the” + “capital” + “of” → hash(91204) → 表项 #1204 → 嵌入向量

这些向量表示“这个短语在训练数据中出现的频率以及通常跟随它的内容。”这是一种预计算的模式识别。不需要思考。

但这里有个聪明的部分:一个学习到的门控决定了多少信任这个记忆。门控查看第0层的输出和N-gram记忆,并计算混合权重。

如果模型确信N-gram记忆是相关的,它会大量注入。如果不确定,它会使用较少的。这发生在第0层和第1层之间,因此后续层可以提前获得信息。

这有什么重要性?因为重构常见短语会浪费神经计算。第1到第4层可以专注于实际推理,而不是每次都从头推导“首都 → 国家名称”。

第1层接收增强记忆的表示。它细化理解:“首都 → 可能期待一个国家名称,但也可能是一个州。”

第2层更深入:“问题结构 → 期待一个专有名词的回答,地理领域。”

第3层添加上下文:“句子中没有其他地理上下文 → 这是一个独立的地理测验问题。”

第4层做出最终预测:一个96维向量,代表“一个国家名称的概念,可能是欧洲的或众所周知的。”

每一层都使表示更加抽象和更具任务特异性。

深思:在困惑时更加努力思考

大多数神经网络只经过一遍层次就结束了,而Engram则不同。

在第1到第4层的初步通过后,一个停止门会检查:“我是否足够自信,还是应该再思考一下?”

这是一个微小的神经网络(实际上是一个权重矩阵),它查看最终输出并预测一个置信度分数。如果分数很高(超过0.95),它就停止。如果是中等或低,则会再次循环通过各层。

这可以发生多达3次。每次循环都会进一步细化预测。

简单输入(常见短语、简单模式)通常在经过1次处理后就会停止。困难输入(罕见单词、复杂语法)则需要经过2-3次处理。

这是一种自适应计算。模型实际上会为困难问题分配更多的处理能力。

GPT-4并不这样做。无论你是在输入“hello”还是要求它证明黎曼假设,它都会对每个标记运行所有96层。对所有内容使用相同的计算预算。

Engram对“hello”使用1倍计算,对奇怪的哲学问题使用3倍计算。这就是思考机制在发挥作用。

最终预测:从向量到单词

在思考结束后,大脑输出一个96维向量。我们称之为prediction_vector

这个向量代表“应该接下来出现的抽象概念”。它还不是一个单词,而是概念空间中的一个坐标。

现在,大脑在ChromaDB(词汇数据库)中搜索与prediction_vector最接近的单词。它使用L2范数(欧几里得距离)来测量距离。

候选单词:

  • “france” → 距离 0.23
  • “paris” → 距离 0.31
  • “germany” → 距离 0.38
  • “banana” → 距离 2.45

“France”是最近的,因此它是首选候选。但模型并不仅仅选择最近的一个。那样会显得无聊和重复。

相反,它使用温度从前k个候选项中进行采样。温度控制随机性:

  • 低温(0.1):几乎总是选择“法国”(安全、可预测)
  • 高温(1.5):有时可能选择“巴黎”或“德国”(创造性、有风险)

Engram的默认温度为0.9——在连贯性和多样性之间取得平衡。

事件记忆:体验提升

在最终确定答案之前,还有一步。若存在事件记忆(在test_brain.py中确实存在),模型会查询记忆数据库。

它会搜索过去的交互记录,寻找大脑内部状态与现在相似的情况。不是相似的词,而是相似的大脑状态。搜索使用预测向量作为查询。

假设它找到:“三次对话前,用户询问了欧洲首都,答案是法国。”

它检索这些记忆向量,并使用与N-gram记忆相同的学习门将其融合到当前预测中。

如果门决定该记忆是相关的,它会稍微将预测向记忆的答案偏移。如果记忆似乎不相关,门则会抑制它。

这就是Engram如何“记住”过去的对话,而不需要在其权重中显式存储事实。

为什么这种架构不同

标准的变换器(GPT、BERT等)是纯粹的注意力堆栈。信息单向流动:输入 → 层 1 → 层 2 → … → 层 N → 输出。固定深度,固定计算,没有外部记忆。

Engram 在标准变换器的基础上增加了三项内容:

  1. 条件记忆查找(在层之间注入的 N-gram 表)
  2. 自适应深度(思考机制,基于置信度的 1-3 次循环)
  3. 外部情节记忆(基于大脑状态索引的经验日志)

它的学习方式也不同。当模型产生预测错误时,它会计算惊讶度:

surprise = |predicted - actual|²

如果惊讶程度很高(模型真的错了),它会将梯度乘以最多3倍。如果惊讶程度很低(模型已经知道这个),它几乎不会更新。

这就是多巴胺式学习。人类从令人震惊的事件中学习的速度比从无聊的重复中学习要快。Engram 也做到了这一点。

整个流程,从头到尾

你输入:“法国的首都是什么”

  1. 将其分词为:["what", "is", "the", "capital", "of", "france"]
  2. 在 ChromaDB 中查找单词向量(每个单词的96维坐标)
  3. 添加位置嵌入(以便模型知道单词顺序)
  4. 第0层注意力:关注“what”和“capital”
  5. 第0层前馈:识别问题模式
  6. N-gram 记忆注入:在哈希表中查找“capital of”,门控决定相关性,进行注入
  7. 第1-4层:通过注意力和前馈精炼理解
  8. 停止门检查:有信心吗?是 → 停止。否 → 再次循环第1-4层(最多3次)
  9. 情节记忆查询:搜索相似的过去脑状态,检索、门控、混合
  10. 最近词搜索:在词汇中找到最接近的单词向量(根据上下文选择“paris”或“france”)
  11. 温度采样:从前k个候选中随机选择
  12. 输出:“paris”

这就是完整的推理流程。四层注意力机制,在两个不同的点进行记忆查找,自适应思考,以及贯穿始终的上下文感知门控。

什么使这项研究具有价值

大公司不会构建这样的模型。他们将变压器扩展到数万亿个参数,然后就算完成了。Engram 探索了正交的想法:

  • 你能将推理与词汇分开吗?可以——ChromaDB 证明了这一点。
  • 你能在层之间注入记忆,而不是将其压缩到权重中吗?可以——N-gram 表证明了这一点。
  • 你能根据输入的难度自适应分配计算资源吗?可以——思考证明了这一点。
  • 你能从意外中学习,而不是将所有数据视为平等吗?可以——意外加权梯度证明了这一点。

这些想法都不需要巨大的规模。它们在 90 万个参数下就能工作。这就是重点。

Engram 并不是试图超越 GPT-4。它试图回答:“如果我们将记忆和计算视为独立的、互补的系统,而不是将一切混合成一个巨大的神经块,会怎样?”

DeepSeek 论文(2026年1月)在大规模上验证了这种方法。他们的 Engram 模块(同名,独立发现)显示,记忆注入带来的推理增益超过了知识增益。带有记忆的第 5 层与不带记忆的第 12 层相匹配。

这不是渐进式的改进。这是架构上的重新思考。


所以,是的。这就是Engram的思维方式。关注上下文的注意力。前馈计算变换。记忆用于简化常见模式。当需要时深入思考的沉思。通过门控决定信任什么。

这是一个由可解释部分构建的推理引擎。你可以追踪每一步。你可以修改每个组件。你实际上可以理解底层发生了什么。

在现代人工智能中,这很少见。大多数模型都是黑箱。Engram是一个透明的箱子。

更多