第22章 认知的不确定性
在前面的章节中,我们已经建立了一条逐渐清晰的认知路径:
感觉
↓
感知元素
↓
对象
↓
对象属性
↓
属性变化
↓
属性之间的动态关系
↓
对象动态状态
↓
认知匹配
↓
多维匹配
↓
属性协同匹配
但是,到这里仍然存在一个非常重要的问题:
即使认知系统完成了匹配,它也不能因此认为自己的判断一定正确。
现实世界中的对象始终处于变化之中,感知数据也始终存在误差、不完整性、延迟和冲突。
因此,真正的认知不能只是:
匹配成功 = 正确
匹配失败 = 错误
而应该进一步回答:
当前匹配有多可靠?
这就是认知不确定性产生的原因。
22.1 现实世界不存在完全静止的认知对象
如果我们观察一个鸡蛋,可以说:
对象 = 鸡蛋
但是,如果机器人准备抓取它,仅仅知道“这是一个鸡蛋”显然是不够的。
机器人还需要知道:
重量
表面摩擦
当前受力
接触面积
滑移状态
蛋壳承受能力
当前加速度
抓取方向
抓取速度
而这些数据并不是永远不变的。
例如:
抓取开始
↓
手指接触鸡蛋
↓
压力增加
↓
摩擦力变化
↓
鸡蛋产生微小位移
↓
滑移风险增加
↓
机器人调整压力
↓
状态再次变化
因此,系统面对的不是一个固定的数据集合,而是一个不断变化的状态过程。
22.2 感知本身存在不确定性
任何传感器都不可能无限精确。
例如压力传感器得到:
压力 = 2.1N
这并不意味着真实压力一定就是:
2.100000N
它可能处于某个范围:
2.0N ~ 2.2N
同样:
摩擦系数
滑移速度
形变量
重量
位置
速度
都可能存在误差。
因此:
感知值 ≠ 绝对真实值
更准确地说:
感知值
=
对真实状态的一次观测
于是认知系统面对的是:
真实状态
↑
│
感知
│
↓
观测数据
认知系统无法直接获得“真实状态”,只能根据观测不断逼近它。
22.3 匹配也不是绝对成立
假设系统当前观察到:
压力正常
摩擦正常
滑移很小
形变很小
它可能匹配出:
当前状态 ≈ 稳定抓取
但是,“≈”非常重要。
因为这只是当前数据支持的判断。
如果下一时刻:
压力 ↑
滑移 ↑
形变 ↑
原来的认知就必须发生变化。
因此:
认知不是一次性确定,而是随着新数据不断修正。
可以表示为:
当前认知
↓
新感知
↓
重新匹配
↓
认知更新
↓
新的认知
22.4 不确定性不是系统错误
这里必须区分一个非常重要的概念。
很多传统工程系统喜欢把问题划分成:
True
False
或者:
1
0
但真实世界往往不是这样。
例如机器人抓取鸡蛋:
安全
并不是一个绝对不变的标签。
更合理的状态可能是:
安全程度较高
安全程度下降
存在风险
风险较高
即将损伤
因此:
认知
应该允许存在不同程度的确定性。
也就是说:
不确定性不是认知系统的缺陷,而是认知系统面对真实世界必须具备的能力。
22.5 认知不确定性的来源
认知不确定性至少来自几个方面。
22.5.1 感知误差
传感器本身存在误差。
真实压力
↓
传感器
↓
观测压力
二者不会完全相同。
22.5.2 数据不完整
系统可能只能获得部分属性。
例如:
重量:已知
压力:已知
摩擦:未知
内部结构:未知
此时系统仍然需要进行认知。
因此:
认知不能以“所有数据都已知”为前提。
22.5.3 数据延迟
现实中的状态可能已经发生变化,但是系统获得的数据仍然是上一时刻的数据。
例如:
t1:
滑移 = 0
t2:
开始滑移
t3:
系统才检测到滑移
因此:
感知时间
和:
真实变化时间
可能并不完全一致。
22.5.4 多属性冲突
这是动态认知中非常重要的问题。
例如:
压力:正常
摩擦:正常
滑移:增加
形变:正常
不同属性给出的信息并不完全一致。
系统不能简单地选择其中一个。
而应该进行:
综合匹配
22.5.5 属性变化速度不同
有些属性变化很快:
压力
有些变化较慢:
温度
有些甚至只能通过长期观察才能发现:
材料疲劳
因此不同属性不能采用完全相同的认知时间尺度。
22.6 从“值”进入“范围”
前面第14章已经说明:
Value
State
Change
Rate
Trend
到了概率认知阶段,需要进一步认识:
一个属性值并不一定只能表示成一个点。
例如:
Pressure = 2.1
可以进一步表示成:
Pressure ≈ [2.0, 2.2]
这意味着认知系统处理的并不只是:
一个值
而可能是:
值 + 可信范围
这会直接影响后面的匹配强度。
22.7 从“匹配”进入“匹配程度”
第18章建立了认知匹配,第19章建立了动态匹配,第20章建立了多维匹配,第21章建立了属性协同匹配。
现在必须继续向前推进:
匹配
↓
匹配程度
例如:
对象 A
与:
当前状态
可能存在:
高度匹配
中度匹配
低度匹配
因此:
认知匹配不是简单的“有”或“没有”,而是存在强弱程度。
这就自然进入下一章:
匹配强度。
22.8 不确定性与动态认知
动态认知的关键不是消除所有不确定性。
而是:
让系统能够在不确定条件下持续认知。
例如:
t1
压力正常
滑移未知
↓
初步判断:可能稳定
t2
压力正常
滑移增加
↓
判断更新:稳定性下降
t3
压力略增
滑移继续增加
↓
判断更新:存在风险
t4
调整抓取压力
滑移下降
↓
判断更新:风险下降
这里没有任何一个时刻可以说:
“以后一定不会发生变化。”
系统真正做的是:
观察
↓
匹配
↓
形成当前认知
↓
继续观察
↓
重新匹配
↓
更新认知
这就是动态认知的基本形式。
22.9 不确定性不是最终结果,而是认知过程中的状态
因此,可以把认知过程进一步表示为:
感知
↓
对象识别
↓
属性获取
↓
状态判断
↓
动态匹配
↓
匹配强度
↓
认知不确定性
↓
当前认知
但是这里还不能停止。
因为:
当前认知
↓
新的感知
↓
新的数据
↓
新的匹配
↓
新的认知
所以认知实际上是一种持续更新过程。
22.10 从确定性认知走向概率认知
传统程序可能这样写:
if pressure < threshold:
safe = true
else:
safe = false
这种方法在条件非常稳定时可以工作。
但是对于动态对象,它存在明显限制。
因为现实情况可能是:
压力略高
+
摩擦正在下降
+
滑移正在增加
+
形变尚未明显
这时候很难简单判断:
安全 = true
或者:
安全 = false
更合理的是形成一种程度性的判断:
当前状态对“安全抓取”的支持程度较高
或者:
当前状态对“发生损伤”的支持程度正在增加
这就是从:
Boolean
向:
Probability
发展的基础。
22.11 概率不是凭空产生的
这里尤其需要强调:
概率不是认知系统随意给出的一个数字。
它必须建立在前面的结构之上。
完整路径应该是:
感知数据
↓
对象
↓
属性
↓
属性状态
↓
属性变化
↓
属性关系
↓
多维匹配
↓
协同匹配
↓
匹配强度
↓
匹配权重
↓
概率
所以概率认知并不是独立模块。
它是前面整个认知匹配体系进一步发展的结果。
22.12 机器人抓取鸡蛋中的不确定性
回到本书的工程案例。
机器人抓鸡蛋时,真正需要面对的是:
鸡蛋承受能力
+
手指压力
+
接触面积
+
摩擦
+
滑移
+
形变
+
运动速度
+
加速度
+
抓取方向
这些因素同时变化。
系统不能简单建立:
鸡蛋 = 压力 < X
因为即使压力相同:
摩擦不同
也可能导致不同结果。
甚至:
压力相同
+
摩擦相同
如果:
加速度不同
最终结果也可能不同。
因此真正的认知对象不是:
某一个压力值
而是:
当前对象状态
而当前对象状态又来自:
多个动态属性的协同关系。
22.13 从“不断测试”转向“动态认知”
这也对应一个重要的机器人认知工程问题。
如果机器人完全依靠:
尝试
↓
失败
↓
记录
↓
再尝试
↓
失败
↓
继续测试
那么需要积累大量数据。
尤其面对真实世界的连续变量:
压力
摩擦
速度
位置
角度
重量
材料
温度
湿度
组合数量会迅速增加。
这会形成巨大的测试空间。
而动态认知的方向不是:
把所有可能情况都提前测试一遍。
而是:
根据当前感知到的对象状态,实时匹配当前最相关的属性及其变化关系,并随着反馈不断调整认知。
于是系统从:
大量测试
转向:
实时感知
↓
动态匹配
↓
当前判断
↓
反馈
↓
动态修正
这正是本书“模拟人的感知与认知”理论要解决的问题之一。
22.14 本章形成的理论结论
到第22章为止,可以形成一个重要认识:
认知不是对一个确定世界进行判断,而是在不完整、变化和存在误差的信息条件下,对对象当前状态进行持续匹配和更新。
因此:
不确定性
不是认知的终点,而是认知系统必须处理的基本条件。
由此,下一章自然进入:
第23章 匹配强度
下一章要解决的问题是:
当多个对象、属性、状态和变化同时参与匹配时,系统如何判断“这个匹配到底有多强”?
并进一步建立:
属性匹配
↓
关系匹配
↓
动态匹配
↓
协同匹配
↓
匹配强度
也就是从:
“匹配了吗?”
进一步走向:
“匹配得有多强?”