第8章 感知:感觉如何形成可处理的信息
上一章讨论了“感觉”。
感觉是个体与环境之间最初的信息接口。它告诉系统环境正在对个体产生什么样的刺激,以及这种刺激如何变化。
但是,仅仅拥有感觉还不能形成真正意义上的认知。
一个人看到:
白色
椭圆
光滑
静止
又感觉到:
接触
压力
温度
这些都是感觉。
但人不会把这些感觉永远作为六个、十个、几十个彼此独立的数据保存下来。
人会逐渐形成:
“这里有一个东西。”
再进一步:
“这个东西可能是一个鸡蛋。”
这一步,就是从感觉进入感知。
因此,本章需要解决的核心问题不是“传感器如何采集数据”,而是:
感觉如何被组织、关联、组合,并形成可被认知系统继续处理的感知信息?
8.1 感知不是感觉的简单叠加
如果把感觉理解为:
Feeling
那么最简单的错误理解就是:
Feeling
+
Feeling
+
Feeling
+
Feeling
=
Perception
实际上并不是这样。
例如,一个机器人同时获得:
视觉:
白色
视觉:
椭圆
触觉:
光滑
压力:
轻微
空间:
位于桌面
运动:
静止
如果只是把这些数据放在一起:
[
white,
oval,
smooth,
light_pressure,
table,
static
]
那么它仍然只是一组数据。
真正的感知需要回答:
这些感觉是否属于同一个对象?
哪些感觉之间存在关系?
哪些变化属于同一个事件?
哪些感觉是当前任务真正相关的?
所以:
感知不是感觉数据的堆积,而是感觉之间建立结构关系的过程。
8.2 感知的第一步:感觉组织
感觉系统不断获得信息。
这些信息可能来自不同时间、不同位置、不同感觉通道。
例如:
t1:
看到白色区域
t2:
看到椭圆轮廓
t3:
手指发生接触
t4:
产生轻微压力
t5:
物体位置发生微小变化
如果没有组织机制,这些感觉就是一串连续数据。
感知系统需要开始进行组织:
感觉
↓
时间组织
↓
空间组织
↓
通道组织
↓
状态组织
↓
关系组织
于是:
视觉白色
+
视觉椭圆
+
触觉光滑
+
压力轻微
不再只是四个独立数据,而可能开始被系统认为:
属于同一个局部区域
进一步:
属于同一个对象
这就是感知结构的开始。
8.3 感知首先形成的是“结构”,不是“名称”
这是理解机器感知非常重要的一点。
人看到一个陌生物体时,即使不知道它叫什么,也能够感知:
这里有一个物体
它在前面
它有一定大小
它具有某种形状
它正在移动
它与我的手发生接触
但此时可能并不知道:
“它叫什么?”
所以:
感知
并不要求立即完成:
命名
甚至也不要求立即完成:
语义解释
感知首先需要形成:
一个能够持续存在、能够变化、能够与其他信息发生关系的对象结构。
因此,本书在这里引入一个重要区分:
感觉
↓
结构化感知
↓
对象
↓
对象属性
↓
认知
“对象是什么”是后面的理论问题。
“这里是否存在一个相对稳定的对象结构”,则属于感知层。
8.4 感知中的聚合
假设视觉系统获得了:
A1
A2
A3
A4
A5
这些感觉元素在空间上接近,在时间上连续,并且具有一定共同变化。
感知系统可能把它们聚合:
A1
A2
A3
A4
A5
↓
Group A
这个 Group 并不一定已经是完整对象。
它只是说明:
这些感觉可能属于同一个结构。
例如:
多个视觉边缘
↓
轮廓结构
又例如:
多个压力点
↓
接触区域
再例如:
连续声音变化
↓
声音事件
因此,感知中的一个基本过程可以表示为:
多个感觉元素
↓
空间/时间/状态关系
↓
聚合
↓
感知结构
8.5 感知中的分离
与聚合相对应的是分离。
环境中的感觉信息可能混合在一起。
例如:
视觉:
桌子
杯子
鸡蛋
手
墙壁
窗户
如果系统只是接收视觉数据,那么所有信息实际上同时进入感知系统。
感知必须进一步区分:
区域A → 桌子
区域B → 杯子
区域C → 鸡蛋
区域D → 手
所以感知既包括:
聚合
也包括:
分离
可以表示为:
感觉集合
↓
聚合 / 分离
↓
结构集合
这两个过程共同决定了系统如何理解当前环境。
8.6 感知中的边界
对象之所以能够成为对象,一个重要原因是它具有某种边界。
例如一个鸡蛋:
外部空间
↓
[ 鸡蛋 ]
↓
外部空间
视觉上可能表现为:
颜色边界
形状边界
亮度边界
触觉上可能表现为:
接触
/
不接触
空间上可能表现为:
物体区域
/
非物体区域
因此,感知系统需要回答:
哪些感觉属于这个结构,哪些感觉不属于这个结构?
这实际上是在建立:
Object Boundary
但此时仍然需要注意:
感知到边界,不等于已经理解对象的全部属性。
边界只是对象形成的重要条件之一。
8.7 感知中的连续性
人在移动过程中,并不会每隔一秒重新认识一次世界。
例如一个人看到一辆汽车从左边移动到右边。
系统不会认为:
t1:一个汽车
t2:没有汽车
t3:另一个汽车
t4:又一个汽车
而是能够形成:
Object A
↓
Position(t1)
↓
Position(t2)
↓
Position(t3)
↓
Position(t4)
也就是说:
感知需要维持对象的连续性。
这也是动态感知与静态识别的重要区别。
对象不是一张一张独立的图片。
对象是在时间中持续存在并发生变化的结构。
因此:
Object(t1)
Object(t2)
Object(t3)
之间需要建立关联:
Object(t1)
↓
same object
↓
Object(t2)
↓
same object
↓
Object(t3)
8.8 感知中的状态
对象被感知之后,还需要知道对象当前处于什么状态。
例如:
鸡蛋
只是一个对象候选。
但当前状态可能是:
静止
接触
被拿起
正在移动
正在旋转
受到压力
发生滑移
发生形变
因此:
Object
+
State
比单纯:
Object
包含更多信息。
例如:
Egg
与:
Egg + BeingGrasped
显然不是同一个认知状态。
更进一步:
Egg
+
BeingGrasped
+
PressureIncreasing
+
SlipIncreasing
又是另外一种状态。
这就开始从普通对象识别进入动态感知。
8.9 感知中的变化
上一章已经提出:
Feeling(t)
本章需要进一步说明:
感知系统不仅感知当前值,还必须感知变化。
例如:
压力 = 2N
只是一个状态。
而:
2N → 3N → 4N
则表示:
压力正在增加
进一步:
2N → 3N → 4N → 5N
意味着:
持续增加
如果随后:
5N → 4N → 3N
则表示:
开始下降
所以感知系统开始获得:
Value
+
Change
+
Trend
这一步非常重要。
因为后面的认知匹配不是只比较:
当前值 == 目标值
而需要比较:
当前状态
+
变化方向
+
变化速度
+
历史状态
8.10 感知是时间性的
感知不是一个静态快照。
可以表示为:
Perception(t)
而不是:
Perception
例如机器人抓取鸡蛋:
t1
视觉发现鸡蛋
t2
手靠近
t3
发生接触
t4
压力增加
t5
滑移发生
t6
压力调整
t7
鸡蛋稳定
真正的感知是:
P(t1)
→
P(t2)
→
P(t3)
→
P(t4)
→
P(t5)
→
P(t6)
→
P(t7)
因此:
感知是一个连续状态过程,而不是一次识别结果。
8.11 感知对象的形成
当感觉经过组织、聚合、分离、关联和连续追踪之后,系统开始能够形成一个相对稳定的对象结构。
例如:
视觉元素
+
触觉元素
+
空间位置
+
连续性
+
边界
形成:
Object Candidate
再经过进一步确认:
Object
因此:
Feeling
↓
Perceptual Elements
↓
Perceptual Structure
↓
Object Candidate
↓
Object
这里有一个非常重要的原则:
对象不是感觉本身,而是感知系统对多个感觉关系进行组织后形成的结构。
8.12 感知并不等于认识对象
假设机器人看到一个陌生物体。
它能够确定:
存在一个物体
位置:前方
大小:约10cm
形状:椭圆
表面:光滑
运动:静止
这已经是很完整的感知。
但它可能仍然不知道:
这是什么?
有什么用途?
是否容易损坏?
可以施加多大压力?
应该如何操作?
这些问题属于后续认知。
因此:
感知
=
形成对象及其当前状态的可处理表示
而:
认知
=
根据对象、属性、变化、关系、经验、目标等进行匹配和判断
这是本书必须保持的边界。
8.13 感知与认知的连接
虽然感知与认知存在边界,但它们并不是相互独立的。
感知为认知提供:
对象
属性候选
状态
变化
关系
认知又可能反过来影响感知。
例如:
认知目标:
抓取鸡蛋
那么系统会更加关注:
接触位置
压力
摩擦
滑移
形变
而可能降低对其他无关信息的关注。
于是:
认知目标
↓
注意
↓
感知选择
↓
感觉输入
↓
感知
↓
认知
形成循环。
这意味着:
感知不是完全被动的数据接收过程。
它可能受到当前任务、目标和已有认知状态的影响。
8.14 感知中的注意
如果一个环境中同时存在一万个感觉变化,人不可能对所有变化进行同等处理。
因此必须存在选择机制。
例如桌面上有:
电脑
手机
杯子
鸡蛋
书
笔
键盘
鼠标
如果当前任务是:
“拿起鸡蛋。”
那么感知系统会更加关注:
鸡蛋位置
鸡蛋轮廓
手与鸡蛋距离
接触区域
抓取状态
压力
滑移
而不会把所有桌面信息都作为同等重要的信息。
因此可以提出:
有效感知不是获得全部信息,而是获得与当前认知任务相关的信息结构。
这也是减少数据规模的重要机制。
8.15 感知不是不断测试
这直接对应本书最初提出的机器人问题。
传统机器人行为设计容易采用:
测试A
↓
成功/失败
测试B
↓
成功/失败
测试C
↓
成功/失败
然后不断增加测试数据。
如果环境变化:
鸡蛋大小变化
鸡蛋重量变化
表面摩擦变化
手指位置变化
抓取速度变化
环境温度变化
又需要重新测试。
最终形成:
条件数量
×
对象数量
×
状态数量
×
行为数量
导致数据规模快速膨胀。
而感知的作用之一,就是把复杂环境转换成:
当前对象
+
当前状态
+
当前变化
+
当前关系
这样,系统不需要把所有过去情况逐一测试。
它可以根据当前状态进行匹配。
例如:
当前:
压力正在增加
+
滑移正在增加
+
对象易损
系统不需要找到一条:
“历史数据库里与这三个条件完全一样的记录。”
而可以形成动态判断:
压力增加
+
滑移增加
↓
当前抓取状态正在恶化
这就为下一阶段的:
动态认知匹配
建立了基础。
8.16 感知中的多感觉协同
真实的人类感知很少只依靠一个感觉通道。
拿一个鸡蛋时:
视觉
↓
看到对象位置
触觉
↓
感觉接触
压力
↓
感觉抓取力度
空间感觉
↓
知道手的位置
运动感觉
↓
知道手正在移动
这些信息需要共同形成一个当前状态:
Object = Egg
State = BeingGrasped
然后进一步形成:
Pressure = Increasing
Slip = Increasing
于是:
视觉
+
触觉
+
压力
+
空间
+
运动
+
时间
共同构成感知状态。
这不是简单的数据融合。
更准确地说,是:
多种感觉围绕同一个对象或事件形成共同结构。
8.17 感知的对象中心结构
如果要让机器真正接近人的感知方式,就不能始终采用:
Camera Data
Pressure Data
Temperature Data
Distance Data
这种传感器中心结构。
更接近认知系统的方式应该是:
Object
│
├── Visual
├── Touch
├── Pressure
├── Position
├── Motion
├── Temperature
└── State
也就是说:
不是让不同传感器各自形成孤立的数据岛,而是让不同感觉围绕对象形成共同的感知结构。
这一步非常关键。
因为后面的对象属性理论就是在这个基础上建立的。
8.18 感知状态的基本结构
因此,可以暂时把感知状态抽象为:
PerceptionState
{
object
elements
attributes
state
position
time
changes
relations
}
例如一个正在被抓取的鸡蛋:
PerceptionState
{
object: egg,
position: hand_front,
state: grasping,
pressure: increasing,
friction: medium,
slip: increasing,
deformation: low,
time: t
}
注意:
这里的:
pressure
friction
slip
deformation
还只是感知层面的状态描述。
系统还没有做出最终判断:
“应该减小压力。”
因为“应该怎么办”属于决策。
而:
“当前压力增加,同时滑移也在增加。”
属于感知。
再往后:
“继续增加压力可能导致对象受损。”
才进入认知匹配。
8.19 感知与对象属性的连接
到这里,我们已经可以看到下一层理论结构:
感觉
↓
感知
↓
对象
↓
对象属性
例如:
感觉:
压力
感知:
当前对象受到压力
对象:
鸡蛋
属性:
承受压力能力
状态:
当前正在受力
变化:
压力持续增加
于是,一个单独的压力感觉开始获得对象相关意义。
这就是为什么:
对象属性不能脱离感知而凭空存在。
系统必须先知道:
“这个压力作用在什么对象上?”
然后才能进一步讨论:
“这个对象具有什么属性?”
8.20 感知中的关系
感知不仅形成对象,也形成对象与环境之间的关系。
例如:
鸡蛋
↓
在桌面上
形成:
Egg
└── on → Table
又例如:
手
↓
接触
↓
鸡蛋
形成:
Hand
└── touching → Egg
再例如:
鸡蛋
↓
正在移动
形成:
Egg
└── moving
这些关系非常重要。
因为认知往往不是:
对象单独存在
而是:
对象
+
属性
+
状态
+
关系
共同构成当前认知环境。
8.21 感知的动态模型
现在可以建立一个基础模型:
Environment
↓
Feeling
↓
Perceptual Element
↓
Perceptual Structure
↓
Object
↓
Attribute
↓
State
↓
Change
↓
Relation
↓
Perception State
其中:
PerceptionState(t)
随着时间持续变化。
例如:
t1:
Egg + Static
t2:
Egg + Approaching
t3:
Egg + Contact
t4:
Egg + Grasping
t5:
Egg + PressureIncreasing
t6:
Egg + SlipIncreasing
t7:
Egg + Stable
这已经不是一个静态对象识别系统。
而是:
一个持续更新的感知状态系统。
8.22 感知的核心不是“识别”,而是“保持当前世界状态”
这是本章最重要的认识之一。
传统计算机视觉往往强调:
“识别这个东西是什么。”
但模拟人的感知,需要更进一步:
持续知道当前环境中有哪些对象、对象处于什么状态、对象发生了什么变化、对象之间有什么关系。
例如:
不是:
“这是鸡蛋。”
而是:
当前存在鸡蛋
↓
鸡蛋位于手前方
↓
手正在靠近
↓
手已经接触
↓
压力正在增加
↓
鸡蛋发生轻微滑移
这才是动态感知。
因此:
感知不是一次性识别,而是对环境状态进行持续建模。
8.23 感知的工程意义
如果把这一理论转换成工程系统,就不能只建立:
ObjectDetector
还应该建立:
PerceptionEngine
它至少需要处理:
感觉输入
↓
元素提取
↓
元素关联
↓
结构形成
↓
对象形成
↓
状态更新
↓
变化检测
↓
关系更新
最终输出:
Current Perception State
而不是只输出:
Object = Egg
这两者之间存在本质差异。
前者描述:
当前世界是什么状态。
后者只描述:
发现了什么对象。
8.24 感知状态的持续更新
因此,一个真正的感知系统应该持续运行:
Input(t)
↓
Perception(t)
↓
Input(t+1)
↓
Perception(t+1)
↓
Compare
↓
Change
↓
Update
例如:
P(t1)
=
Egg
+
Static
下一时刻:
P(t2)
=
Egg
+
Moving
系统计算:
Change:
Static → Moving
再下一时刻:
P(t3)
=
Egg
+
Moving
+
ApproachingHand
继续更新。
因此:
感知系统不是生成一个结果,而是维护一个不断变化的当前状态。
8.25 感知与认知的边界再次确认
到本章结束,我们可以更加明确两者的区别。
感觉:
个体获得环境刺激及其变化。
感知:
个体将感觉组织成对象、状态、变化和关系等可处理结构。
认知:
个体利用这些结构与已有经验、记忆、先验、目标等进行匹配,并形成判断。
可以表示为:
环境
↓
感觉
↓
感知
↓
认知
进一步:
感觉
=
获得
感知
=
组织
认知
=
匹配与判断
这三个词不能再混用。
8.26 从“感觉数据”到“感知对象”
现在可以完成本书第二个重要转换:
Feeling
↓
Element
↓
Structure
↓
Object
也就是说:
感觉提供原始输入,感知将这些输入组织成为具有连续性和关系性的对象结构。
但这里仍然存在一个新的问题:
对象形成之后,系统究竟如何描述这个对象?
例如:
对象 = 鸡蛋
还远远不够。
因为系统还必须知道:
它是什么?
它具有什么?
它现在是什么状态?
它能够承受什么?
它正在发生什么变化?
它与其他对象是什么关系?
这就进入第三篇。
8.27 本章建立的理论链条
经过第7章和第8章,现在基础结构可以确定为:
环境
↓
感觉
↓
感知元素
↓
感知结构
↓
对象
而对象进入下一阶段后,将继续展开:
对象
↓
属性
↓
状态
↓
变化
↓
关系
然后才进入:
动态认知匹配
因此,本书目前还没有开始讨论最终的“认知判断”。
现在做的工作,是把认知的输入基础建立起来。
8.28 本章结论
本章建立了“感知”的基本理论。
第一,感知不是感觉的简单叠加。
感觉只有经过组织、关联、聚合、分离和连续追踪,才能形成感知结构。
第二,感知首先形成结构,而不一定立即形成名称。
人可以先知道“那里有一个东西”,再进一步认识“这个东西是什么”。
第三,感知具有时间性。
对象不是一次识别结果,而是在时间中持续存在并发生变化的状态。
第四,感知需要维持对象连续性。
同一个对象在不同时间的状态需要被关联起来。
第五,感知不仅形成对象,还形成状态、变化和关系。
因此:
Perception
=
Object
+
State
+
Change
+
Relation
第六,多感觉信息需要围绕对象形成共同结构。
视觉、触觉、压力、空间、运动和时间不是孤立的数据岛。
第七,感知不是不断测试所有可能情况。
它通过当前感觉、对象、状态和变化形成当前环境模型,从而减少对无限测试数据的依赖。
最终,本章建立:
Feeling
↓
Perceptual Element
↓
Perceptual Structure
↓
Object
↓
State
↓
Change
↓
Relation
↓
Perception State
而下一章将进一步解决:
第9章 感知元素
重点回答一个更基础的工程问题:
感知系统中的“元素”究竟是什么?
因为如果没有明确的感知元素,后面的:
对象
属性
状态
关系
匹配
都无法形成统一的工程结构。
下一章将正式定义:
Element
Element Value
Element State
Element Change
Element Relation
并建立:
感觉 → 感知 → 感知元素
这一层真正可以进入理论工程的数据基础。