第4章 从人工智能到认知工程
人工智能的发展,长期以来主要围绕一个问题展开:
如何让机器完成原本需要人来完成的任务?
这个问题推动了机器学习、计算机视觉、自然语言处理、机器人控制、专家系统以及各种人工智能技术的发展。
但是,当人工智能从“完成任务”进一步走向“模拟人”时,一个更加基础的问题开始出现:
机器到底是在模拟人的什么?
如果只是让机器完成一个任务,那么可以直接寻找任务的输入、输出和控制方法。
例如:
输入图像
↓
识别鸡蛋
↓
抓取鸡蛋
但如果目标是:
模拟人的感知与认知过程。
那么问题就完全不同了。
机器不仅需要知道“鸡蛋是什么”,还需要知道:
我看到了什么?
我摸到了什么?
这个对象有什么属性?
这些属性正在怎样变化?
这些变化之间有什么关系?
当前状态意味着什么?
当前任务是什么?
什么行为更加合适?
行为以后发生了什么?
新的变化是否改变了原来的认知?
这意味着人工智能需要从“任务实现”进一步进入:
认知过程工程。
这就是本书提出“认知工程”的原因。
4.1 人工智能解决的是“能力”,认知工程研究的是“过程”
传统人工智能通常强调能力。
例如:
图像识别能力
语音识别能力
文本生成能力
路径规划能力
目标检测能力
机械控制能力
这些能力可以分别设计。
例如一个机器人可以拥有:
视觉模块
+
语音模块
+
运动模块
+
导航模块
于是形成一个具有多种能力的机器人。
但是:
多个能力的集合,并不自动形成认知。
一个机器人能够识别鸡蛋:
Object = Egg
并不意味着它理解鸡蛋。
一个机器人能够检测压力:
Pressure = 2N
也不意味着它知道:
这个压力对于当前对象是否合适。
一个机器人能够执行抓取:
Grip()
也不意味着它能够根据当前状态调整抓取。
因此:
能力
≠
认知
能力解决:
系统能做什么。
认知工程进一步研究:
系统为什么这样理解、如何形成当前判断,以及判断如何随着环境变化而变化。
4.2 从“结果”转向“过程”
传统人工智能研究中,一个非常重要的思想是:
只要结果正确,内部过程可以被隐藏。
例如:
输入:
一张图片
输出:
鸡蛋
只要识别准确,就可以认为任务完成。
但是在认知工程中,这远远不够。
我们需要知道:
输入
↓
发现哪些元素
↓
形成什么对象
↓
提取哪些属性
↓
观察到哪些状态
↓
建立了哪些关系
↓
调用了什么经验
↓
形成了什么匹配
↓
为什么产生当前认知
因此,本书研究的重点从:
Input → Output
转向:
Input
↓
Perception
↓
Element
↓
Object
↓
Attribute
↓
State
↓
Relation
↓
Matching
↓
Cognition
↓
Decision
↓
Behavior
↓
Feedback
这里的每一个过程都必须能够被解释。
这就是认知工程的第一个基本特征:
认知工程不仅关注结果,还关注结果形成的过程。
4.3 从“模型”转向“认知结构”
人工智能系统大量使用模型。
例如:
分类模型
预测模型
生成模型
检测模型
控制模型
模型通常负责:
输入
↓
计算
↓
输出
但人的认知并不是一个单独的数学函数。
当一个人看到一个杯子时,他所面对的不是一个简单的:
Cup = 0.97
而是一个复杂的认知结构:
对象:
杯子
属性:
形状
颜色
大小
材质
重量
状态:
静止
空
有水
正在被拿起
关系:
在桌子上
靠近手
属于当前环境
经验:
过去使用过类似杯子
目标:
喝水
行为:
伸手
抓取
移动
因此,认知工程需要建立的不是单一模型,而是:
认知结构。
认知结构可以由:
Element
Object
Attribute
State
Relation
Experience
Memory
Goal
Matching
等共同组成。
这也是本书后面建立 Cognitive Class 和 Cognitive Method 的理论基础。
4.4 从静态对象转向动态对象
传统人工智能中的对象,经常被处理成一个相对固定的标签。
例如:
Object = Egg
但现实世界中的对象不是静态的。
鸡蛋可能:
静止
↓
被接触
↓
被推动
↓
被抓取
↓
发生旋转
↓
产生滑移
↓
发生形变
↓
破裂
因此,对象本身具有动态状态。
可以表示为:
Object(t)
而对象属性也会随着时间变化:
Attribute(t)
例如:
Pressure(t)
Position(t)
Velocity(t)
Contact(t)
Slip(t)
Damage(t)
于是:
对象
+
属性
+
时间
+
变化
才构成真实环境中的动态对象。
认知工程必须处理这种动态性。
4.5 从固定规则转向动态匹配
传统专家系统经常采用:
IF condition
THEN action
例如:
IF object = egg
THEN grip_pressure = 1.5N
这种方法在环境稳定的时候可能有效。
但现实环境不是固定的。
例如:
鸡蛋 A
重量 = 50g
摩擦 = 高
和:
鸡蛋 B
重量 = 70g
摩擦 = 低
虽然都属于:
Egg
但抓取条件并不相同。
因此不能简单地:
Egg → Fixed Action
而应该:
Object
+
Current Attributes
+
Current State
+
Current Environment
+
Current Goal
↓
Dynamic Matching
↓
Current Cognition
↓
Current Action
这意味着:
认知工程不是寻找一个永久正确的规则,而是寻找当前条件下最合适的匹配。
4.6 从“数据量”转向“数据关系”
这是认知工程与单纯大数据方法的重要区别之一。
当机器人面对现实世界时,传感器可以产生极其庞大的数据。
例如:
视觉:
每秒大量图像信息
触觉:
大量压力点
运动:
大量位置与速度数据
声音:
连续波形
温度:
连续变化
如果把所有数据都直接保存,然后依靠大量测试寻找正确行为,那么数据规模会迅速膨胀。
于是系统可能变成:
大量数据
↓
大量测试
↓
大量样本
↓
寻找正确动作
这种方法可以解决一些问题,但存在一个根本缺陷:
它容易把认知问题转化为数据搜索问题。
本书提出另一种方向:
数据
↓
元素
↓
属性
↓
状态
↓
关系
↓
动态变化
↓
匹配
重点不再是:
“需要多少数据?”
而是:
“数据之间形成了什么关系?”
例如抓取鸡蛋。
与其记录数百万次:
压力 1.1N → 动作 A
压力 1.2N → 动作 B
压力 1.3N → 动作 C
...
不如建立:
压力 ↑
+
滑移 ↑
+
任务 = 保持完整
从而得到一个动态认知关系:
当前抓取稳定性下降
然后调整行为。
这就是从:
数据量驱动
向:
关系驱动
转变。
4.7 从不断测试转向实时认知
机器人系统常见的一种工程思路是:
设计动作
↓
测试
↓
失败
↓
调整参数
↓
再次测试
↓
再次调整
这种方式本身并没有错误。
工程测试当然是必要的。
问题在于:
如果所有环境变化都依赖大量预先测试,那么系统很难覆盖现实世界的无限变化。
现实中的对象并不完全重复。
机器人面对的可能是:
不同鸡蛋
不同重量
不同摩擦
不同温度
不同手指材料
不同接触角度
不同速度
不同目标
因此不可能为所有情况建立一个静态测试表。
认知工程的方向则不同:
测试
不是最终认知
测试
用于形成经验
经验
进入认知系统
实时感知
不断更新当前状态
当前状态
不断重新匹配
于是:
历史经验
+
当前感知
+
当前状态
+
当前目标
↓
实时认知
这样,历史测试不再承担所有决策责任。
它只是认知的一部分。
4.8 机器人抓取鸡蛋:从控制问题转向认知问题
我们可以重新观察一个非常简单的动作:
机器人抓取鸡蛋。
传统控制思路可能是:
目标:
抓住鸡蛋
参数:
压力 = P
速度 = V
位置 = X
执行:
Grip()
认知工程则会问:
当前对象是什么?
↓
对象有什么属性?
↓
当前接触状态是什么?
↓
压力如何变化?
↓
摩擦如何变化?
↓
是否发生滑移?
↓
对象是否发生形变?
↓
当前任务是什么?
↓
哪个状态更加安全?
于是问题变成:
如何通过动态匹配,在完成任务的同时,使对象受损风险尽可能低?
可以表示为:
Task Completion
+
Stability
+
Object Protection
并进一步形成:
Damage → MIN
这里的“最小受损值”不是一个固定数字。
它必须根据当前对象状态不断变化。
因此:
Optimal Grip
≠
Fixed Pressure
而是:
Optimal Grip
=
Dynamic Matching
这就是本书后面“最小受损匹配”理论的工程来源。
4.9 认知工程不是替代人工智能,而是重新组织人工智能
提出认知工程,并不是要否定人工智能。
相反,人工智能仍然可以作为能力层。
例如:
视觉模型
语音模型
预测模型
控制模型
都可以成为认知系统中的工具。
但这些工具不应该直接等于认知。
可以把系统理解成:
认知工程
│
┌────────────┼────────────┐
↓ ↓ ↓
感知能力 推理能力 行为能力
│ │ │
模型/算法 模型/算法 控制/算法
└────────────┼────────────┘
↓
认知结构
↓
动态匹配
↓
个体认知
因此:
人工智能提供能力,认知工程组织能力。
这两者不是互相替代的关系。
4.10 从“人工智能系统”到“认知系统”
传统人工智能系统可以简单表示为:
Input
↓
AI Model
↓
Output
认知系统则需要进一步扩展:
Environment
↓
Perception
↓
Elements
↓
Objects
↓
Attributes
↓
States
↓
Relations
↓
Dynamic Matching
↓
Cognition
↓
Decision
↓
Behavior
↓
Feedback
↓
Memory / Experience Update
↓
New Cognition
这意味着系统内部必须能够保存:
当前是什么
过去是什么
发生了什么变化
为什么发生变化
当前如何理解
下一步可能怎样
采取行为以后发生了什么
所以认知系统实际上是一个:
动态状态系统。
而不是简单的:
输入—输出机器。
4.11 认知工程中的“个体”
到这里,“个体认知”开始真正进入系统。
假设两个机器人面对完全相同的对象。
它们可能拥有:
相同感知
相同对象
相同属性
相同当前状态
但是,如果它们拥有不同的:
经验
记忆
先验
目标
权重
历史反馈
那么最终认知仍然可能不同。
例如:
机器人 A
过去经常遇到滑移
→ 对滑移更加敏感
机器人 B
过去很少遇到滑移
→ 对滑移敏感度较低
因此:
相同环境
+
不同个体状态
↓
不同动态匹配
↓
不同认知
这就是后面“个体认知理论”的基础。
所以认知工程不是建立一个:
所有机器人完全相同的统一大脑。
而是允许:
Group Knowledge
+
Individual Experience
+
Current Perception
共同形成当前认知。
4.12 认知工程的基本层次
经过前面的分析,可以初步建立认知工程的层次结构。
第一层:环境
Environment
系统之外的现实世界。
第二层:感觉
Sense
视觉、听觉、触觉、压力、温度等。
第三层:感知
Perception
将感觉转化为可处理的信息。
第四层:元素
Element
形成基本信息单元。
第五层:对象
Object
对相关元素进行组织。
第六层:属性
Attribute
描述对象特征。
第七层:状态
State
描述对象和环境当前所处状态。
第八层:关系
Relation
描述元素、对象、属性和状态之间的关系。
第九层:动态匹配
Matching
根据当前状态持续比较和组合信息。
第十层:认知
Cognition
形成当前理解。
第十一层:决策
Decision
选择行为方向。
第十二层:行为
Behavior
改变环境。
第十三层:反馈
Feedback
产生新的感知。
最终形成:
Environment
↓
Sense
↓
Perception
↓
Element
↓
Object
↓
Attribute
↓
State
↓
Relation
↓
Matching
↓
Cognition
↓
Decision
↓
Behavior
↓
Feedback
↓
Perception
这就是认知工程的基本闭环。
4.13 从认知理论走向工程实现
如果认知理论只能描述:
人很复杂。
那么它仍然不是工程理论。
真正的理论工程必须继续回答:
对象如何定义?
属性如何定义?
状态如何保存?
关系如何表达?
动态变化如何记录?
匹配如何计算?
权重如何变化?
认知如何形成?
决策如何调用?
经验如何保存?
反馈如何进入系统?
因此,本书后续章节必须逐步完成:
概念
↓
定义
↓
结构
↓
关系
↓
规则
↓
算法
↓
Method
↓
Class
↓
Engine
这也是“理论工程”四个字真正的含义。
4.14 本章核心结论
本章并不是要重新定义人工智能,而是要确定一个新的研究方向:
人工智能关注机器能力,认知工程关注能力如何组织成类似人的感知、认知、决策和行为过程。
因此:
人工智能
=
能力
认知工程
=
认知过程的工程化
进一步:
AI Model
→
提供计算能力
Cognitive Structure
→
组织信息
Dynamic Matching
→
形成当前状态判断
Individual Cognition
→
形成个体理解
Decision
→
产生选择
Behavior
→
改变环境
Feedback
→
更新下一轮认知
最终,本书要解决的不是:
怎样让机器测试更多次,直到找到一个看起来正确的动作。
而是:
怎样让机器能够根据当前感知到的动态状态,结合对象属性、环境变化、历史经验和当前目标,不断重新形成匹配,并据此产生适合当前状态的认知与行为。
这才是从人工智能走向认知工程的核心转变。