认知架构深度

关键词

序号关键词英文对照
1认知架构Cognitive Architecture
2SOARState Operator And Result
3ACT-RAdaptive Control of Thought—Rational
4CLARIONConnectionist Learning with Adaptive Rule Induction On-line
5神经形态计算Neuromorphic Computing
6生产系统Production System
7工作记忆Working Memory
8长期记忆Long-term Memory
9意识计算Consciousness Computing
10统一认知理论Unified Theories of Cognition
11符号处理Symbol Processing
12联结主义Connectionism

一、引言

认知架构(Cognitive Architecture)是认知科学和人工智能交叉领域的研究核心,旨在构建能够完整模拟人类认知过程的计算框架。从艾伦·纽厄尔(Allen Newell)和司马贺(Herbert Simon)的物理符号系统假说,到现代的神经形态计算,认知架构研究经历了深刻演变。

理解认知架构的理论基础,对于构建通用人工智能(AGI)至关重要。本文档将深入分析三大主流认知架构——SOAR、ACT-R、CLARION——以及神经形态认知架构的最新进展,揭示它们在知识表示、推理机制和学习能力方面的设计原理。


二、认知架构入门:构建像人脑一样的AI系统

2.1 什么是认知架构?

简单来说,认知架构就是一套关于”智能系统应该如何工作”的完整蓝图。你可以把它想象成建筑设计图纸,只不过这个建筑不是房子,而是一个能够思考、学习、记忆和做决策的系统——就像人脑一样。

打个比方,如果你想造一架飞机,你需要知道空气动力学原理、发动机设计、材料科学等各种知识,然后把这些东西整合成一个完整的系统。认知架构研究者做的事情类似,只不过他们想建造的是人工通用智能(AGI),需要整合的是感知、记忆、推理、学习等认知能力。

现在的深度学习系统其实只实现了认知能力的一小部分——主要是模式识别和函数拟合。给它一堆猫的照片,它能认出猫,但你说”这只猫昨天在窗台上睡觉时抓了一只苍蝇”这样的话,它完全听不懂,因为它没有真正的理解,只有统计关联。认知架构的目标就是要填补这个鸿沟,让AI不仅能识别模式,还能真正”懂”这个世界。

2.2 为什么要研究认知架构?

你可能会问:为什么不直接用深度学习就行了?搞这些复杂的认知架构有什么意义?

这个问题问得很好。确实,现在的深度学习在很多特定任务上已经做得很好了——下棋、打游戏、翻译文章、生成图片,都能搞定。但这些系统有个根本问题:它们是”窄AI”,只能在特定领域发挥作用,而且完全不理解自己在做什么。

DeepMind的AlphaGo能打败世界冠军,但它完全不知道”围棋”是什么意思,不知道为什么人类花了数千年发展这项游戏,更不知道自己正在和另一个”人”对弈。它只是在做数学优化,找到了一个在19×19棋盘上最大化胜率的策略。

认知架构研究的核心假设是:真正的通用智能需要多个认知组件的整合——你需要记忆来存储过去的经验,需要注意力来选择性地处理信息,需要推理能力来从已知推导出未知,需要学习机制来不断改进自己。这些组件不是独立工作的,而是紧密耦合在一起,形成一个动态的整体。

一个真正的认知系统应该能够:

  • 把学到的知识迁移到新领域
  • 用常识来理解和推理日常情境
  • 知道自己知道什么、不知道什么
  • 设定目标并规划如何实现
  • 和人类进行自然的对话

现在的AI系统在这些方面都做得不好。认知架构就是想解决这个问题。

2.3 认知架构的两大流派

在认知架构研究领域,存在两个主要的理论阵营:符号主义(Symbolicism)和联结主义(Connectionism)。它们对”智能”和”认知”有不同的理解,也采用了不同的技术路线。

符号主义认为智能的核心是符号操作。你可以把符号理解为概念的标签——“狗”是一个符号,“会游泳”是另一个符号。智能就是根据规则对这些符号进行处理,比如”如果X是狗,且狗会游泳,那么X会游泳”。这个流派强调逻辑推理和显式知识表示,SOAR和ACT-R都属于这个传统。

联结主义则走了一条完全不同的路。它认为智能来自大量简单单元的并行交互,这些单元互相连接,形成复杂的网络。知识不是存储在某个特定位置,而是分布式地编码在整个网络中。这其实就是深度学习的理论基础——神经网络。CLARION代表了混合这两种方法的尝试。

这两种方法各有优缺点。符号系统易于解释,你能清楚地看到系统为什么做出某个决定,但它很难处理模糊的、真实世界中的信息。神经网络能处理噪声和不完整的数据,但它的决策过程往往是黑箱的,你很难解释它为什么这样做。


三、认知架构的理论基础

3.1 物理符号系统假说

1980年,纽厄尔和司马贺提出物理符号系统假说(Physical Symbol System Hypothesis):

物理符号系统假说

“物理符号系统具有普遍而充分的智能行为能力。换言之,任何表现出智能行为的系统必然是一个物理符号系统。”

这一假说为符号主义认知架构奠定了理论基础,SOAR和ACT-R都可以追溯到这一传统。

这个假说听起来可能有点抽象,让我用大白话解释一下。纽厄尔和司马贺的意思是:任何能够表现出智能行为的系统,无论它是人类大脑还是计算机,必然是在操作某种符号。这些符号是对世界中的事物和关系的抽象表示,而智能行为就是根据规则对这些符号进行组合和转换。

举个例子。当你看到”猫”这个字并理解它的含义时,你的大脑实际上是在处理一组符号——“猫”激活了你关于猫的概念:四条腿、会喵喵叫、抓老鼠、是哺乳动物等。你在读这段文字时,也在进行符号操作,把这些符号转换成你理解的意思。

3.2 认知架构的统一理论

1990年,司马贺在《人工科学》一书中提出统一认知理论(Unified Theories of Cognition)的目标:

理想的认知架构应能统一解释人类认知的所有方面,包括感知、注意、记忆、语言、推理、学习、决策等。

司马贺一辈子都在追寻一个统一的认知理论,能够像物理学统一各种力一样,把各种认知现象统一在一个框架下。他没能完成这个目标,但这个愿景一直激励着后续的研究者。

3.3 认知架构的基本组成

现代认知架构通常包含以下核心组件:

组件功能描述计算实现
工作记忆当前加工信息的临时存储激活值的保持
长期记忆知识的持久存储规则库、语义网络
感知模块外部信息的接收与编码模式识别、特征提取
效应器行为的输出与执行动作选择与执行
学习模块经验的整合与知识的更新强化学习、监督学习

四、SOAR认知架构

4.1 SOAR的起源与发展

SOAR(State, Operator, And Result)由约翰·莱尔德(John Laird)、艾伦·纽厄尔和保罗·罗森布洛姆(Paul Rosenbloom)于1982年提出,是历史最悠久、影响最广泛的认知架构之一。

SOAR的设计目标:

  • 统一的智能理论
  • 支持完整认知功能的实现
  • 能够处理各种任务和问题求解
  • 从心理学角度具有可行性

说起来,SOAR的诞生还挺有意思的。纽厄尔和司马贺在卡内基梅隆大学共事多年,一直想实现一个统一的认知理论。1982年,他们的学生莱尔德开始开发SOAR,最初只是想做一个通用的问题求解器。结果做着做着,发现SOAR能做的事情越来越多,逐渐成为一个完整的认知架构。

有意思的是,SOAR这个名字其实就来自它的核心概念:任何问题都可以被表示为状态(State),通过应用算子(Operator)来改变状态,最终达到目标状态。Result指的是算子应用后的结果状态。

4.2 SOAR的核心机制

状态-算子-结果结构

SOAR将所有任务表示为状态空间中的搜索:

其中:

  • :当前状态(Objects and relations)
  • :候选算子集合(Available operators)
  • :目标条件(Goal conditions)

想象一下你在一个陌生城市里找路。你当前的地理位置是状态,你需要到达的目的地是目标,而各种移动方式——走路、坐公交、打车——就是算子。SOAR就是通过不断选择和应用算子,从初始状态一步步逼近目标状态。

生产系统

SOAR使用生产规则(Production Rules)作为知识表示的基本形式:

(IF (current-state <condition>)
    THEN (perform <action>))

规则的条件部分匹配工作记忆,产生相应的动作。

生产系统的工作方式其实挺像你写if-then语句的。比如:IF 看到红灯 THEN 停车;IF 看到绿灯 THEN 前进。只不过SOAR中可能有成千上万条这样的规则,系统会在每个时刻根据当前状态自动匹配出所有适用的规则,然后从中选择一条执行。

算子选择与实施

SOAR的推理循环可以表示为:

当算子选择不确定时,SOAR进入僵局模式(Impasse),触发子目标生成和学习。

SOAR处理僵局的方式特别有意思。当它面临多个可选算子,不知道该选哪个时,它会停下来问自己:“我为什么不知道该选哪个?是不是因为我缺少某些知识?“然后它会尝试学习,生成一个子目标来获取这些知识。这就是SOAR的”学习机制”——它不是被动的,而是主动识别自己的不足并想办法弥补。

4.3 SOAR的记忆系统

SOAR的记忆系统包括:

长期记忆

  • 程序性知识:以生产规则形式存储——这是”怎么做”的知识,比如怎么骑自行车、怎么解方程
  • 陈述性知识:以语义网络形式存储——这是”是什么”的知识,比如”北京是中国的首都”
  • 事件知识:以EPISODIC形式存储——这是个人经历的记忆,比如”上周五我在三里屯遇到老同学”

工作记忆

  • 当前感知输入——你正在看什么、听什么
  • 激活的生产规则——哪些规则正在匹配
  • 当前目标状态——你想达成什么
  • 推理中间结果——你推导到了哪一步

4.4 SOAR的强化学习机制

SOAR通过强化学习实现经验引导的适应:

其中 为学习率, 为折扣因子。

这个公式是Q-learning的标准更新规则。简单来说,当SOAR在某个状态执行了动作,获得了奖励,并转移到新状态后,它会更新对这个”状态-动作对”的价值估计。目标是让估计值逐步逼近真实的长期回报。

4.5 SOAR的应用案例

SOAR已经被应用在很多领域,最著名的可能要数”小世界”项目(SoarTech的智能体项目)。在军事模拟中,SOAR被用来创建能自主决策的虚拟士兵;在游戏AI中,SOAR驱动了多个非玩家角色(NPC)的智能行为;在航空领域,NASA用SOAR来开发飞机维修决策支持系统。


五、ACT-R理论与计算模型

5.1 ACT-R的起源

ACT-R(Adaptive Control of Thought—Rational)由约翰·安德森(John Anderson)于1983年提出,是认知架构领域最具影响力的理论之一。与SOAR不同,ACT-R明确整合了神经科学的发现,构建了更为精细的认知模型。

安德森最初开发ACT-R是为了解释人类学习和技能习得的规律。他在1970年代做了一系列心理学实验,发现人类在练习某项技能时,表现的提升呈现出一种非常规律的曲线——对数曲线。这让他开始思考:什么样的认知机制能产生这种学习曲线?最终他构建了ACT-R,把心理学理论和计算模型结合起来。

ACT-R的全名也很有意思。“Adaptive Control of Thought”指的是认知系统如何自适应地控制思维过程——根据情境调整策略。“Rational”则强调认知系统是”理性”的,会根据环境的统计结构,以最优方式分配有限资源。安德森认为人脑不是一个万能的计算器,而是一个能够根据任务需求灵活分配注意力和记忆资源的系统。

5.2 ACT-R的模块化架构

ACT-R采用模块化设计,包括:

┌─────────────────────────────────────────────────────────┐
│                    ACT-R 认知模块                        │
├─────────────────────────────────────────────────────────┤
│                                                         │
│  ┌─────────────┐    ┌─────────────┐    ┌─────────────┐ │
│  │   视觉模块   │───→│   目标模块   │───→│   言语模块   │ │
│  │ (Visual)    │    │ (Goal)      │    │ (Verbal)    │ │
│  └─────────────┘    └─────────────┘    └─────────────┘ │
│         ↑                   ↑                   ↑      │
│         │                   │                   │      │
│         └───────────────────┼───────────────────┘      │
│                             ↓                           │
│                    ┌─────────────┐                     │
│                    │   缓冲模块   │                     │
│                    │  (Buffers)  │                     │
│                    └─────────────┘                     │
│                             ↓                           │
│                    ┌─────────────┐                     │
│                    │   记忆模块   │                     │
│                    │  (Memory)   │                     │
│                    └─────────────┘                     │
│                                                         │
└─────────────────────────────────────────────────────────┘

ACT-R的模块化设计借鉴了人脑的功能分区。每个模块负责特定类型的处理:

  • 视觉模块负责接收和编码视觉信息,比如识别文字、图形
  • 目标模块存储当前正在执行的目标和意图
  • 言语模块处理语言理解和生成
  • 运动模块控制身体动作
  • 记忆模块是整个系统的核心仓库

这些模块之间通过缓冲器(Buffer)进行通信。缓冲器就像是一个临时中转站,模块把处理结果放进去,其他模块可以从里面读取。系统在一秒内会进行好几次这样的认知周期,不断更新各个缓冲器的状态。

5.3 ACT-R的记忆系统

ACT-R区分了两种主要的记忆形式:

声明性记忆(Declarative Memory):

心理词条(Chunk)的形式存储:

你可以把心理词条想象成一张索引卡片,上面有类型标签(比如”狗”)和各个插槽(四条腿、会叫、是哺乳动物等)。当你需要使用某个知识时,系统会从记忆中检索出相关的词条。

激活值的计算:

其中:

  • :基级激活(Base-level activation)——这个知识被使用的频率
  • :来源 的激活——当前情境对这个知识的激活
  • :来源 到词条 的关联权重
  • :随机噪声——模拟真实认知中的随机性

程序性知识(Procedural Knowledge):

生产规则形式存储:

(IF (condition)
    THEN (action))

程序性知识是”怎么做”的知识,表现为条件-动作规则。当某个条件满足时,相应的动作就会被执行。

5.4 ACT-R的理性分析

ACT-R的名称中”Rational”体现了其理论特色:认知系统以理性方式分配有限资源。

资源分配理性原则

ACT-R假设人类认知系统根据环境的统计结构,以理性方式分配注意力和工作记忆资源。这意味着:

  • 频繁使用的知识获得更高的激活
  • 资源优先分配给高回报的任务

这一理性原则可以通过以下优化问题表达:

这句话的意思是:认知系统在做决策时,会权衡预期收益和认知成本。如果记住某条信息需要很多努力,但这条信息很少用到,那系统就会选择忘记它;反过来,如果某条知识很有用,系统会投入更多资源来巩固它。

5.5 ACT-R的认知周期

ACT-R的认知过程是一个不断循环的周期:

  1. 注意阶段:从环境中选择信息进入视觉缓冲器
  2. 编码阶段:将视觉信息编码为心理词条
  3. 检索阶段:根据当前目标从记忆中检索相关知识
  4. 执行阶段:通过生产规则选择并执行动作
  5. 更新阶段:更新记忆中的激活值

这个周期每秒大约发生3-5次,每次循环都会更新系统的状态。你可以把它想象成大脑的”信息刷新”,不断的把外界信息、工作记忆、长期记忆整合起来,形成连贯的认知体验。

5.6 ACT-R的应用案例

ACT-R在教育和培训领域应用特别广泛。安德森创办的Cognitive Tutor公司就用ACT-R开发了智能辅导系统,被广泛应用于中学数学教育。这些系统能追踪每个学生的学习进度,识别他们的薄弱环节,并提供针对性的练习。

此外,ACT-R还被用于模拟飞行员在紧急情况下的决策过程、研究人类如何学习编程语言、分析专家和新手在解决问题时的认知差异等。


六、CLARION架构

6.1 CLARION的设计理念

CLARION(Connectionist Learning with Adaptive Rule Induction On-line)由孙伟(Wei Sun)于1995年提出,其核心理念是区分显性知识与隐性知识,并分别用不同的机制处理。

CLARION的设计理念来源于心理学中一个经典区分:我们知道的很多东西其实很难用语言表达出来。哲学家迈克尔·波兰尼(Michael Polanyi)有句名言:“我们知道的多于我们能说的。”

想想学骑自行车。你知道怎么保持平衡、怎么转弯、怎么刹车,但你能把这些写成规则告诉别人吗?很难吧。你最多只能说”放松点、别紧张”这样的话,但真正学会骑车的过程,是大量练习中身体自己”记住”的。这就是隐性知识——你知道但说不清的知识。

另一方面,有些知识是可以明确表达的。比如”水的沸点是100度”、“中国的首都是北京”,这些都是显性知识,可以编码成规则、写进书本。

CLARION就想同时处理这两种知识:显性知识和隐性知识。它认为真正的智能需要两者的结合,单靠任何一种都不够。

6.2 双层表征系统

CLARION采用双层架构:

层次知识类型处理机制编码方式
上层显性知识(Explicit)规则学习符号/离散
下层隐性知识(Implicit)联结学习分布式/连续

上下层之间的交互通过同步化机制实现:

这个框架的核心思想是:下层(神经网络)负责从经验中学习,处理那些难以言说的模式;上层(符号系统)负责把下层学到的知识提炼成可解释的规则。两层互相配合,上层可以指导下层的学习方向,下层可以为上层提供新的规则素材。

6.3 CLARION的核心模块

动作相关网络(Action-Centered Network, ACN):

  • 处理动作选择和执行
  • 整合所有知识层次
  • 这是CLARION的核心,因为智能最终要体现在行为上

非动作相关网络(Non-Action-Centered Network, NCN):

  • 处理一般性知识
  • 支持问题求解和元认知
  • 比如”如果下雨,地面会湿”这类常识推理

目标处理模块(Goal Processing Module):

  • 管理目标层级
  • 处理目标冲突和优先级
  • 目标对于行为导向的智能至关重要

6.4 CLARION的学习机制

CLARION采用多种学习机制:

强化学习(下层):

规则提取(上层):

反向提炼(Top-down learning):

反向提炼是CLARION的一个特色机制。它允许上层的显性知识影响下层的联结学习。比如你学了一条规则”在湿地面上要小心”,这条规则可以指导下层的神经网络更多地关注地面湿滑的特征,从而更快学会在这种情况下减速。

6.5 CLARION的应用案例

CLARION在很多认知任务上表现出色,特别擅长那些既需要直觉又需要推理的任务。比如在导航任务中,下层学到了”这条路感觉对”(隐性直觉),上层则负责规划路线和避免陷阱(显性推理)。在社交认知任务中,下层学到了微妙的社交信号,上层则把这些整合成对他人意图的理解。


七、全局工作空间理论:意识也能计算?

7.1 什么是全局工作空间理论?

全局工作空间理论(Global Workspace Theory, GWT)最初由认知科学家伯纳德·巴尔斯(Bernard Baars)在1988年提出,后来被人工智能研究者约瑟夫·安森(Joseph仑)和斯坦尼斯拉斯·德阿内(Stanislas Dehaene)进一步发展。

这个理论想回答一个深刻的问题:大脑中有这么多独立的模块在并行处理信息——视觉处理、听觉处理、运动控制、语言生成等——它们是如何协调工作的?怎么保证你看到的、听到的、想到的东西是统一的,而不是一堆碎片?

巴尔斯提出了一个”剧场”比喻:意识就像剧场的聚光灯,它照到哪个信息,这个信息就能被整个系统看到,成为”全局”的。各个专业模块是舞台上的演员,它们各司其职,但只有被聚光灯照到的内容才能传递给所有其他模块,被”意识”到。

这个理论在人工智能领域的延伸就是:如果我们要构建有意识的AI,也许需要实现某种全局工作空间机制,让关键信息能够在整个系统中广播

7.2 全局工作空间的工作原理

在全局工作空间理论中,认知系统被分成两个部分:

  1. 大量专用的无意识处理器:这些是并行工作的模块,各自处理特定类型的信息,彼此之间不直接通信

  2. 全局工作空间:一个集中的信息交换场所,任何处理器都可以把信息”提交”到这里,被广播给所有其他处理器

当某个信息被广播后,它会引发一系列处理:相关模块接收这个信息,做出响应,这些响应又可能被提交到全局工作空间,形成新的广播。这个过程不断循环。

这种架构有一个重要特性:瓶颈效应。由于全局工作空间一次只能处理有限的信息,系统必须选择——哪些信息值得进入”意识”?这种选择性注意就是意识的核心功能之一。

7.3 全局工作空间与认知架构

全局工作空间理论对认知架构设计产生了深远影响。LIDA认知架构就是直接基于GWT构建的,它的创造者斯坦尼斯拉斯·戈查德(Stanislas Lanz)认为,一个真正的人类级AI系统必须包含全局工作空间这样的机制。

在实际应用中,全局工作空间可以被用来:

  • 实现多模态信息的整合(视觉+听觉+语言)
  • 支持跨任务的知识迁移
  • 实现自顶向下的注意力控制
  • 产生可解释的决策理由

八、LIDA认知周期:感知-注意-记忆的循环

8.1 LIDA概述

LIDA(Learning Intelligent Distribution Agent)是由孟菲斯大学的Stanislas Lanz实验室开发的认知架构,它的设计明确基于全局工作空间理论。LIDA的核心贡献是提出了一个具体的认知周期模型,描述了感知、注意力、记忆和决策是如何循环交互的。

如果你把认知系统想象成一台运转的机器,那LIDA描述的就是这台机器每个”时刻”都在做什么——从接收外界刺激,到选择性注意,到记忆检索,再到动作选择,形成一个完整的认知循环。

8.2 LIDA认知周期详解

LIDA的认知周期包含以下几个阶段:

1. 环境感知阶段

系统通过传感器接收外界信息。这些信息最初只是原始的感觉数据——像素、声音波形、触觉压力等。在这个阶段,系统要做的是把原始数据转换成更有意义的表示。

比如,当你走进一个房间,你的眼睛接收到的信息是一堆光子的模式。但你”看到”的不是光子,而是”一张桌子”、“一把椅子”、“窗户”这样的物体和场景。这个从原始数据到语义表示的转换,就是感知阶段的任务。

2. 注意阶段

感知系统产生了大量的信息,但工作记忆的容量是有限的,不可能同时处理所有信息。注意机制就是用来选择哪些信息值得进一步处理的。

LIDA使用一种叫做”竞争性激活”的机制来实现注意选择。每个感知表示都有一个激活水平,激活越高,越可能被选中。被选中的信息会被”提升”到全局工作空间,成为当前认知循环的焦点。

3. 记忆检索阶段

一旦某个信息进入全局工作空间,系统就会从长期记忆中检索相关的知识。这个检索是基于激活匹配的——激活值高的记忆词条更容易被检索出来。

记忆检索的结果会产生一组”心理词条”,代表系统对当前情境的理解。这些词条可能是对象识别(“这是一只猫”)、因果推理(“按下开关会让灯亮”)、或者情景记忆(“上次我来这个房间时…“)。

4. 决策和动作选择阶段

有了当前情境的理解,系统就可以决定该做什么了。LIDA使用一种叫做”动作选择”的机制,从众多可能的行为中选择一个执行。这个选择既基于当前目标,也基于过去的经验。

5. 执行和学习阶段

选定的动作被发送到效应器执行。同时,系统也会记录这个认知周期的经验,用于后续的学习。LIDA使用多种学习机制,包括统计学习、强化学习和多代理学习。

6. 感知解耦和周期重置

执行完动作后,系统进入一个新的状态,需要重新感知环境。这个循环以每秒约10次的速度进行,产生流畅的认知体验。

8.3 LIDA与其他认知架构的比较

LIDA和ACT-R、SOAR有一些相似之处,但也有关键区别:

  • LIDA明确实现了全局工作空间,其他架构则没有这么清晰地分离全局和局部处理
  • LIDA的认知周期模型比ACT-R更详细,描述了感知处理的多个层次
  • LIDA整合了多种学习机制,而ACT-R主要依赖知识编译,SOAR主要依赖强化学习

九、认知架构 vs 端到端深度学习:两条通往AGI的路

9.1 端到端深度学习的思路

现在的深度学习主流是端到端(end-to-end)学习:设计一个神经网络,给它输入和期望的输出,让它自动学习从输入到输出的映射。AlphaGo就是典型例子——你给它棋盘状态,它直接输出下一步应该下在哪里。中间的所有过程——棋型识别、形势判断、策略选择——都由神经网络自动学习,不需要人工设计。

这种方法的优点是:

  • 避免了人工特征工程的麻烦
  • 能够发现人类可能想不到的特征组合
  • 在特定任务上能达到很高的性能

9.2 认知架构的思路

认知架构走的是另一条路:显式建模认知的各个组件——感知、记忆、注意、推理、学习——每个组件都有特定的功能和接口,组件之间通过明确定义的机制交互。

这种方法的优点是:

  • 系统行为更容易解释和调试
  • 知识可以在组件之间迁移
  • 可以整合多种类型的知识(符号和神经)
  • 可以利用人类认知心理学的发现

9.3 两条路的核心争议

这两种方法之间的争议,本质上是关于”什么是智能”的不同理解。

深度学习阵营认为:智能就是从输入到输出的复杂函数,学习这个函数就够了。人类设计和明确编码知识是”老式AI”的思路,不scalable。

认知架构阵营认为:单纯的函数拟合不够。人类智能的核心是知识表示推理——我们能够理解”猫在垫子上”这个简单的句子,就已经在做深度学习很难做到的事情:组合性的语义理解。而且,灵活的智能需要多种学习机制和知识类型的整合。

9.4 走向融合?

近年来,越来越多的研究者开始认为两条路各有道理,最终的AGI系统可能需要融合两者。这正是CLARION等混合架构的思路:用符号系统处理高层推理,用神经网络处理底层感知和模式识别。

Google的Transformer架构也体现了这种融合:它用神经网络实现,但引入了注意力机制——这是认知架构中早就强调的概念。而且,通过大型语言模型,大规模语言知识被编码在神经网络的权重中,实现了某种程度的符号-神经混合。


十、记忆增强的认知架构:让AI记住更多

10.1 记忆在认知中的角色

人类智能的一个关键特性是持久记忆。你今天学到的知识,明天还能用;十年前的一个经历,今天还能回忆起来。这种跨越时间的知识保持能力,是人类能够不断积累和学习的基础。

但在传统的神经网络中,这是一个难题。神经网络的”知识”存储在连接权重中,如果要更新知识,就必须改变权重,这可能会”覆盖”之前学到的内容。这就是所谓的”灾难性遗忘”问题。

认知架构通过维护独立的长期记忆系统来解决这个问题。记忆和计算是分开的——你可以在不影响已有知识的情况下,向记忆中添加新的知识。

10.2 神经进化AI的设计

神经进化AI(Neuroevolved AI)是一个研究方向,试图结合进化算法和神经网络来解决复杂的顺序决策问题。这种方法特别强调记忆增强——让AI能够记住过去的重要信息,用于当前的决策。

典型的神经进化AI系统包含:

  • 一个控制器神经网络,负责从当前输入和内部状态产生输出
  • 一个记忆模块,可以存储和检索历史信息
  • 一个进化算法,用于优化控制器的参数

10.3 记忆增强网络

Google DeepMind开发的记忆增强神经网络(Memory-Augmented Neural Networks)是另一个重要方向。这种系统包括:

神经图灵机(Neural Turing Machine):

  • 一个带有外部记忆的神经网络
  • 可以读写记忆,类似于计算机的内存访问
  • 能够学习复杂的序列到序列映射

记忆网络(Memory Networks):

  • 一种能在推理过程中访问长期记忆的模型
  • 在问答系统中应用广泛

这些方法的核心思想是:把记忆当作第一等公民,而不是事后才想到的功能。记忆是可读写的,其内容可以被系统查询和利用。

10.4 元认知和自我监控

高级认知架构还包含”元认知”能力——对自身认知过程的监控和调节。这包括:

  • 知道自己的知识边界(“我知道怎么解方程,但不知道量子力学”)
  • 监控自己的学习过程(“这次练习比上次好”)
  • 调节注意力资源(“我应该更关注这个问题”)

这种自我监控能力对于构建真正智能的系统至关重要——你不仅需要知道怎么做,还需要知道自己知道什么、不知道什么、什么时候需要学习新东西。


十一、认知架构在机器人中的应用

11.1 为什么机器人需要认知架构?

传统的机器人编程是任务特定的:你告诉机器人精确的步骤,它按部就班执行。但现实世界是复杂的,机器人经常会遇到意料之外的情况——门打不开、东西掉了、有人突然走过来。

认知架构为机器人提供了应对这种复杂性的能力:

  • 从经验中学习新技能
  • 在不完全信息下做决策
  • 理解和响应人类的意图
  • 跨任务的知识迁移

11.2 认知机器人的研究案例

DAVINCI系统:这是MIT开发的一个认知机器人系统,能够通过观察人类演示来学习新任务。系统用ACT-R来模拟人类的认知过程,从而预测人类在给定情况下会怎么做,实现更好的人机协作。

RoboCognitive项目:这个欧洲项目旨在将认知架构集成到机器人控制系统中。机器人能够进行任务规划、场景理解、自主导航,并在遇到困难时主动寻求帮助。

Cognitive Systems for Healthcare Robotics:在医疗护理领域,认知机器人被用来辅助老年人和残障人士。这些机器人需要理解用户的需求、记住用户的偏好、并在复杂环境中安全导航。

11.3 认知架构 vs 强化学习机器人

当前的机器人研究有两个主要方向:基于认知架构的方法和基于端到端强化学习的方法。

强化学习机器人通过大量试错来学习——在一个模拟器中,机器人尝试各种动作,根据获得的奖励来调整策略。这种方法的优点是能够在某些任务上达到很高的性能,缺点是需要大量的训练数据,而且学到的策略很难泛化到新环境。

认知架构机器人则更像”先理解再行动”:系统先建立对任务和环境的表征,然后用推理来选择动作。这种方法更适合需要灵活性和可解释性的场景。

两者的融合是趋势:先用认知架构提供高层框架,再在具体模块中使用强化学习来实现技能习得。


十二、动手实验:用Python模拟认知架构的基本功能

12.1 一个简单的认知循环实现

让我们用Python来实现一个简化版的认知架构。这个实现会包含工作记忆、长期记忆、生产规则系统,以及一个简单的认知周期。

"""
简化版认知架构实现
演示认知架构的基本组件和循环
"""
 
import random
from dataclasses import dataclass, field
from typing import List, Dict, Any, Optional
 
 
@dataclass
class Chunk:
    """心理词条:ACT-R中的基本知识单元"""
    type: str
    slots: Dict[str, Any] = field(default_factory=dict)
    activation: float = 0.0
    base_level: float = 0.0
    
    def __repr__(self):
        slots_str = ", ".join(f"{k}={v}" for k, v in self.slots.items())
        return f"Chunk({self.type}: {slots_str}, act={self.activation:.2f})"
 
 
@dataclass
class ProductionRule:
    """生产规则:IF condition THEN action"""
    condition: str
    action: str
    utility: float = 1.0
    
    def matches(self, working_memory: 'WorkingMemory') -> bool:
        """检查条件是否匹配当前工作记忆"""
        # 简化的条件匹配
        return self.condition in str(working_memory)
 
 
class WorkingMemory:
    """工作记忆:当前正在处理的信息"""
    
    def __init__(self):
        self.elements: List[Chunk] = []
        self.goal: Optional[Chunk] = None
        self.current_state: Dict[str, Any] = {}
        
    def add(self, chunk: Chunk):
        self.elements.append(chunk)
        
    def remove(self, chunk: Chunk):
        if chunk in self.elements:
            self.elements.remove(chunk)
            
    def get_by_type(self, chunk_type: str) -> List[Chunk]:
        return [c for c in self.elements if c.type == chunk_type]
    
    def __contains__(self, item):
        if isinstance(item, str):
            return any(item in str(c) for c in self.elements)
        return item in self.elements
        
    def __repr__(self):
        goal_str = f", goal={self.goal}" if self.goal else ""
        return f"WM({len(self.elements)} elements{goal_str})"
 
 
class LongTermMemory:
    """长期记忆:持久存储的知识"""
    
    def __init__(self):
        self.chunks: List[Chunk] = []
        self.rules: List[ProductionRule] = []
        
    def add_chunk(self, chunk: Chunk):
        self.chunks.append(chunk)
        
    def add_rule(self, rule: ProductionRule):
        self.rules.append(rule)
        
    def retrieve(self, cue: Chunk, threshold: float = 0.5) -> List[Chunk]:
        """基于激活值检索记忆"""
        matching = [c for c in self.chunks if c.activation >= threshold]
        return sorted(matching, key=lambda c: c.activation, reverse=True)
    
    def decay(self, amount: float = 0.01):
        """激活值的衰减"""
        for chunk in self.chunks:
            chunk.activation = max(0, chunk.activation - amount)
 
 
class CognitiveArchitecture:
    """简化版认知架构"""
    
    def __init__(self):
        self.working_memory = WorkingMemory()
        self.long_term_memory = LongTermMemory()
        self.cycle_count = 0
        
    def perceive(self, environment: Dict[str, Any]):
        """感知阶段:从环境中提取信息"""
        # 简化的感知处理
        for key, value in environment.items():
            chunk = Chunk(type="percept", slots={"feature": key, "value": value})
            # 激活值基于新颖性:新信息激活更高
            chunk.activation = random.uniform(0.5, 1.0)
            self.working_memory.add(chunk)
            
    def attend(self):
        """注意阶段:选择最相关的信息"""
        if not self.working_memory.elements:
            return None
            
        # 选择激活最高的元素
        attended = max(self.working_memory.elements, 
                      key=lambda c: c.activation)
        self.working_memory.remove(attended)
        return attended
        
    def retrieve_from_memory(self, cue: Chunk) -> List[Chunk]:
        """记忆检索"""
        # 更新检索到的词条的激活值
        retrieved = self.long_term_memory.retrieve(cue)
        for chunk in retrieved:
            chunk.activation += 0.5  # 检索增强
        return retrieved
        
    def select_action(self) -> Optional[ProductionRule]:
        """动作选择:匹配生产规则"""
        # 找出所有匹配当前状态的规则
        applicable_rules = [r for r in self.long_term_memory.rules 
                          if r.matches(self.working_memory)]
        
        if not applicable_rules:
            return None
            
        # 基于utility选择规则(简化的贪心选择)
        return max(applicable_rules, key=lambda r: r.utility)
        
    def execute_action(self, rule: ProductionRule):
        """执行动作"""
        print(f"  执行动作: {rule.action}")
        
        # 更新工作记忆状态
        self.working_memory.current_state[rule.action] = True
        
        # 增强相关规则的utility
        rule.utility += 0.1
        
    def learn(self, chunk: Chunk):
        """学习:将新经验编码到长期记忆"""
        chunk.base_level = random.uniform(0.5, 1.0)
        chunk.activation = chunk.base_level
        self.long_term_memory.add_chunk(chunk)
        
    def cognitive_cycle(self, environment: Dict[str, Any]) -> bool:
        """执行一个完整的认知周期"""
        self.cycle_count += 1
        print(f"\n=== 认知周期 #{self.cycle_count} ===")
        
        # 1. 感知
        print("感知阶段: 从环境中提取信息")
        self.perceive(environment)
        print(f"  工作记忆: {len(self.working_memory.elements)} 个元素")
        
        # 2. 注意
        print("注意阶段: 选择性关注")
        attended = self.attend()
        if attended:
            print(f"  关注: {attended}")
            
            # 3. 记忆检索
            print("检索阶段: 从长期记忆中提取相关知识")
            retrieved = self.retrieve_from_memory(attended)
            print(f"  检索到 {len(retrieved)} 个记忆词条")
        
        # 4. 决策和动作
        print("决策阶段: 选择并执行动作")
        rule = self.select_action()
        if rule:
            self.execute_action(rule)
        else:
            print("  没有适用的规则,尝试学习新规则")
            # 学习新规则(简化版)
            new_rule = ProductionRule(
                condition=f"situation_{self.cycle_count}",
                action=f"respond_{self.cycle_count}"
            )
            self.long_term_memory.add_rule(new_rule)
            print(f"  创建新规则: {new_rule}")
            
        # 5. 记忆衰减
        self.long_term_memory.decay()
        
        return True
        
    def status(self):
        """显示系统状态"""
        print("\n========== 系统状态 ==========")
        print(f"认知周期: {self.cycle_count}")
        print(f"长期记忆词条: {len(self.long_term_memory.chunks)}")
        print(f"生产规则: {len(self.long_term_memory.rules)}")
        print(f"工作记忆: {self.working_memory}")
 
 
# 演示使用
if __name__ == "__main__":
    # 创建认知架构
    agent = CognitiveArchitecture()
    
    # 初始化一些知识
    agent.long_term_memory.add_chunk(Chunk(
        type="concept",
        slots={"name": "目标", "description": "AI系统的意图表征"},
        activation=0.8
    ))
    
    agent.long_term_memory.add_chunk(Chunk(
        type="rule",
        slots={"pattern": "看到红色", "action": "停止"},
        activation=0.7
    ))
    
    agent.long_term_memory.add_rule(ProductionRule(
        condition="红色",
        action="停止",
        utility=0.9
    ))
    
    print("认知架构演示")
    print("=" * 40)
    
    # 运行多个认知周期
    environments = [
        {"color": "蓝色", "distance": "远", "speed": "快"},
        {"color": "红色", "distance": "近", "speed": "快"},
        {"color": "绿色", "distance": "远", "speed": "慢"},
        {"color": "黄色", "distance": "中", "speed": "中"},
    ]
    
    for env in environments:
        print(f"\n环境输入: {env}")
        agent.cognitive_cycle(env)
        
        # 每两个周期显示状态
        if agent.cycle_count % 2 == 0:
            agent.status()

12.2 运行说明

运行这个程序,你会看到:

认知架构演示
========================================

环境输入: {'color': '蓝色', 'distance': '远', 'speed': '快'}

=== 认知周期 #1 ===
感知阶段: 从环境中提取信息
  工作记忆: 3 个元素
注意阶段: 选择性关注
  关注: Chunk(percept: feature=color, value=蓝色, act=0.87)
检索阶段: 从长期记忆中提取相关知识
  检索到 0 个记忆词条
决策阶段: 选择并执行动作
  没有适用的规则,尝试学习新规则
  创建新规则: ProductionRule(...)

这个简化的演示展示了认知架构的核心概念:

  • 工作记忆存储当前正在处理的信息
  • 长期记忆存储持久化的知识和规则
  • 认知周期包含感知、注意、检索、决策和执行
  • 学习机制能够从经验中生成新的规则

12.3 扩展方向

这个基础实现可以往多个方向扩展:

  1. 更复杂的注意力机制:实现竞争性注意模型,让多个输入争夺注意资源

  2. 层次化目标管理:支持目标分解和子目标追踪

  3. 多模态感知:整合视觉、听觉、语言等多种感知通道

  4. 社会认知:添加对其他智能体的建模能力

  5. 情感和动机:引入情感状态和内在动机驱动行为


十三、主流认知架构比较

维度SOARACT-RCLARION神经形态
理论基础物理符号系统理性分析+神经科学双重过程理论神经科学
知识表示生产规则+语义网络心理词条规则+联结表示分布式神经模式
学习机制强化学习+归纳学习案例学习+知识编译多机制整合突触可塑性
优势领域问题求解技能习得隐性与显性知识整合感知、运动控制
认知规模中等中等中等大规模

十四、结语:认知架构的未来

认知架构研究已经走过了四十多年的历程,从SOAR和ACT-R的诞生,到CLARION的混合方法,再到神经形态计算和深度学习的融合,这个领域一直在不断演进。

当前,我们正处于一个令人兴奋的时刻:大型语言模型展示了大规模统计学习的惊人能力,而认知架构提供了理解和构建通用智能的理论框架。两者的结合可能会带来真正的突破。

未来的认知架构可能会:

  • 整合更多神经科学的发现,特别是关于意识、情感和自我意识的研究
  • 在具身智能和机器人领域得到更广泛的应用
  • 成为人机协作和脑机接口的理论基础
  • 帮助我们更好地理解人类智能和认知障碍

无论最终走向何方,认知架构研究的核心目标——构建能够像人类一样思考、学习和适应的智能系统——将继续推动人工智能和认知科学的发展。


学术来源与参考文献

  1. Newell, A. & Simon, H. A. (1976). Computer science as empirical inquiry: Symbols and search. Communications of the ACM, 19(3), 113-126.
  2. Laird, J. E., Newell, A. & Rosenbloom, P. S. (1987). Soar: An architecture for general intelligence. Artificial Intelligence, 33(1), 1-64.
  3. Anderson, J. R. (1983). The Architecture of Cognition. Harvard University Press.
  4. Anderson, J. R. (2007). How Can the Human Mind Occur in the Physical Universe? Oxford University Press.
  5. Sun, R. (2002). Duality of the Mind: A Bottom-up Approach Toward Cognition. Lawrence Erlbaum Associates.
  6. Indiveri, G. & Hauri, S. (2011). Neuromorphic engineering. Frontiers in Neuroscience, 5, 118.
  7. Merolla, P. A. et al. (2014). A million spiking-neuron integrated circuit with a scalable communication network and interface. Science, 345(6197), 668-673.
  8. Hassabis, D. et al. (2017). Neuroscience-inspired artificial intelligence. Neuron, 95(2), 245-258.
  9. Baars, B. J. (1988). A Cognitive Theory of Consciousness. Cambridge University Press.
  10. Franklin, S. & Graesser, A. (1997). Is it an agent, or just a program?: A taxonomy for autonomous agents. Intelligent Agents III, 21-35.
  11. Dehaene, S. & Changeux, J. P. (2011). Experimental and theoretical approaches to conscious processing. Neuron, 70(2), 200-227.

相关文档:符号系统理论 | 结构主义与AI | 知识表示与推理 | 非经典逻辑