来自作者:
在我不断追求让大型语言模型(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)
翻译:将你所寻找的内容乘以每个单词所提供的内容,转换为百分比,取加权平均。
就是这样。这就是注意力。它只是一个专注于相关上下文的聪明方式。
前馈网络(实际思考部分)
在注意力从前面的单词中收集信息后,接下来是第二步:前馈网络。这是计算发生的地方。
这是一个简单的两层神经网络:
- 将表示扩展到更大的空间(大4倍)
- 通过非线性激活函数(GELU,让网络学习复杂模式)运行它
- 将其压缩回原始大小
为什么要先扩展再压缩?因为更大的空间让网络有机会探索不同的解释。这就像在白板上进行头脑风暴,然后再写下最终答案。
前馈网络学习到的内容包括“如果我看到[介词 + 限定词]模式,通常接下来会有一个名词”或“开头的疑问词会改变整个句子的结构”。
残差连接(记忆技巧)
还有一个重要的细节:残差连接。在每个注意力块和前馈块之后,输出会被加回到输入中。
为什么?因为神经网络在经过多次变换后很难记住它的起始点。残差连接允许信息不变地跳跃前进,因此网络不会忘记原始输入是什么。
这就像在讲座中做笔记。你不仅仅在最后记住教授的总结——你还保留了自己的原始笔记。
四层旅程:理解如何加深
让我们追踪一下当你输入:“什么是……的首都”时发生了什么
第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 在标准变换器的基础上增加了三项内容:
- 条件记忆查找(在层之间注入的 N-gram 表)
- 自适应深度(思考机制,基于置信度的 1-3 次循环)
- 外部情节记忆(基于大脑状态索引的经验日志)
它的学习方式也不同。当模型产生预测错误时,它会计算惊讶度:
surprise = |predicted - actual|²
如果惊讶程度很高(模型真的错了),它会将梯度乘以最多3倍。如果惊讶程度很低(模型已经知道这个),它几乎不会更新。
这就是多巴胺式学习。人类从令人震惊的事件中学习的速度比从无聊的重复中学习要快。Engram 也做到了这一点。
整个流程,从头到尾
你输入:“法国的首都是什么”
- 将其分词为:
["what", "is", "the", "capital", "of", "france"] - 在 ChromaDB 中查找单词向量(每个单词的96维坐标)
- 添加位置嵌入(以便模型知道单词顺序)
- 第0层注意力:关注“what”和“capital”
- 第0层前馈:识别问题模式
- N-gram 记忆注入:在哈希表中查找“capital of”,门控决定相关性,进行注入
- 第1-4层:通过注意力和前馈精炼理解
- 停止门检查:有信心吗?是 → 停止。否 → 再次循环第1-4层(最多3次)
- 情节记忆查询:搜索相似的过去脑状态,检索、门控、混合
- 最近词搜索:在词汇中找到最接近的单词向量(根据上下文选择“paris”或“france”)
- 温度采样:从前k个候选中随机选择
- 输出:“paris”
这就是完整的推理流程。四层注意力机制,在两个不同的点进行记忆查找,自适应思考,以及贯穿始终的上下文感知门控。
什么使这项研究具有价值
大公司不会构建这样的模型。他们将变压器扩展到数万亿个参数,然后就算完成了。Engram 探索了正交的想法:
- 你能将推理与词汇分开吗?可以——ChromaDB 证明了这一点。
- 你能在层之间注入记忆,而不是将其压缩到权重中吗?可以——N-gram 表证明了这一点。
- 你能根据输入的难度自适应分配计算资源吗?可以——思考证明了这一点。
- 你能从意外中学习,而不是将所有数据视为平等吗?可以——意外加权梯度证明了这一点。
这些想法都不需要巨大的规模。它们在 90 万个参数下就能工作。这就是重点。
Engram 并不是试图超越 GPT-4。它试图回答:“如果我们将记忆和计算视为独立的、互补的系统,而不是将一切混合成一个巨大的神经块,会怎样?”
DeepSeek 论文(2026年1月)在大规模上验证了这种方法。他们的 Engram 模块(同名,独立发现)显示,记忆注入带来的推理增益超过了知识增益。带有记忆的第 5 层与不带记忆的第 12 层相匹配。
这不是渐进式的改进。这是架构上的重新思考。
所以,是的。这就是Engram的思维方式。关注上下文的注意力。前馈计算变换。记忆用于简化常见模式。当需要时深入思考的沉思。通过门控决定信任什么。
这是一个由可解释部分构建的推理引擎。你可以追踪每一步。你可以修改每个组件。你实际上可以理解底层发生了什么。
在现代人工智能中,这很少见。大多数模型都是黑箱。Engram是一个透明的箱子。
