第3章 感知与认知的边界
在研究“模拟人的感知与认知”之前,必须首先解决一个基础问题:
什么是感知,什么是认知?
如果这两个概念没有被严格区分,那么后面的感知元素、对象、属性、动态状态、认知匹配、个体认知等理论都会发生混淆。
很多人工智能系统把“传感器获得的数据”直接称为感知,又把“识别出的结果”直接称为认知。这样做在工程上看起来简单,但实际上把不同层次的过程压缩成了一个过程。
例如,一个机器人通过触觉传感器检测到:
当前接触压力为 1.8N。
这是感知。
但是机器人进一步形成:
当前抓取力度已经足够,无需继续增加压力。
这已经不是单纯的感知,而是对当前状态进行了判断。
如果进一步形成:
这个物体表面容易滑动,因此应该保持当前压力,并调整夹持位置。
那么系统已经进入了认知过程。
因此:
感知解决“获得了什么”,认知解决“这些获得的信息意味着什么,以及当前应该如何理解它”。
但是,这个区分仍然不够。
因为人的感知本身并不是一个完全被动的数据采集过程,而认知也不是一个脱离感知、独立运行的高级模块。
二者之间存在连续转换、动态反馈和相互影响。
本章要建立的,正是这一边界。
3.1 为什么必须区分感知与认知
传统计算机系统通常采用一种比较清晰的数据流程:
传感器
↓
数据
↓
处理
↓
结果
这种结构适合描述确定性较强的信息处理过程。
例如温度传感器:
Sensor
↓
25.3℃
压力传感器:
Sensor
↓
1.8N
距离传感器:
Sensor
↓
35cm
这些结果可以被直接记录。
但是人的行为并不是这样简单。
一个人拿起鸡蛋时,并不是先计算:
压力 = ?
摩擦 = ?
重量 = ?
蛋壳强度 = ?
然后再执行抓取。
人的手在接触鸡蛋之后,会不断获得新的触觉信息,同时根据这些信息不断调整动作。
过程更接近:
接触
↓
感觉
↓
感知
↓
判断当前状态
↓
调整压力
↓
再次感觉
↓
再次判断
↓
再次调整
因此,人的认知并不是感知完成以后才一次性启动。
它是一个持续运行的过程。
这也是本书与传统“感知—识别—执行”模型的重要区别。
3.2 感知不是认知
首先必须建立第一条边界:
感知本身不等于认知。
感知的基本任务,是使系统获得关于外部环境或者自身状态的可处理信息。
例如:
视觉:
看到一个白色椭圆形对象
触觉:
检测到接触
压力:
检测到压力增加
温度:
检测到温度下降
空间:
检测到对象距离缩短
运动:
检测到对象正在移动
这些都属于感知层面的信息。
感知可以形成:
Element
即:
能够进入后续处理过程的基本信息单元。
例如:
颜色 = 白色
形状 = 椭圆
压力 = 1.2N
位置 = X,Y,Z
速度 = 0.2m/s
温度 = 20℃
这些信息本身还没有告诉系统:
“这是什么?”
也没有告诉系统:
“应该怎么办?”
因此:
感知
≠
认知
感知是认知的重要输入,但感知本身不能代表完整认知。
3.3 认知也不是简单的数据处理
如果把认知定义成:
对感知数据进行计算。
仍然是不够的。
因为普通数据处理并不一定形成认知。
例如:
压力 1N
压力 2N
压力 3N
压力 4N
系统可以计算:
最大值 = 4N
平均值 = 2.5N
这属于数据处理。
但如果系统根据这些变化形成:
压力持续增加,同时对象出现滑移,因此当前抓取状态正在变得不稳定。
那么系统已经开始形成状态判断。
进一步:
当前任务要求保持对象完整,因此不应继续增加压力,而应调整接触位置。
这才进入了认知与决策的关系。
因此:
数据处理
↓
信息处理
↓
状态判断
↓
关系判断
↓
意义形成
↓
认知
认知不是简单地计算一个数字。
认知的核心在于:
系统是否建立了信息之间的关系,并形成了与当前对象、状态、任务和行为有关的判断。
3.4 感知的边界在哪里
感知层并不是无限的。
本书将感知限定为:
系统对自身、对象和环境变化进行检测、获取、区分和形成基本信息元素的过程。
这里有几个重要关键词:
第一,检测
系统必须能够发现某种变化。
例如:
压力发生变化
第二,获取
系统必须获得变化的某种可处理表示。
例如:
Pressure = 1.4N
第三,区分
系统能够区分不同状态。
例如:
无接触
↓
轻微接触
↓
持续接触
第四,形成元素
最终形成可以进入后续认知处理的信息:
PressureElement
ContactElement
MotionElement
TemperatureElement
所以:
环境变化
↓
感觉输入
↓
检测
↓
区分
↓
感知元素
到这里,感知层基本完成自己的任务。
但是:
感知元素本身还不是完整的认知。
3.5 从感知元素到认知元素
这是本书非常重要的一条分界线。
假设视觉系统检测到:
白色
椭圆
约 60mm
静止
这些可以成为:
感知元素
但是,当这些元素开始发生组合:
白色
+
椭圆
+
特定大小
+
特定位置
系统可能开始形成:
Object Candidate
也就是:
一个可能存在的对象。
进一步,如果系统把这些元素与已有经验、对象属性和关系进行匹配:
白色
+
椭圆
+
易碎
+
厨房环境
+
历史经验
可能形成:
Egg
这时候,信息已经从单纯的感知元素进入了认知结构。
因此,本书需要区分:
Perceptual Element
感知元素
Cognitive Element
认知元素
感知元素强调:
系统获得了什么信息。
认知元素强调:
这些信息在当前认知结构中具有什么关系和意义。
3.6 对象不是感觉本身
这是第二个容易混淆的地方。
人看到一个鸡蛋,并不是眼睛直接“得到一个鸡蛋”。
眼睛获得的是光学信息。
例如:
颜色
轮廓
明暗
位置
大小
运动
这些信息经过组织以后,才逐渐形成:
Object
所以:
感觉
↓
感知元素
↓
元素组合
↓
对象形成
对象并不是单独存在于感知器官里的一个数据。
对象是认知系统对多个元素及其关系进行组织后形成的结构。
例如:
颜色 = 白
形状 = 椭圆
尺寸 = ...
位置 = ...
表面 = ...
运动 = ...
经过组合以后:
Object A
再进一步:
Object A
+
历史经验
+
属性
+
关系
可能形成:
鸡蛋
因此:
对象是感知信息进入认知结构后的重要组织形式。
3.7 属性也不是认知本身
假设系统已经形成一个对象:
Object = Egg
那么它可能具有:
颜色
形状
重量
尺寸
表面摩擦
硬度
承受压力
易损程度
当前位置
速度
这些属于:
Attribute
但是属性仍然不是认知。
例如:
PressureCapacity = 5N
只是一个属性值。
只有当它与当前状态发生关系时,才开始产生认知意义。
例如:
当前压力 = 2N
承受压力 = 5N
此时可以形成:
当前压力 < 承受能力
再加入:
滑移正在增加
则关系进一步变化:
压力较低
+
滑移增加
可能意味着:
当前抓取稳定性不足。
因此:
属性
↓
属性关系
↓
状态判断
↓
认知
这也是为什么后面的“动态属性理论”非常重要。
3.8 静态信息为什么不足以形成完整认知
如果系统只保存:
压力 = 2N
那么它只能知道一个瞬间的值。
但人实际上不会只看一个值。
人会感知:
压力正在增加
或者:
压力正在减少
或者:
压力没有继续变化
这些都是动态信息。
因此:
Value
只是一个状态描述。
而:
Change
Rate
Trend
才开始描述变化。
例如:
Pressure(t0) = 1.0N
Pressure(t1) = 1.3N
Pressure(t2) = 1.7N
Pressure(t3) = 2.1N
系统不仅获得:
Pressure = 2.1N
还可以获得:
Pressure ↑
进一步获得:
Pressure Increase Rate
如果同时观察到:
Slip ↑
那么认知系统面对的就不是一个压力数字,而是一个动态关系:
Pressure ↑
+
Slip ↑
这比单独的:
Pressure = 2.1N
具有更高的认知价值。
3.9 感知是连续的,认知也是连续的
传统模型容易把系统理解成:
感知
↓
认知
↓
行动
看起来像三个独立阶段。
但真实的人类行为更加接近:
感知
↓
初步认知
↓
行为
↓
新感知
↓
认知变化
↓
行为变化
↓
新感知
因此,本书采用:
动态闭环认知模型。
即:
Perception
↓
Cognition
↓
Action
↓
Environment Change
↓
Perception
但这里还需要更进一步。
行为不仅改变环境,也会改变感知条件。
例如抓取鸡蛋:
手靠近鸡蛋
↓
视觉距离变化
↓
接触
↓
触觉出现
↓
压力变化
↓
手部调整
↓
接触面积变化
↓
摩擦变化
↓
再次调整
所以行为本身也是新的感知条件制造者。
3.10 感知与认知之间不是一条固定的线
感知与认知之间并不存在一个永远固定的切割点。
同一个信息,在不同情况下可能处于不同层次。
例如:
压力 = 2N
第一次获得时:
它只是一个感知数据。
当与历史状态比较:
2N > 之前的 1N
形成:
压力正在增加。
当再与对象属性比较:
2N < 最大承受压力
形成:
当前压力尚未达到危险水平。
再加入摩擦和滑移:
压力 ↑
滑移 ↑
形成:
当前抓取可能正在失稳。
再加入任务目标:
目标 = 完整拿起鸡蛋
形成:
不能单纯继续增加压力,需要调整抓取策略。
因此,同一个:
Pressure = 2N
随着关系不断增加,其认知层次不断变化。
这说明:
认知不是某一个数据进入系统以后自动产生的标签,而是信息在关系网络中不断形成意义的过程。
3.11 认知的真正边界:关系
由此,本书可以提出一个非常重要的判断:
感知的核心是元素形成,认知的核心是关系形成。
感知更关注:
有什么?
多少?
在哪里?
发生了什么变化?
认知进一步关注:
它是什么?
它与什么有关?
为什么发生?
当前是什么状态?
意味着什么?
下一步可能发生什么?
应该如何处理?
因此可以初步表示为:
感知:
Input
↓
Detection
↓
Element
认知:
Element
↓
Relation
↓
Object
↓
Attribute
↓
State
↓
Matching
↓
Cognition
当然,这并不意味着对象一定在关系之前形成。
实际过程可以反复进行:
Element
↓
Object Candidate
↓
Relation
↓
Object Refinement
↓
Attribute
↓
State
↓
New Relation
↓
New Cognition
认知是动态组织,而不是一次性分类。
3.12 认知不是“识别”
人工智能领域经常把:
识别
当成:
认知
例如:
Image
↓
Egg
系统识别出了“鸡蛋”。
但这只能解决:
“它像什么?”
却没有解决:
“现在应该怎样处理它?”
真正的认知还需要考虑:
Egg
+
Weight
+
Surface
+
Friction
+
Pressure Capacity
+
Current Contact
+
Current Motion
+
Task
然后形成:
Current State
进一步形成:
Action Preference
因此:
Recognition
≠
Cognition
识别只是认知过程中的一个可能环节。
3.13 认知不是固定知识库
另一个重要区别是:
认知不是从数据库中查询一个固定答案。
如果机器人面对鸡蛋,只建立:
Egg → Grip Pressure = 1.5N
那么这种方式本质上仍然属于静态匹配。
因为现实中的鸡蛋并不完全相同:
大小不同
重量不同
蛋壳不同
表面状态不同
湿度不同
接触角度不同
摩擦不同
机器人手指材料不同
抓取速度不同
因此:
Egg
≠
固定压力
正确的认知过程应该是:
当前对象状态
+
当前环境
+
当前接触状态
+
当前任务
+
动态反馈
不断重新匹配。
所以:
认知不是从固定答案中寻找结果,而是在当前状态下持续形成匹配。
这为后面的“动态认知匹配”理论奠定基础。
3.14 感知与认知的反馈关系
虽然感知和认知需要区分,但二者并不是互相独立。
认知会反过来影响感知。
例如一个人准备拿起一个未知物体。
第一次:
视觉感知
↓
发现对象
随后:
认知:
这个对象可能易碎
于是人的行为会发生变化:
动作速度降低
接触更加轻柔
注意触觉反馈
新的行为又产生新的感知:
接触压力
摩擦
形变
滑移
然后认知进一步更新:
可能比预想更脆弱
于是动作再次改变。
因此:
感知 → 认知
认知 → 行为
行为 → 新感知
构成一个闭环。
这也是模拟人认知系统必须区别于简单传感器系统的原因。
3.15 感知、认知、决策和行为四者的边界
本书后面还会研究决策与行为,因此这里必须先划清四者关系。
可以暂时建立如下定义。
感知
获取和形成当前环境及自身变化的基本信息元素。
感觉
↓
感知
↓
元素
认知
对元素、对象、属性、状态和关系进行组织、匹配并形成当前理解。
元素
↓
关系
↓
对象
↓
属性
↓
状态
↓
匹配
↓
认知
决策
在当前认知基础上,对可能的行动方向进行选择。
认知
↓
候选行为
↓
比较
↓
选择
行为
决策在实际环境中的执行过程。
Decision
↓
Action
↓
Environment
于是可以形成:
感知
↓
认知
↓
决策
↓
行为
↓
环境变化
↓
感知
但必须强调:
这不是严格的单向流水线,而是动态循环系统。
3.16 为什么这一边界对机器人尤其重要
目前大量机器人系统采用:
传感器
↓
数据
↓
模型
↓
动作
这种结构。
它能够完成很多任务,但面对动态环境时容易出现一个问题:
系统往往是在寻找“正确动作”,而不是持续寻找“当前最合适的状态匹配”。
两者完全不同。
例如抓取鸡蛋。
传统思路可能是:
鸡蛋
↓
预设抓取参数
↓
执行
而本书研究的认知工程思路是:
发现对象
↓
建立对象状态
↓
获取触觉
↓
获取压力
↓
获取摩擦变化
↓
检测滑移
↓
动态匹配
↓
判断当前稳定性
↓
调整压力
↓
再次感知
↓
再次匹配
最终不是寻找一个永远固定的:
正确压力值
而是在寻找:
当前条件下,使任务完成且对象受损最小的动态匹配状态。
这已经从单纯的控制问题进入了认知问题。
3.17 感知与认知的工程表达
为了让理论最终能够进入工程系统,本书不能停留在概念层。
可以首先建立两个基本结构。
感知结构
Perception
{
source
element
value
state
timestamp
change
}
例如:
Perception
{
source: "tactile_sensor",
element: "pressure",
value: 1.8,
state: "contact",
timestamp: T1,
change: "+0.3"
}
这是感知信息。
认知结构
认知则不能只有一个 value。
它至少需要考虑:
Cognition
{
object
attributes
state
relations
matching
probability
goal
action
}
例如:
Object = Egg
State:
contact = true
stable = uncertain
Attributes:
pressure_capacity = unknown
friction = changing
Relations:
pressure ↑
slip ↑
Goal:
complete_grasp = true
此时系统已经不是在保存一个传感器数字,而是在描述:
当前对象处于什么状态,以及当前信息之间是什么关系。
这就是认知工程与普通数据采集系统之间的重要区别。
3.18 本章的核心结论
通过本章,可以建立几条基础原则。
第一:
感知不是认知。
第二:
识别不是完整认知。
第三:
数据处理不是完整认知。
第四:
对象、属性和状态本身也不是完整认知。
第五:
认知的核心不是单个数据,而是信息之间动态关系的形成与匹配。
第六:
感知与认知虽然具有边界,但不是两个完全独立的系统。
第七:
认知会影响行为,行为又会改变感知条件,因此感知与认知必须放在动态闭环中研究。
最终可以得到本章的基本结构:
环境
↓
感觉
↓
感知
↓
感知元素
↓
┌───────┴───────┐
↓ ↓
对象 属性
↓ ↓
└───────┬───────┘
↓
状态
↓
关系
↓
动态匹配
↓
认知
↓
决策
↓
行为
↓
环境发生变化
↓
新感知
而这一章最重要的理论边界可以概括为:
感知使系统获得信息,认知使信息形成关系与意义;感知回答“获得了什么”,认知回答“这些信息在当前对象、状态、关系和目标中意味着什么”。