
【译者前言】
这篇文章是作者"大模型思考录"系列的第三篇。一个月前他发了第一篇模块化架构的文章,收到不少反馈——有认可的,也有直接指出一堆逻辑漏洞的。作者没有捂着,而是认真复盘,把原来方案里三个最致命的问题全拆开来重新想了一遍。
读下来挺有意思的。他没有把"类脑AI"当成一个浪漫的比喻来用,而是真的去找神经科学里的证据——比如失语症(aphasia)病人的临床观察,用这些来指导工程设计。他自己也承认,从"同步振荡"到"句法骨架",从拍脑袋类比到有凭据的工程方案,这一步跨出来不容易。
我不打算逐句翻译,而是把他的逻辑重新整理了一遍,加上了一些我作为中文技术社区读者的吐槽和延伸思考。如果你在做AI架构,或者对"模块化+类脑"这个方向感兴趣,这篇值得认真看。
一个月前,我发了一篇文章,提出用一种解耦的、模块化的、类脑的设计来替代单体的超大规模语言模型。文章收到了一些讨论,但也在逻辑和工程层面暴露了严重的问题。
经过与同行和AI助手反复讨论,我逐渐意识到:原来的思路把神经科学的假设当成了定论,把类比当成了可执行的方案。但这并不意味着模块化+类脑的方向是错的——关键在于从大脑的实际运作机制中提取出可以工程的原理,而不是直接复制那些还没验证的假说。
这篇文章是我完整的一次自我修正记录。我会:
如果你曾经被"模块化AI"吸引,但又对"怎么让它真的跑起来"感到困惑,希望这篇文章能提供一个可以讨论的起点。
缺陷 | 失败原因 | 替代方案 |
同步振荡绑定 | 数字系统里没有自然的全局相位,可区分频率极少(<20),无法表示嵌套结构 | 结构化数据传递(JSON/AMR) |
Scheduler自动做任务分解 | 等价于"AI完全"规划问题,目前没有解法 | Scheduler只集成,不分解 |
串行子模块 + 独立记忆检索 | 推理时间线性增长;记忆冗余严重 | 并行广播 + 共享工作记忆 + 分块流水线 |
问题精确陈述:
之前的描述只说了"颜色模块输出'红',形状模块输出'圆'",但没有明确处理两个不同对象的情况。真正的难点是这样的:
输入:"一个红色的圆和一个蓝色的方块"
颜色模块输出:{红,蓝}
形状模块输出:{圆,方块}
问题:Scheduler怎么知道对应关系是红→圆、蓝→方块,还是红→方块、蓝→圆?
多对象场景下,属性必须正确匹配到各自的对象上——这就是核心难度。
大脑是怎么解决的?
大脑并不是事后去做匹配的。取而代之的是,空间位置或句法结构从一开始就是绑定的骨架。
视觉:视网膜拓扑映射确保颜色和形状信息都带上了位置标签(比如"左上角")。所以"左上角的红"和"左上角的圆"天然就是绑定的。
语言:句法结构。在"一个红色的圆"里,形容词"红色"在句法上修饰名词"圆"——这种修饰关系就指定了归属。面对多个对象,语言会用并列或分句来处理:"一个红色的圆和一个蓝色的方块"。Parser可以识别出两个独立的名词短语(NP),每个NP内部有自洽的修饰关系。
关键洞察:大脑不需要一个显式的"对齐器"——句法/空间结构本身就隐含了绑定。
"口误"现象带来的启发
我们的语法模块并不完美。我们经常想说"红色的圆"结果说成了"红色的方块"。这种(语义-词汇映射错误)在健康人和失语症患者身上都会出现。它说明:
思维(抽象语义)和语言产生(句法/词汇提取)是分离的。前额叶产生了"圆+红"的意图,但布洛卡区提取了错误的名词。
这种错误并不会破坏绑定本身——即使说错了名词,听者仍然知道"红"是修饰那个(说错的)名词的,因为句法位置还在。这说明句法骨架的鲁棒性很强。
失语症案例:功能分离的硬证据
纯布洛卡区损伤(布洛卡失语):
纯韦尼克区损伤(韦尼克失语):
双重分离告诉我们:
工程方案
核心思想:模仿大脑的句法骨架。先跑一个语法模块,把输入解析成名词短语(NP)列表。每个NP包含中心名词和修饰语。在多对象场景中,每个对象对应一个独立的NP,属性自然绑定在该NP内部。
示例: 输入:"一个红色的圆和一个蓝色的方块" 语法模块输出:
[
{
"np_id": 1,
"head": "圆",
"modifiers": ["红色"]
},
{
"np_id": 2,
"head": "方块",
"modifiers": ["蓝色"]
}
]
颜色模块只需要在每个NP的修饰语中找颜色词,然后把颜色附到那个NP上——不需要跨NP匹配。
处理复杂性:
可行性证据:
结论:即使有多对象场景,实体对齐也可以通过语法模块的NP骨架来解决。失语症案例证明大脑使用了类似机制,且功能分离是可行的。
问题: 颜色模块输出字符串,记忆模块输出长段落,数字模块输出浮点数……Scheduler怎么统一处理这么多种格式?
大脑启发: 前额叶工作记忆用槽位来管理不同模态。每个槽位对应一个对象,不同属性填充不同字段(Miller & Cohen, 2001)。
工程方案: 语法模块输出的实体骨架提供了统一的附着点。每个子模块把自己的输出格式化为 {entity_id, attribute_name, value}。Scheduler按entity_id聚合。可参考知识图谱构建的成熟模式。全局属性(比如情感)可以附到虚拟ID global 上。
问题: 把整段文本广播给所有子模块,强迫每个模块处理全文——冗余计算;远处信息可能干扰局部决策。
大脑启发: 工作记忆容量有限(7±2个组块)。阅读是逐句进行的;只有当前的局部信息保持活跃(Baddeley, 2003)。
工程方案: 分块流水线。把文本切分成句子(或子句),逐句处理:语法模块 → 子模块(并行)→ 更新全局工作记忆 → 进入下一句。计算复杂度从 O(L²) 降到 O(N·l²),其中 l 是块长度。
问题: 如果Scheduler既要做信息集成,又要做自然语言生成,它本质上就变成了一个大语言模型——模块化的优势就被抵消了。
大脑启发: 前额叶皮层(意图/决策)和布洛卡区(语言产生)是功能分离的。布洛卡失语症患者意图清晰但无法产生句子——这是分离的直接证据(Geschwind, 1970)。
工程方案: 把Scheduler拆成两部分:
参数对比:
可行性:抽象语义→文本是一个成熟任务(AMR-to-text、table-to-text),T5-small表现很强。
模块列表:
模块 | 实现方式 | 参数量 |
Chunker | NLTK分句 | 0 |
语法模块 | spaCy en_core_web_sm | ~500MB |
颜色模块等 | 规则或小型BERT | 0~100M |
全局工作记忆 | Python dict | 0 |
中央Scheduler | 规则(if-else) | 0 |
语言生成 | T5-small(300M)或模板 | 0~300M |
总参数量(典型配置):约300~500M——比LLaMA-7B(7B)低一个数量级。
任务: 电商产品描述中的产品属性提取和QA(颜色、尺寸、材质)。 评估指标: 属性提取F1、QA准确率、延迟(ms/查询)、总参数量。 预期: 在这个窄任务上,性能接近T5-small,但参数量少得多,可解释性高得多。
从"同步振荡"到"句法骨架",从忽视多对象场景到引入失语症证据——这次自我修正教会我,类脑AI不是浪漫的比喻,而是严谨的跨学科工程。
这个架构不会取代GPT-4。但在垂直领域(比如合同分析、产品属性提取、技术文档QA),它可能提供一个更轻量、更透明、更可维护的替代方案。
"取最优的算法,产生最优的对应函数,然后把各部分最好用的组合起来。" 路很长,但每一步都比之前更扎实了。
2026年4月,苏州
(欢迎评论和进一步挑战)