第六章 认知匹配:机器如何从对象、属性与变化形成认知
第五章建立了对象属性理论。
我们已经不再把对象理解为一个静态的数据结构,而是把对象理解为一个持续变化的认知结构:
对象
↓
属性
↓
属性值
↓
属性变化
↓
属性关系
↓
对象状态
但是,到这里仍然存在一个最关键的问题:
机器获得了这么多元素、对象和属性以后,究竟如何形成“认知”?
机器看到一个白色、椭圆形、约 60 克的物体,并不能因为这些数据存在,就自动得到:
这是鸡蛋。
机器必须把当前获得的信息,与已有的对象、属性、状态、关系、经验和目标进行比较。
这种过程,本书定义为:
认知匹配(Cognitive Matching)
认知匹配是本书整个理论体系的核心机制之一。
6.1 什么是认知匹配
本书定义:
认知匹配,是机器将当前感知获得的元素、对象、属性、状态、关系及其动态变化,与已有认知结构进行比较、关联、协同和概率评估,从而形成当前认知结果的过程。
可以简化为:
当前感知
↓
当前对象
↓
当前属性
↓
当前状态
↓
已有认知结构
↓
匹配
↓
认知结果
因此:
Matching → Cognition
不是:
Data → Cognition
这是本书一个非常重要的区别。
6.2 认知不是数据本身
假设机器获得:
Color = White
Shape = Oval
Weight = 60g
Surface = Smooth
这些只是:
感知数据
机器还需要知道:
这些数据与什么对象相似?
哪些属性最重要?
哪些属性相互支持?
哪些属性相互冲突?
当前状态是什么?
历史上有没有类似对象?
当前任务是什么?
所以:
Data
≠
Cognition
而是:
Data
↓
Element
↓
Attribute
↓
Matching
↓
Cognition
6.3 认知匹配的基本输入
认知匹配至少可以接受以下输入:
Element
Object
Attribute
Relation
State
Time
Position
Motion
Context
Memory
Experience
Goal
因此可以表示:
Cognitive Matching
=
F(
Element,
Object,
Attribute,
Relation,
State,
Time,
Position,
Motion,
Context,
Memory,
Experience,
Goal
)
这并不意味着每一次匹配都必须使用全部输入。
不同任务使用不同的匹配维度。
6.4 认知匹配不是一种匹配
“匹配”不是单一算法。
人的认知过程中实际上存在多种不同性质的匹配。
本书暂时建立以下认知匹配体系:
认知匹配
│
├── 感觉匹配
├── 元素匹配
├── 属性匹配
├── 对象匹配
├── 关系匹配
├── 语义匹配
├── 逻辑匹配
├── 状态匹配
├── 时间匹配
├── 位置匹配
├── 运动匹配
├── 情境匹配
├── 经验匹配
├── 目标匹配
├── 概率匹配
└── 协同匹配
这些匹配不是完全平行的。
它们可以形成层级结构。
6.5 第一层:感觉匹配
感觉匹配是最底层的匹配之一。
例如视觉系统获得:
颜色
形状
亮度
轮廓
触觉系统获得:
压力
摩擦
温度
振动
机器可以比较:
当前感觉
↓
历史感觉
例如:
当前触觉 = 柔软
历史触觉 = 柔软
形成:
Feeling Match = High
感觉匹配并不一定马上形成对象认知。
它首先解决:
当前感觉与过去感觉是否存在对应关系?
6.6 感觉匹配的意义
人的感觉系统并不是每一次都从零开始。
例如第一次触摸某种材质时:
不知道是什么
第二次接触类似材质:
感觉熟悉
第三次:
快速判断
这实际上可以理解为:
Current Sensation
↓
Previous Sensation
↓
Matching
↓
Similarity
所以:
感觉匹配是经验形成的重要基础。
6.7 第二层:元素匹配
感觉经过初步处理以后,可以形成感知元素。
例如视觉获得:
圆形
白色
触觉获得:
柔软
重量传感器获得:
60g
这些元素可以与已有元素进行匹配:
White
↔
White
Oval
↔
Oval
Soft
↔
Soft
形成:
Element Match
6.8 第三层:属性匹配
元素进一步组成对象属性。
例如:
Shape = Oval
Weight = 60g
Surface = Smooth
机器将当前属性与候选对象的属性进行匹配。
例如:
Current Object
↓
┌──────┼──────┐
↓ ↓ ↓
Egg Ball Stone
分别计算:
Egg Match
Ball Match
Stone Match
属性匹配开始进入对象识别阶段。
6.9 第四层:对象匹配
对象匹配解决:
当前感知对象与哪个已有认知对象最接近?
例如:
Current Object
与:
Egg
Ball
Stone
Apple
进行匹配。
可以形成:
Egg = 0.91
Ball = 0.63
Stone = 0.28
Apple = 0.54
此时机器不是简单输出:
Egg
而是内部形成:
Candidate Distribution
这为第五卷的概率认知理论建立基础。
6.10 第五层:关系匹配
对象单独存在时,很多认知是不完整的。
例如:
Cup
只是一个对象。
但如果:
Egg
inside
Basket
机器获得的认知就不同。
因此需要匹配:
Object A
Relation
Object B
例如:
A near B
A inside B
A on B
A above B
A touching B
A moving toward B
这就是:
关系匹配。
6.11 关系本身也是认知元素
关系不是简单的连接线。
例如:
A → B
如果关系是:
near
那么表示:
A 靠近 B
如果关系是:
inside
则表示:
A 在 B 内部
如果关系是:
holding
则表示:
A 正在持有 B
因此:
Relation
本身可以成为认知元素。
进一步可以形成:
Object
+
Object
+
Relation
=
Relational Object Structure
6.12 第六层:语义匹配
语义匹配解决的是:
不同表达是否指向相同或相近的认知意义?
例如:
electric toothbrush
和:
powered toothbrush
可能在某些上下文中具有较高语义相关性。
再例如:
抓住鸡蛋
和:
稳定夹持鸡蛋
虽然语言表达不同,但可能描述相同或相近的行为结构。
因此:
Symbol
↓
Meaning
↓
Semantic Matching
但是本书需要特别区分:
语义匹配不是认知匹配的全部。
语义只是认知匹配的一种。
机器完全可以在没有语言的情况下完成大量认知。
6.13 第七层:逻辑匹配
逻辑匹配解决:
当前信息是否满足某种逻辑关系或条件?
例如:
Pressure ↑
AND
Slip ↑
则:
Risk ↑
或者:
Object = Egg
AND
Deformation > Threshold
则:
Damage Risk = High
这就是逻辑匹配。
逻辑匹配可以表示:
AND
OR
NOT
IF
THEN
但需要注意:
逻辑匹配通常建立在已经获得的元素、属性和状态之上。
因此:
Element
↓
Attribute
↓
State
↓
Logic
而不是直接:
Logic
↓
Reality
6.14 第八层:状态匹配
状态匹配是本书非常重要的一层。
机器需要知道:
对象现在是什么状态?
例如:
Egg
可能处于:
静止
接触
抓取
移动
滑动
掉落
破损
状态不是简单一个属性。
它往往来自多个动态属性的协同。
例如:
Position ≈ Stable
Pressure > 0
Slip ≈ 0
Motion ≈ 0
得到:
Grip = Stable
6.15 状态匹配是动态匹配
如果:
t1:
Slip = Low
t2:
Slip = Medium
t3:
Slip = High
那么机器不能只看:
当前 Slip
还需要知道:
Slip 正在增加。
所以状态匹配应该包括:
State(t)
+
State(t-1)
+
ΔState
形成:
Dynamic State Matching
6.16 第九层:时间匹配
很多认知不能脱离时间。
例如:
A 先发生
B 后发生
机器需要知道:
A → B
还是:
B → A
因此时间匹配包括:
时间点
时间顺序
时间间隔
持续时间
周期
变化速度
例如:
Pressure ↑
↓
Deformation ↑
如果:
Pressure
先变化,
Deformation
随后变化,
那么机器可以建立:
Temporal Relation
6.17 时间匹配与因果认知
时间先后并不等于因果。
例如:
A happened before B
只能证明:
A → B
发生在时间上。
但不能直接证明:
A causes B
所以本书需要区分:
时间匹配
和:
因果匹配
后者需要进一步建立:
重复关系
条件关系
变化对应
反馈关系
才能形成较强因果认知。
6.18 第十层:位置匹配
位置匹配解决:
对象在哪里?
包括:
X
Y
Z
Distance
Direction
Region
例如:
Object A
Position = (x1,y1,z1)
与:
Object B
Position = (x2,y2,z2)
进行比较。
可以得到:
Distance
Direction
Relative Position
6.19 相对位置比绝对位置更重要
对于机器人来说:
Egg
Position = (500,200,100)
本身意义有限。
更重要的是:
Hand
↓
Egg
之间的关系:
Distance = 10cm
Direction = Forward
因此:
认知匹配应该大量使用对象之间的相对位置,而不是只使用绝对坐标。
6.20 第十一层:运动匹配
运动匹配研究:
位置变化
速度
加速度
方向
轨迹
例如:
Position(t1)
Position(t2)
Position(t3)
可以形成:
Motion
进一步:
Motion Pattern
例如:
靠近
远离
旋转
摆动
滑动
跌落
6.21 运动是属性变化
运动其实可以理解为:
Position(t)
随时间变化。
因此:
Motion
=
ΔPosition / ΔTime
这说明:
运动匹配本质上也是动态属性匹配的一种特殊形式。
类似地:
Pressure Rate
Deformation Rate
Temperature Rate
也都可以纳入动态属性变化体系。
6.22 第十二层:情境匹配
相同对象、相同属性,在不同情境中可能产生不同认知。
例如:
Object = Egg
在:
厨房
与:
机器人搬运系统
中的任务不同。
机器人搬运系统关注:
重量
摩擦
脆弱程度
抓取稳定性
而烹饪系统可能关注:
温度
新鲜度
破损
因此:
Context
决定:
哪些属性重要
哪些匹配优先
哪些结果需要关注
6.23 第十三层:经验匹配
经验匹配解决:
当前情况与过去发生过的情况是否相似?
例如机器人过去抓过:
Egg_001
Egg_002
Egg_003
每次都发现:
Pressure = 0.7N
Friction = High
Slip = Low
Damage = 0
那么下一次遇到类似对象时:
Current Object
↓
Experience Matching
↓
Historical Pattern
可以快速形成初始策略。
这就是:
经验匹配。
6.24 经验不是固定答案
经验匹配不能变成:
上次成功
↓
这次直接复制
因为:
对象不同
环境不同
位置不同
材料不同
状态不同
所以经验只能形成:
Prior
而不是:
Final Answer
这也是概率认知的重要来源。
6.25 第十四层:目标匹配
机器行为不是没有目的。
例如抓鸡蛋的目标可能是:
目标:
把鸡蛋从 A 移动到 B
此时认知匹配就必须围绕目标进行。
机器需要判断:
当前状态
是否满足目标?
例如:
Egg Stable = Yes
Destination Reached = No
那么继续移动。
如果:
Egg Stable = No
则需要调整抓取。
所以:
Current State
+
Goal State
之间也存在:
目标匹配。
6.26 第十五层:概率匹配
到这里,机器已经有大量匹配结果:
感觉
元素
属性
对象
关系
状态
时间
位置
运动
情境
经验
目标
这些结果可能互相支持,也可能互相冲突。
因此最终不应该强制输出:
True / False
而应该形成:
Probability Distribution
例如:
Egg 0.91
Ball 0.06
Stone 0.02
Unknown 0.01
这就是:
概率匹配。
6.27 人的认知为什么像概率匹配
这也是本书一个重要的理论假设:
人的认知并不是面对现实以后直接获得绝对真值,而是在有限感觉、经验、记忆和情境下,对候选解释进行概率性匹配。
例如远处看到一个人:
可能是 A
可能是 B
可能是陌生人
随着距离缩短:
视觉元素增加
再听到声音:
听觉元素增加
再看到面部:
属性匹配增强
最终:
P(A) ↑
P(B) ↓
这就是一个动态认知过程。
6.28 第十六层:协同匹配
这是本章最重要的匹配类型之一。
前面的匹配可以分别进行:
Pressure Matching
Friction Matching
Slip Matching
Deformation Matching
但是实际行为认知需要:
Pressure
+
Friction
+
Slip
+
Deformation
+
Motion
共同参与。
所以:
协同匹配是多个匹配结果之间进一步进行联合判断的过程。
6.29 鸡蛋抓取的完整匹配
假设机器人接近鸡蛋。
第一步:视觉匹配
Shape → Oval
Color → White
Size → Small
得到:
Candidate = Egg
第二步:位置匹配
Hand → Egg
Distance = 8cm
得到:
Approaching
第三步:接触匹配
Pressure > 0
ContactArea > 0
得到:
Contact
第四步:摩擦匹配
Friction = Medium
第五步:滑移匹配
Slip = Low
第六步:形变匹配
Deformation = Low
第七步:状态协同匹配
Pressure
+
Friction
+
Slip
+
Deformation
+
Motion
得到:
Grip Stability = High
Damage Risk = Low
第八步:行为决策
系统发现:
Stability >= Required
Damage = Minimal
于是:
Stop Increasing Pressure
这就是本书真正希望建立的机器行为逻辑。
6.30 机器不应该不断测试
传统机器人控制中,一个简单的方法是:
尝试
↓
失败
↓
调整
↓
再尝试
↓
失败
↓
再调整
这种方法在很多实际系统中确实可以工作。
但是问题是:
测试成本
+
时间成本
+
数据成本
+
设备磨损
+
对象损坏
对于脆弱对象尤其明显。
例如鸡蛋:
测试一次
→
可能损坏一次
如果通过不断试验寻找压力:
0.2N
0.4N
0.6N
0.8N
1.0N
1.2N
很可能根本没有必要。
6.31 从“不断测试”转向“动态匹配”
本书提出另一种方向:
感知
↓
对象识别
↓
属性识别
↓
历史经验
↓
当前状态
↓
动态匹配
↓
预测
↓
最小风险动作
机器人不是盲目地:
试一个
而是根据当前数据不断更新:
Current State
然后计算:
Next Best Action
6.32 动态匹配模型
可以初步表示:
M(t)
=
F(
E(t),
O(t),
A(t),
R(t),
S(t),
T(t),
P(t),
V(t),
C(t),
H(t),
G(t)
)
其中:
E = Element
O = Object
A = Attribute
R = Relation
S = State
T = Time
P = Position
V = Motion
C = Context
H = History
G = Goal
最终输出:
Cognition(t)
6.33 认知匹配的动态循环
认知不是一次计算。
而是:
t1
↓
Match
↓
Cognition
↓
Action
↓
t2
↓
New Data
↓
Rematch
↓
New Cognition
↓
New Action
因此:
认知是连续更新的。
可以表示为:
C(t+1)
=
Update(
C(t),
NewData(t+1)
)
这意味着:
机器每获得新的感觉数据,都可能重新认识当前对象。
6.34 认知匹配与学习
如果:
当前匹配
产生错误:
预测:
Grip Stable
实际:
Egg Slipped
那么系统获得:
Prediction Error
下一次遇到类似对象时:
历史经验
就可以影响:
匹配权重
于是:
Matching
↓
Action
↓
Result
↓
Error
↓
Learning
↓
New Matching Model
这就进入后面的:
学习理论。
6.35 认知偏差进入匹配系统
现在可以正式回答前面提出的问题:
认知偏差应该放在哪里?
本书的答案是:
认知偏差属于认知匹配机制。
它可以影响:
先验
权重
阈值
注意
候选排序
风险判断
例如:
正常匹配:
Egg = 0.80
Ball = 0.15
如果某个个体由于过去经历形成强烈的先验:
Fragile Object Prior ↑
那么:
Egg Risk
的匹配权重可能提高。
因此:
Cognition Bias
↓
Matching Parameters
↓
Matching Result
↓
Cognition
这比把认知偏差当成“认知结果之后的错误”更合理。
6.36 个体认知开始出现
到这里,“个体认知”自然进入理论。
因为不同个体可以拥有不同:
Memory
Experience
Prior
Weight
Threshold
Goal
Bias
因此面对同一个输入:
Input
可以得到:
Person A → Cognition A
Person B → Cognition B
即:
Same Input
+
Different Matching Model
=
Different Cognition
这将成为后面“个体认知理论”的核心。
6.37 Cognitive Matching Model
因此可以定义:
认知匹配模型(Cognitive Matching Model)是描述一个认知系统如何利用感知元素、对象属性、关系、状态、时间、空间、运动、经验、目标和个体参数形成认知结果的模型。
可以表示:
CMM
│
├── Perception
├── Element
├── Object
├── Attribute
├── Relation
├── State
├── Time
├── Position
├── Motion
├── Context
├── Memory
├── Experience
├── Goal
├── Bias
└── Probability
6.38 Cognitive Matching Engine
理论进入工程以后,可以建立:
CognitiveMatchingEngine
内部可以进一步划分:
CognitiveMatchingEngine
│
├── SensationMatcher
├── ElementMatcher
├── AttributeMatcher
├── ObjectMatcher
├── RelationMatcher
├── SemanticMatcher
├── LogicMatcher
├── StateMatcher
├── TimeMatcher
├── PositionMatcher
├── MotionMatcher
├── ContextMatcher
├── ExperienceMatcher
├── GoalMatcher
└── ProbabilityMatcher
然后由:
Coordinator
进行协同匹配。
注意:
这是工程结构,不是理论本身。
理论定义:
是什么
为什么
关系是什么
工程定义:
怎么实现
怎么调用
怎么计算
怎么组织
两者必须保持边界。
6.39 认知匹配的总结构
到本章结束,可以形成:
当前现实
│
↓
感觉
│
↓
感知元素
│
↓
对象
│
┌─────────────┼─────────────┐
↓ ↓ ↓
属性 关系 状态
│ │ │
└─────────────┼─────────────┘
↓
动态变化数据
│
┌───────────────────┼───────────────────┐
↓ ↓ ↓
时间 位置 运动
│ │ │
└───────────────────┼───────────────────┘
↓
多维认知匹配
│
┌───────────────────┼───────────────────┐
↓ ↓ ↓
经验 记忆 情境
│ │ │
└───────────────────┼───────────────────┘
↓
个体匹配模型
│
┌─────────┴─────────┐
↓ ↓
偏差 目标
└─────────┬─────────┘
↓
概率匹配
↓
认知
↓
决策
↓
行为
↓
反馈
↓
学习
│
└────→ 再次匹配
6.40 本章核心结论
本章可以形成一个非常明确的理论判断:
认知不是对数据进行一次静态分类,而是一个持续进行的动态匹配过程。
机器的认知过程不是:
数据
→
标签
而是:
感觉
→
元素
→
对象
→
属性
→
关系
→
状态
→
动态变化
→
多维匹配
→
概率
→
认知
进一步:
认知
→
行为
→
反馈
→
新数据
→
再次匹配
因此,本书的核心循环可以正式定义为:
感知—匹配—认知—行为—反馈循环
即:
Perception
↓
Matching
↓
Cognition
↓
Action
↓
Feedback
↓
Perception
而其中最关键的不是某一个固定传感器数据,而是:
对象属性在时间中的动态变化,以及不同属性之间的协同匹配。
对于鸡蛋抓取问题,真正需要寻找的也不是一个固定的:
Pressure = X
而是:
Pressure(t)
Friction(t)
Slip(t)
Deformation(t)
Motion(t)
Contact(t)
共同形成的:
Stable Grip
+
Minimum Damage
状态。
这使“机器人行为”从:
不断测试寻找答案
开始转向:
根据当前对象状态进行动态认知匹配,并实时调整行为。
而这正是下一章必须解决的问题:
第七章 多维认知匹配:感觉、属性、语义、逻辑、状态、时间、位置与运动如何协同
下一章将进一步把本章的各种匹配正式组织成多维认知匹配模型,并重点建立“匹配维度之间不是简单并列,而是存在层级、依赖、冲突、协同和权重动态变化”的理论。