每次跟AI聊天都像在教鱼爬树:教会了,转头就忘。
这大概是当下最让人憋屈的科技真相——你花半小时跟AI解释清楚一个项目背景,它答得头头是道,但下次打开新会话,它又像失忆了一样。每次对话都是一场“从零开始”的轮回。
所有大模型都卡在这道坎上:上线之后就不再学习了。
训练时喂进去几万亿个词,那是它的“前世”;部署后你跟它说的每句话,都只存在于当前对话框,关闭即销毁。
一个万亿参数级别的巨无霸,记不住你五分钟前随口说的一个事实,这种荒诞感,本身就是最刺眼的矛盾。但月之暗面的公司搞了个叫Kimi K3的模型,里面藏着一个叫KDA的古怪设计,可能正在悄悄改写这个规则——它用一套极简的数学公式,让AI在跟你聊天的每时每刻,都在“训练”自己。
上线即失忆,AI界的集体死穴
所有聊天机器人都得了一种病,出厂即“脑死亡”。训练完成那一刻,它的所有知识就焊死在电路板上了,之后每跟用户说一句话,产生的都是“临时记忆”。
这就像雇了个绝顶聪明的实习生,入职培训塞了一肚子百科全书知识,但正式上班后,你跟它交代的每一件事,下班铃一响就自动清空。第二天早上,它又顶着一张白纸般的脸坐回工位。每次对话都得把背景重新交代一遍,像极了跟老年痴呆患者反复做自我介绍。这种体验,已经快把耐心磨成灰了。
大模型内部只有两个地方能存东西。一个是它的核心参数,也就是训练时磨出来的“长期记忆”,这部分雷打不动。另一个是当前会话的上下文缓存——也就是对话框里正在聊的那堆字。第二个空间随时会消失,会话一关,啥也不剩。持续学习的本质,就是打通这两层:让模型在部署后,能把会话中学到的东西,存进一个跨会话、跨时间的“私人笔记本”里。
有趣的是,所有大厂都在回避这个问题。因为在线学习会导致模型被用户“带偏”,安全性不可控。行业共识是:宁可让它笨,不能让它学坏。这种保守策略,恰恰制造了今天所有AI产品的体验天花板——跟一个天才失忆症患者打交道,你能忍多久?
0.22GB的内存条,养着AI的世界观
Kimi K3最反直觉的地方,是它把75%的注意力层换成了一种叫KDA的古怪结构。这些层不存原始对话记录,只维护一个128乘128的矩阵,每个注意力头一个。全模型69层乘96个头,加一起才0.22GB。
这点容量什么概念?一部高清电影压缩包的零头。但它要承载的,是整个会话期间学到的全部“世界观”。
对比一下就好笑了:模型的冻结参数是2.8万亿个,占1.4TB硬盘空间。那个随时在学习的“活”记忆,只有0.22GB。相当于一个体重一百公斤的壮汉,大脑只有一粒花生米大小。这种容量悬殊,注定了它学不了太复杂的东西。两个相似的知识会互相覆盖,老知识会被新知识挤出去,长期不复习的关联会自动衰减。
这跟我们人脑的遗忘曲线还挺像。但人脑有1000亿个神经元,每个神经元又有几千个突触连接,那个存储空间是天文数字。0.22GB面对一个用户的长期使用,就像用汤勺舀干太平洋。K3的设计者显然知道这点,所以才保留了四分之一的传统缓存层用来记具体细节,让KDA层只负责抽象结构。
数学公式告诉你,它确实在“学习”
KDA状态每处理一个新词,就做一次梯度下降。没错,就是训练神经网络时用的那个梯度下降。
每来一个词,模型先根据当前状态“猜”这个词应该长什么样,然后跟真实值对比算出误差,再用这个误差反向传播,更新状态矩阵里的数字。整个流程跟训练模型一模一样,只是训练时是离线跑几万步,这里是线上走一步。数学上这叫Delta更新规则,1960年就提出了,比Transformer架构早了快六十年。
这就有个冷笑话式的反差:整个AI行业花了几十亿美元堆算力训练大模型,但K3在跟你聊天的每个词上,都在做同样性质的计算——只是规模小了无数倍。那个被当成“缓存”的东西,本质上是一个持续运行的微型学习系统。它没有临时记忆那种“读后就忘”的惰性,而是每分每秒都在根据输入调整自己的内部结构,像一块不断被雕刻的木头。
更反常识的是,它这种学习还带“泛化”能力。传统缓存是精确存储:“用户在第50个位置说了张三”。KDA存的是方向:某个含义空间里的某个向量被更新了。所以下次你问一个意思相近但不完全一样的问题,它依然能关联到那个信息,像人脑的联想机制,而不是数据库的精确匹配。
没有位置编码,反而赢麻了
K3的KDA层删掉了所有位置编码。整个AI界都在给每个词打位置标签,它偏偏不。
原因很反直觉:位置编码会把“位置”焊进记忆里。第一轮聊天中,某个事实出现在第5万个词的位置,那它的记忆就跟“5万”这个数字绑定了。如果下一轮聊天重新从位置1开始,那个记忆就乱套了。要是继续顺延位置计数,到了几十万步之后,模型连位置编码都算不明白了。RoPE这种主流位置编码方案,上下文一长就会出各种怪问题。
KDA的记忆靠“衰减”来体现顺序。一个关联每经过一个词,就会被乘以一个小于1的衰减系数。时间久了自然变淡。所以不管你是上一轮还是下一轮说的,只要时间上前后挨着,衰减逻辑完全一样。这就让KDA状态变成了一份可以随时保存、随时加载的“独立思维快照”。不存在“位置错乱”这种说法。这个特性,对跨会话记忆来说是命中注定般的巧合,但它根本不是冲着这个去的。
三个阶梯,通向能记住你的AI
第一步:做个最简单的实验。会话结束时,把KDA状态存下来,下次新建会话时加载进去,但把那些临时缓存全部扔掉。然后看模型是否还记得上一次聊的内容。这个实验不涉及任何新训练,只是改一行代码:启动状态从全零矩阵改成读盘。如果加载后表现明显比从零开始好,就证明KDA确实在“学习”而非“缓存”。
第二步:让KDA层负责抽象世界观,让剩下25%的传统缓存层只记录当前会话的具体用词。前者存“张三喜欢喝咖啡”这种关系,后者存“张三在第3段第2句提到了拿铁”。训练时加一个辅助惩罚项:如果两个句子意思相同但措辞不同,KDA状态的差异得尽量小。这样一来,KDA就被强制去学语义层面的不变结构,而不是字面记诵。
第三步:对于真正需要永久保存的细节,比如手机号、身份证号、账号密码,直接外挂一个数据库。KDA只负责记住“有个东西很重要,存在某个地方,需要时调用工具去查”。这跟人类大脑的运作方式一模一样:我们不记圆周率小数点后一万位,但我们记得圆周率是什么,以及哪里能查到它。这样一来,KDA有限的0.22GB空间,就只需要存放“关于记忆的记忆”,而非海量琐事。
把状态做大十倍,会发生什么
把每个头的矩阵从128乘128扩到400乘400,状态大小从0.22GB变成2.2GB。这点容量在1.4TB的权重面前仍然只算零头,但代价开始显现。
每处理一个词,状态矩阵要读写一遍。现在0.22GB的读写几乎不花时间,但2.2GB每词的操作就会带来几毫秒延迟。用户每生成一个词,多等几毫秒。按目前主流显卡的内存带宽来算,几十个用户同时在线,状态读写就会明显拖慢响应速度。这是线性增长的成本。
更头疼的是工程问题。当前0.22GB的状态可以随用随丢,但2.2GB的“用户专属记忆”就得持久化存储,还得考虑隐私隔离。用户如果要求删除数据,你得把那份状态从服务器上彻底抹掉。如果用户想把状态迁到另一台机器,你得设计序列化传输协议。一个原本简单的推理服务,因为多了这份“持续学习状态”,就变成了一个有状态系统,整个运维架构都得重构。
而最核心的问题还是训练动力学。当前的衰减系数、写入强度这些超参数,都是为128维状态设计的。突然把容量扩了十倍,模型还能不能学会合理分配记忆空间,是未知数。就跟突然给人脑扩容十倍一样,神经系统可能直接乱套。
持续学习,一扇刚裂开的缝
回到起点:每次对话都从零开始,是当下AI产品最大的体验黑洞。K3的KDA设计,无意间凿开了一条缝。
它不是传统意义上的记忆模块,它是一个在每个推理步骤都在运行的小型在线学习机。它不存对话记录,它存“对对话的理解”。它不依赖位置,它可以跨时间片独立存在。它容量极小但速度极快,它用0.22GB撑起了持续学习的全部想象。
今天的它还在襁褓中。0.22GB只能存一个用户几小时的对话抽象,而且没有经过长期运行的验证。
但思路已经很清楚了:
- 冻结权重负责通识,
- 可写状态负责个人经验,
- 外挂数据库负责具体事实。
三层架构一旦跑通,你的AI就会变成那个每次对话都在成长的伙伴,而不是每次都要重新认识的陌生人。
当然,也可能出现另一个场面——你的AI积累了你三年的聊天记录后,变得跟你一样偏执、一样健忘、一样有认知偏见。那时候你可能会怀念它从零开始的蠢样子。毕竟,遗忘也是智能的一部分。记住一切,有时才是最可怕的遗忘。