第3章 对象实例理论
3.1 提出背景
在世界结构中,类解决的是“某一类对象具有什么共同结构”的问题,而真正存在于现实世界中的,并不是抽象的类本身,而是一个个具体对象。
例如,世界中存在“苹果类”,但现实中存在的是苹果A、苹果B、苹果C;存在“鸡蛋类”,但实际面对的是鸡蛋01、鸡蛋02、鸡蛋03。它们属于同一个基础类,却分别具有自己的位置、重量、颜色、状态以及与其他对象之间的关系。
因此,机器如果只有类知识,还不能完整描述现实世界。机器还必须建立从“类”到“具体对象”的映射,使抽象的类别结构能够落到现实中的具体个体上。
由此形成:
类 → 对象实例 → 属性 → 状态 → 关系 → 场景
对象实例理论所研究的核心问题,就是机器如何表示一个具体对象、如何保持对象的连续身份、如何描述对象属性与状态,以及如何处理对象随时间产生的动态变化。
3.2 对象的定义
**对象(Object)**是世界中能够被机器独立识别、描述、关联、处理和持续跟踪的具体实体。
**对象实例(Object Instance)**是某一个基础类在现实世界中的具体存在,是类结构向具体个体的实例化结果。
因此:
类是抽象结构,对象是具体实例。
例如:
苹果类
↓
苹果A
苹果B
苹果C
其中“苹果类”描述苹果这一类别的共同结构,而“苹果A”“苹果B”“苹果C”分别代表三个具体对象。
进一步表示:
苹果类
├── 苹果A
├── 苹果B
└── 苹果C
苹果A、苹果B、苹果C都属于苹果类,但它们并不是同一个对象。
对象因此具有两个基本特征:
第一,对象属于某一个类;
第二,对象具有自己的实例状态。
可以表示为:
Object ∈ Class
其中:
- Object 表示具体对象;
- Class 表示对象所属的类;
- ∈ 表示“属于”。
例如:
苹果A ∈ 苹果类
鸡蛋01 ∈ 鸡蛋类
机械臂01 ∈ 机械臂类
对象实例由此成为连接“世界抽象结构”和“现实具体存在”的重要中间层。
3.3 类与对象实例
类与对象实例之间不是并列关系,而是定义与实例之间的关系。
类规定对象应该具有怎样的结构,对象则保存这一结构在具体个体上的实际内容。
例如:
鸡蛋类
│
├── 基本属性
│ ├── 颜色
│ ├── 重量
│ ├── 尺寸
│ └── 形状
│
├── 基本状态
│ ├── 完整
│ ├── 破损
│ ├── 生
│ └── 熟
│
└── 基本方法
├── 移动
├── 加热
└── 处理
实际对象:
鸡蛋01
├── 颜色:白色
├── 重量:52g
├── 尺寸:中等
├── 形状:椭圆
└── 状态:完整、生
因此:
类
↓
规定结构
↓
对象实例
↓
保存具体值
类不需要为每一个对象重新建立。
例如,不能因为:
鸡蛋01 = 52g
鸡蛋02 = 58g
鸡蛋03 = 61g
就建立:
52g鸡蛋类
58g鸡蛋类
61g鸡蛋类
这种方式会破坏基础类的稳定性。
正确结构应该是:
鸡蛋类
├── 鸡蛋01 → 重量52g
├── 鸡蛋02 → 重量58g
└── 鸡蛋03 → 重量61g
因此:
对象差异属于实例层,而不是基础类层。
3.4 对象的唯一性
机器认知现实世界时,一个非常重要的问题是:
机器如何知道当前看到的对象,是之前看到的那个对象,还是一个新的对象?
这就是对象唯一性问题。
对象唯一性是指机器能够为具体对象建立独立身份标识,使不同对象即使具有相同或相似属性,也能够被分别管理和持续跟踪。
例如:
鸡蛋01
鸡蛋02
假设两个鸡蛋都是:
白色
50g
椭圆形
完整
从属性上看,它们可能完全相同。
但是:
鸡蛋01 ≠ 鸡蛋02
它们仍然是两个不同对象。
因此,对象身份不能简单地由属性值决定。
可以表示为:
ObjectIdentity ≠ AttributeValue
其中:
- ObjectIdentity 表示对象身份;
- AttributeValue 表示对象属性值;
- ≠ 表示两者不是同一个概念。
对象唯一性使机器能够建立对象生命周期:
对象发现
↓
对象建立
↓
对象识别
↓
对象跟踪
↓
对象状态变化
↓
对象再次识别
例如机器第一次发现鸡蛋01:
鸡蛋01
位置:桌面左侧
状态:完整
经过一段时间以后:
鸡蛋01
位置:机械臂下方
状态:被抓取
如果机器能够确认两个时间点上的对象都是鸡蛋01,那么机器才能理解:
同一个对象发生了变化。
这也是连续认知的重要基础。
3.5 对象属性
**属性(Attribute)**是用于描述对象特征、性质和参数的数据结构。
属性回答的是:
“这个对象具有什么特征?”
例如鸡蛋对象:
鸡蛋01
├── 颜色:白色
├── 重量:52g
├── 长度:5.5cm
├── 宽度:4cm
└── 温度:24℃
属性可以分为多种类型。
3.5.1 固有属性
固有属性是对象相对稳定的基本特征。
例如:
形状
材质
型号
类别
尺寸
3.5.2 可变属性
可变属性可能随着环境和行为发生变化。
例如:
温度
位置
速度
数量
压力
3.5.3 关系属性
某些属性需要结合其他对象才能确定。
例如:
鸡蛋01
→ 位于
→ 桌面01
这里“位于桌面01”并不是孤立的属性,而是对象之间形成的关系结构。
因此,属性、关系和状态虽然相关,但不能简单地混为一体。
可以建立基本区分:
属性 → 描述对象具有什么特征
状态 → 描述对象当前处于什么情况
关系 → 描述对象与其他对象如何连接
3.6 对象状态
**状态(State)**是对象在某一个时间点上的动态条件。
属性主要回答:
“对象具有什么特征?”
状态主要回答:
“对象现在处于什么情况?”
例如鸡蛋:
属性:
颜色:白色
重量:52g
形状:椭圆
状态:
完整
生
室温
静止
经过行为以后:
鸡蛋01
↓
打破
↓
状态改变
可能变成:
破损
已打开
继续经过加热:
鸡蛋01
↓
加热
↓
状态变化
↓
熟
因此,对象并不是一个永远不变的数据记录,而是一个能够随着时间持续变化的实体。
可以表示为:
Object(t) → Action → Object(t+1)
其中:
- Object(t) 表示时间 t 的对象状态;
- Action 表示作用于对象的动作;
- Object(t+1) 表示动作发生后的对象状态。
进一步展开:
对象
↓
当前状态
↓
环境作用 / 对象关系 / 动作
↓
状态变化
↓
新状态
状态因此成为机器理解动态世界的重要结构。
3.7 对象的动态变化
现实世界中的对象不是静态数据。
对象会移动、变化、组合、分离、生成、消失,也会受到其他对象、环境和动作的影响。
因此,机器不能只保存:
Object = 固定数据
而应该建立:
Object
+
Time
+
State
+
Relation
+
Action
共同构成对象的动态过程。
可以建立对象状态转换模型:
State(t+1) = F(State(t), Action, Relation, Environment)
其中:
- State(t) 表示对象在时间 t 的当前状态;
- State(t+1) 表示对象经过变化后的新状态;
- Action 表示发生在对象上的动作;
- Relation 表示对象与其他对象之间的关系;
- Environment 表示对象所处的环境条件;
- F 表示状态变化规则。
例如机械臂抓取鸡蛋:
鸡蛋01
↓
状态:桌面、静止、未抓取
↓
机械臂接近
↓
关系变化
↓
机械臂与鸡蛋形成接触关系
↓
抓取动作
↓
鸡蛋状态变化
↓
位置改变
↓
状态:被机械臂持有
这里并没有产生新的“鸡蛋基础类”。
始终存在的仍然是:
鸡蛋类
变化的是:
鸡蛋01
以及:
鸡蛋01的属性
鸡蛋01的状态
鸡蛋01与其他对象的关系
鸡蛋01所在的场景
这一区分非常重要。
3.8 对象连续性
对象唯一性解决“它是谁”的问题,对象连续性解决“它是否一直是它”的问题。
机器必须能够将不同时间获得的信息关联到同一个对象。
例如:
T1:
鸡蛋01
位置:桌面
状态:静止
T2:
鸡蛋01
位置:机械臂前方
状态:接近
T3:
鸡蛋01
位置:机械臂夹持位置
状态:被抓取
三个时间点的数据不同,但对象仍然是:
鸡蛋01
因此:
对象身份保持
+
属性变化
+
状态变化
+
关系变化
=
对象动态连续性
如果没有对象连续性,机器每一次感知都可能把变化后的对象当成一个新的对象,那么机器就无法形成真正连续的行为过程。
3.9 对象与场景
单个对象不能完全构成机器对现实世界的理解。
对象必须进入场景,与其他对象建立关系。
例如:
机械臂01
鸡蛋01
锅01
炉具01
桌面01
这些对象分别属于不同基础类:
机械臂类
鸡蛋类
锅类
炉具类
桌面类
但是,当它们同时处于一个具体环境中时,就形成:
烹饪场景
其结构可以表示为:
机械臂01
↓ 操作
鸡蛋01
↓ 放入
锅01
↓ 位于
炉具01
因此:
对象是场景的基本构成单元。
而场景则是多个对象、对象状态以及对象关系在特定时间和空间条件下形成的整体结构。
可以表示为:
Scene = {Object, Attribute, State, Relation, Time, Space}
其中:
- Scene 表示场景;
- Object 表示场景中的对象;
- Attribute 表示对象属性;
- State 表示对象当前状态;
- Relation 表示对象之间的关系;
- Time 表示时间条件;
- Space 表示空间条件。
3.10 对象变化与认知变化
对象发生变化以后,机器的认知结果也必须发生变化。
例如:
鸡蛋01
↓
完整
机器认知:
可以抓取
可以移动
可以加工
经过打破:
鸡蛋01
↓
破损 / 已打开
机器认知可能变为:
不能按照完整鸡蛋进行抓取
可以进入搅拌步骤
可以进入烹饪步骤
因此:
对象状态变化
↓
场景结构变化
↓
认知匹配变化
↓
方法匹配变化
↓
行为变化
↓
动作变化
这说明机器智能不是简单地对对象进行一次分类,而是必须持续跟踪对象及其变化。
3.11 对象实例的机器表示
在工程系统中,对象可以被表示为一个具有身份、类型、属性、状态和关系的数据结构。
例如:
ObjectInstance
{
id
class_id
attributes
states
relations
position
history
}
其中:
- id:对象唯一标识;
- class_id:对象所属基础类;
- attributes:对象属性集合;
- states:对象状态集合;
- relations:对象关系集合;
- position:对象当前位置或空间信息;
- history:对象历史变化记录。
在面向对象工程中,可以建立:
ClassDefinition
↓
ObjectClass
↓
ObjectInstance
例如:
EggClass
↓
EggObject
↓
Egg01
其中基础类结构可以保持稳定,而具体对象的数据由运行时动态维护。
这意味着工程系统不需要不断修改程序源代码来创造新的基础类,而可以通过数据结构建立新的对象实例。
3.12 对象实例与认知系统
对象实例进入认知系统以后,其意义不再只是“一个数据记录”。
机器需要将对象实例与类知识、属性、状态、关系以及当前场景进行匹配。
形成:
感知
↓
对象发现
↓
对象实例建立
↓
基础类匹配
↓
属性匹配
↓
状态匹配
↓
关系匹配
↓
场景形成
↓
认知
例如机器发现一个白色椭圆形物体。
最初:
感知元素
↓
候选对象
经过结构匹配:
形状匹配
+
尺寸匹配
+
属性匹配
+
环境关系匹配
↓
鸡蛋类
然后建立具体对象:
鸡蛋类
↓
鸡蛋01
再进一步获得:
鸡蛋01
├── 属性
├── 状态
├── 位置
└── 与其他对象的关系
此时机器才从“感知到一个东西”进入到“认识一个具体对象”。
3.13 对象动态变化的完整结构
综合以上理论,对象的完整生命周期可以表示为:
世界
↓
感知
↓
对象发现
↓
对象实例建立
↓
类匹配
↓
属性建立
↓
状态建立
↓
关系建立
↓
场景形成
↓
动作作用
↓
对象变化
↓
状态更新
↓
关系更新
↓
场景更新
↓
再认知
因此,对象不是认知过程的终点,而是认知过程中的持续存在单元。
机器通过对象的连续变化建立:
过去对象
↓
当前对象
↓
未来对象
从而形成对象的时间连续性。
3.14 对象实例理论的核心原则
对象实例理论可以归纳为六条基本原则。
第一,对象实例原则。
对象是基础类在现实世界中的具体实例。
类 → 对象实例
第二,对象唯一性原则。
不同对象即使属性完全相同,也仍然保持独立身份。
ObjectA ≠ ObjectB
第三,属性实例化原则。
类提供属性结构,对象保存属性的具体取值。
类属性定义
↓
对象属性值
第四,状态动态原则。
状态属于对象当前条件,并且可以随着时间、环境、关系和动作发生变化。
状态(t)
↓
作用
↓
状态(t+1)
第五,对象连续原则。
对象在变化过程中应保持身份连续,使机器能够认识“同一个对象发生了变化”。
第六,场景构成原则。
对象通过关系进入场景,多个对象的属性、状态和关系共同形成动态场景。
3.15 本章理论模型
对象实例理论可以最终归纳为:
基础类
↓
对象实例
↓
对象身份
↓
对象属性
↓
对象状态
↓
对象关系
↓
对象所在场景
↓
动作作用
↓
对象状态变化
↓
关系变化
↓
场景变化
↓
再认知
进一步形成一个动态闭环:
对象
↓
状态
↓
场景
↓
认知
↓
方法
↓
动作
↓
对象变化
↓
状态更新
↓
场景更新
↓
再认知
这个闭环说明,对象实例并不是静态的数据结构,而是机器世界模型中的持续动态实体。
3.16 工程映射
从理论到工程,可以建立如下映射关系:
| 理论概念 | 工程对象 |
|---|---|
| 基础类 | ClassDefinition |
| 对象实例 | ObjectInstance |
| 对象身份 | ObjectIdentity |
| 对象属性 | ObjectAttribute |
| 对象状态 | ObjectState |
| 对象关系 | ObjectRelation |
| 对象历史 | ObjectHistory |
| 场景 | Scene |
| 状态变化 | StateTransition |
| 对象变化 | ObjectUpdate |
| 再认知 | ReCognition |
在系统运行过程中:
ClassDefinition
↓
ObjectInstance
↓
ObjectAttribute
↓
ObjectState
↓
ObjectRelation
↓
Scene
↓
Action
↓
StateTransition
↓
ObjectUpdate
↓
ReCognition
这样,理论中的“对象实例”就能够转化为机器运行时可以管理、查询、更新和追踪的工程对象。
3.17 本章总结
对象实例是世界结构从抽象类别进入具体现实的重要层次。
类提供稳定的分类结构,对象提供具体的现实存在。对象具有独立身份,并通过属性描述自身特征,通过状态描述当前条件,通过关系与其他对象建立连接,并在时间、环境和动作作用下持续发生变化。
因此:
类 → 定义结构
对象 → 表示个体
属性 → 描述特征
状态 → 描述当前条件
关系 → 建立对象连接
场景 → 组织对象整体
动作 → 造成对象变化
反馈 → 形成状态更新
再认知 → 重新理解变化后的世界
对象实例理论由此建立了机器世界从“类”进入“现实个体”的关键桥梁。
更重要的是,对象不是一次性识别结果,而是具有身份、属性、状态、关系和历史的持续存在单元。机器只有能够持续认识“同一个对象在不同时间发生了什么变化”,才能从静态分类走向动态认知,从对象识别走向场景理解,再进一步形成连续行为。
由此可以得到本章的核心结论:
类提供稳定性,对象提供连续性,属性提供特征,状态提供变化,关系提供连接,场景提供整体结构。对象实例是机器连接抽象世界与动态现实世界的基本认知单元。
在此基础上,下一阶段需要解决的问题便是:不同的类之间如何建立结构关系,不同的对象之间又如何形成对应关系,以及类关系和对象关系如何共同构成机器所理解的世界结构。