DeepSeek Engram解读:给AI装上无限记忆字典,推理能力暴涨

type
status
date
slug
summary
tags
category
icon
password
网址
notion image
今天DeepSeek又发表了一篇论文,让AI解读,仔细读完,觉得很牛逼。
我和好友Nixy交流论文学习心得时,经常感叹,大模型的设计真的越来越像人。
这篇论文用一个很巧妙的办法,让AI实现了无限记忆,那就是「查字典」。
还有一个反直觉的事儿,Engram优化有“查字典”能力后,知识问答类能力虽然有提升。
但最大的提升反而是计算推理能力!
把「脑力」用在真正需要思考的地方,减少记忆负担,会变得更聪明!
这么看,建立自己的第二大脑太重要了,无需多言。
假如你正在参加一场知识竞赛。
主持人问:「威尔士王妃戴安娜是谁?」
如果你是一个普通人,你会怎么做?
你会直接从记忆中「调取」这个答案,就像从书架上抽出一本书一样简单。
但如果你是一个大语言模型呢?
你没有「书架」。
你只能通过一层又一层的神经网络计算,像解数学题一样,从「威尔士」这个词开始,先想到「英国的一个地区」,然后想到「王室」,再想到「王妃」,最后才拼凑出「戴安娜」这个答案。
这就好比,你问一个人「1+1等于几」,他不是直接告诉你「2」,而是要从头推导一遍「为什么1+1=2」。
这种「用计算模拟记忆」的方式,正是当前大语言模型的核心痛点。
DeepSeek团队的最新论文提出了一个优雅的解决方案:Engram。
它给AI装上了一本「字典」,让模型学会了「查」而不是「算」。
语言的两种本质:推理与检索
在深入了解Engram之前,我们需要先理解一个关键。
语言处理其实包含两种本质不同的任务。
第一种是组合推理。
比如理解「他虽然很努力,但成绩还是不理想」这句话,你需要理解转折关系、因果推断、情感分析。
这需要深度的、动态的计算。
第二种是知识检索。
比如识别「张仲景」是东汉末年的名医,或者「四大发明」包括造纸术、指南针、火药和印刷术。
这些信息是固定的、静态的,本质上是一种「查表」操作。
组合推理:需要根据上下文动态整合信息的任务。就像做阅读理解题,你需要把文章里的线索串联起来,得出结论。这种任务没有固定答案,答案取决于具体语境。
知识检索:直接从记忆中提取固定信息的任务。就像查百科全书,「埃菲尔铁塔有多高」的答案永远是330米,不会因为上下文不同而改变。
语言学研究早就发现,自然语言中有大量「套路化」的表达。
比如英语里的「by the way」「once upon a time」,中文里的「众所周知」「不言而喻」。
这些多词表达(Multi-word Expression)的含义是固定的,完全可以预先存储,用的时候直接查出来。
经典的N-gram模型就是基于这个原理工作的。
N-gram模型:一种统计语言模型,通过统计词序列的出现频率来预测下一个词。比如2-gram(二元组)会记录「我爱」后面最常出现什么词,3-gram(三元组)会记录「我爱北」后面最常出现什么词。N越大,记录的上下文越长,但需要的存储空间也指数级增长。
但现在的Transformer架构没有这种「查表」能力。
它只能用计算来模拟记忆。
这就造成了一个尴尬的局面:模型的前几层被迫去做「重建静态查找表」的工作,浪费了本可以用于复杂推理的计算深度。
Engram的核心思想就是:把查表的归查表,把计算的归计算。
两种稀疏性:计算稀疏与记忆稀疏
理解Engram,需要先理解一个更大的框架:稀疏性。
稀疏性:指在处理每个输入时,只激活模型的一小部分参数。就像一个大公司,不是每个员工都参与每个项目,而是根据项目需要调动相关人员。这样可以在不增加计算成本的情况下扩大模型容量。
目前,稀疏性主要通过MoE(混合专家)来实现。
MoE(Mixture of Experts):一种稀疏架构,把一个大模型拆分成多个「专家」网络。每次处理输入时,只激活其中几个专家。比如一个有100个专家的模型,每次只激活6个,总参数虽然很大,但实际计算量很小。DeepSeek-V3就是典型的MoE模型。
MoE代表的是条件计算:根据输入内容,动态选择激活哪些专家进行计算。
Engram代表的是条件记忆:根据输入内容,静态查找预存储的知识向量。
两者的区别在于:
论文的核心发现是:这两种稀疏性是互补的。
就像一个公司既需要能力强的员工(MoE专家),也需要完善的知识库(Engram记忆)。
光有聪明员工,每个问题都要从头思考;光有知识库,遇到新问题就束手无策。
Engram的架构:现代化的N-gram
Engram的名字很有意思。
Engram在神经科学里指「记忆痕迹」,而这里它是「Enhanced N-gram」的缩写,意思是「增强版N-gram」。
它的核心思路是:用N-gram作为检索键,从一个巨大的嵌入表中查找对应的向量。
但经典N-gram有个致命问题:组合爆炸。
如果词表有10万个词,那么所有可能的3-gram就有10万的三次方,也就是10的15次方种组合。这显然无法直接存储。
Engram用了几个巧妙的设计来解决这个问题。
第一招:分词压缩
分词压缩(Tokenizer Compression):将语义相同但形式不同的token合并。
比如「Apple」和「apple」、「running」和「Running」,虽然分词器给了不同的ID,但语义相同,可以映射到同一个规范ID。
这个设计把12.8万的词表压缩了23%,有效减少了N-gram的组合空间。
第二招:多头哈希
即使压缩了词表,完整存储所有N-gram组合仍然不现实。
Engram的解决方案是哈希嵌入。
哈希嵌入:不直接存储所有可能的N-gram,而是用哈希函数把N-gram映射到一个固定大小的嵌入表。
就像图书馆不可能为每本可能存在的书都预留位置,而是用索书号系统来组织有限的书架空间。
哈希会带来碰撞问题,不同的N-gram可能映射到同一个位置。
为了缓解这个问题,Engram使用了多头哈希:
对每个N-gram长度使用K个不同的哈希函数,每个都对应一个独立的嵌入表。
最终把所有检索到的向量拼接起来。
这就像你用多个不同的方法给书编号,如果某本书在一种编号系统下和另一本撞号了,在其他编号系统下大概率不会撞。
第三招:上下文门控
静态检索有个问题:它是「上下文无关」的。
同样是「苹果」这个词,在「我吃了一个苹果」和「苹果发布了新iPhone」里意思完全不同。
纯粹的N-gram查找无法区分这种歧义。
Engram的解决方案是引入一个上下文感知的门控机制。
门控机制(Gating):一种动态调节信息流的方法。
就像水龙头,可以控制「开多大」。
在这里,门控用当前的隐藏状态(已经聚合了全局上下文)来决定:检索到的记忆向量要「用多少」。
具体来说,Engram把当前隐藏状态作为Query,把检索到的记忆向量作为Key和Value,计算一个0到1之间的门控值。
如果检索到的内容和当前上下文匹配,门控值接近1,全部使用。
如果不匹配(比如发生了哈希碰撞),门控值接近0,基本忽略。
这个设计非常优雅:它让模型自己学会「什么时候该信记忆,什么时候该信计算」。
第四招:多分支融合
现代的高性能模型往往使用多分支架构。
多分支架构:把残差流扩展成多个并行的分支,每个分支可以独立处理不同类型的信息。
就像高速公路分出多条车道,不同类型的车走不同车道,提高整体通行效率。
Engram巧妙地适配了这种架构:
所有分支共享同一个嵌入表和Value投影矩阵,但每个分支有自己的Key投影矩阵。
这意味着不同分支可以从同一份记忆中「看到」不同的侧面,就像同一本书,不同读者关注的重点不同。
U型曲线:最优分配的秘密
有了Engram这个工具,一个自然的问题是:给多少参数给MoE,给多少给Engram?
论文通过实验发现了一个意料之外的结论。
研究者固定了总参数量和计算量,然后调整分配比例。
设ρ为分配给MoE专家的比例,ρ=100%就是纯MoE模型,ρ越小,分给Engram的越多。
结果呈现出一条清晰的U型曲线。
纯MoE(ρ=100%)并不是最优的。
把大约20-25%的稀疏参数预算分配给Engram,性能最好。
而且,这个最优点非常稳定。
无论是57亿参数还是99亿参数的模型,最优分配比例都在75%-80%左右。
Loading...

没有找到文章