第123章 Dynamic World
动态世界
第122章进入 ICAI Engineering Implementation(ICAI 工程实现),解决的是如何把认知模型转换为软件结构。
从第123章开始,第十三部分进入一个更加基础的问题:
ICAI 所面对的现实世界,到底是什么样的世界?
如果把现实世界理解成一个可以提前完整采集、固定保存的数据集合,那么后面的感知、认知、决策和行为计算都会建立在一个错误的前提之上。
现实世界并不是:
Data
↓
Database
↓
Answer
而是:
World
↓
Continuous Change
↓
New State
↓
New Situation
↓
New Perception
↓
New Cognition
因此,本章首先建立一个基础前提:
机器面对的不是一个静态数据世界,而是一个持续变化的动态世界。
123.1 世界不是数据库
传统数据系统非常适合描述:
固定对象
固定属性
固定记录
固定关系
例如:
Egg
Position = (100,200)
Weight = 50g
这些数据本身没有问题。
问题在于:
现实中的鸡蛋并不会因为数据库记录了 Position = (100,200),就永远停留在那里。
现实世界中的对象可能发生:
移动
旋转
滚动
碰撞
遮挡
掉落
变形
破损
消失
因此:
Database Record
只是某一个时间点上的描述。
而不是整个现实世界。
123.2 World(t)
因此,ICAI 不应该把世界理解为一个固定状态。
更适合建立:
World(t)
其中:
t = 当前时间
例如某一时刻:
World(t1)
可能是:
桌子
+
鸡蛋
+
机械手
+
障碍物
经过一段时间以后:
World(t2)
可能变成:
桌子
+
鸡蛋新位置
+
机械手新位置
+
障碍物新关系
因此:
World(t1)
≠
World(t2)
即使其中大部分对象没有改变。
123.3 世界变化不是异常
一个非常重要的认识是:
世界变化不是系统异常,而是现实世界的正常状态。
传统程序经常把变化理解为:
Exception
或者:
Unexpected Input
但对于现实世界机器人而言:
Change
本身就是:
Normal
例如:
鸡蛋移动
不是异常。
人走动
不是异常。
光线变化
不是异常。
障碍物出现
不是异常。
物体掉落
也不一定是异常。
真正需要系统处理的是:
变化以后,当前世界已经变成什么状态?
123.4 World(t) → World(t+1)
因此可以建立最基本的动态世界模型:
World(t)
↓
Change
↓
World(t+1)
进一步:
World(t0)
↓
World(t1)
↓
World(t2)
↓
World(t3)
↓
...
这意味着机器人面对的不是一个:
World
而是:
持续变化的 World State Sequence。
123.5 对象也不是静态的
世界变化首先表现为对象变化。
例如:
Egg
不是一个固定数据:
Egg
Position = X
而应该理解成:
Egg(t)
它具有:
Position(t)
Orientation(t)
Velocity(t)
Contact(t)
Condition(t)
于是:
Egg(t1)
≠
Egg(t2)
即使它仍然是:
同一个 Egg
这里必须区分:
Object Identity
与:
Object State
对象可以保持同一个身份,而状态不断变化。
123.6 属性也可能动态变化
对象属性不能全部理解为永久固定值。
例如:
Egg
可以具有:
Material
Fragility
Shape
Weight
这些属性相对稳定。
但同时存在:
Position
Orientation
Velocity
Contact
Pressure
Temperature
Integrity
这些属性可能实时变化。
因此可以形成:
Object
├── Stable Attributes
└── Dynamic Attributes
进一步:
Object(t)
=
Stable Attributes
+
Dynamic Attributes(t)
这为后面的实时认知提供基础。
123.7 关系也会变化
现实世界中的关系同样不是固定的。
例如:
Robot
↔
Egg
可能最初是:
Near
然后变成:
Approaching
随后:
Contact
如果抓取失败:
Contact
↓
Lost Contact
↓
Egg Rolling
于是关系发生连续变化:
Relation(t1)
≠
Relation(t2)
因此:
关系也是动态认知数据,而不是静态数据库字段。
123.8 环境也会变化
如果只关注目标对象,仍然不足以描述现实世界。
例如抓鸡蛋时:
Egg
的位置变化可能受到:
Table
Robot Hand
Obstacle
Person
Other Objects
影响。
而这些环境对象也可能发生变化。
因此:
Environment(t)
同样是动态的。
形成:
Object Change
+
Environment Change
+
Relation Change
↓
Scene Change
123.9 状态持续变化
对象状态是多个动态因素共同形成的结果。
例如鸡蛋:
Stable
可能变成:
Unstable
然后:
Rolling
最后:
Stopped
状态变化可以表示为:
State(t1)
↓
Transition
↓
State(t2)
因此:
State
不是一个永久标签。
它是:
对象在特定时间、特定环境和特定关系条件下形成的当前状态。
123.10 场景不是照片
这是本章非常重要的一点。
传统视觉系统很容易把场景理解成:
Image
↓
Recognition
但对于 ICAI 而言:
场景不是一张照片,而是一个动态的认知结构。
场景至少包含:
Elements
Objects
Attributes
Relations
States
Environment
因此:
Scene(t)
应该理解为:
Scene(t)
=
Elements(t)
+
Objects(t)
+
Attributes(t)
+
Relations(t)
+
States(t)
+
Environment(t)
123.11 同一个场景不会真正重复
现实世界存在一个非常重要的特征:
世界可以高度相似,但不存在完全相同的连续现实场景。
例如每天同一个房间:
Room A
看起来一样。
但是:
人的位置
光线
物体位置
物体姿态
空气
温度
障碍
运动
时间
都可能不同。
因此:
Scene A
和:
Scene B
可以具有大量共同结构,但不应该直接认为:
Scene A == Scene B
这正是后面“历史认知如何用于新场景”的理论基础。
123.12 相同元素,不代表相同场景
这一点尤其重要。
例如:
Egg
可以在很多场景中出现:
Scene A
Egg + Table
Scene B
Egg + Robot Hand
Scene C
Egg + Floor
Scene D
Egg + Obstacle
对象:
Egg
是相同类别。
但是:
Position
Relation
State
Environment
Goal
都可能不同。
因此:
Same Object
≠
Same Scene
进一步:
Same Elements
≠
Same Situation
123.13 历史数据为什么仍然有价值
既然现实世界不会完全重复,那么是否意味着历史数据没有价值?
不是。
真正的问题不是:
历史数据有没有价值?
而是:
历史数据应该以什么形式进入新的认知?
例如过去曾经出现:
Egg
Fragile
Rolling
这类历史认知仍然有价值。
但是不能简单规定:
以后看到 Egg
↓
执行过去的 Action
正确方式应该是:
Historical Cognitive Structure
+
Current Real-Time Data
↓
Current Scene
↓
Current Cognition
也就是说:
历史用于认知,新数据用于确定当前现实。
123.14 固定数据与动态数据
因此,ICAI 需要区分两类数据。
第一类:历史认知数据
例如:
Object Type
Attributes
Relations
Past States
Experience
Methods
Results
这些数据可以长期保存。
第二类:实时场景数据
例如:
Current Position
Current Distance
Current Orientation
Current Velocity
Current Contact
Current Force
Current Obstacle
Current Machine State
这些数据必须随着现实世界变化而更新。
于是:
Historical Cognition
+
Real-Time Scene Data
↓
Current Cognition
123.15 多元数据共同描述现实
一个对象的当前状态不能由一个数据决定。
例如鸡蛋:
Position
+
Orientation
+
Distance
+
Velocity
+
Obstacle
+
Contact
+
Force
+
Machine Hand State
共同形成:
Current Egg Situation
因此:
现实世界的认知不是单变量判断,而是多元实时数据共同形成的状态判断。
这与前面的静态数据模型存在本质区别。
123.16 数据不是行为
还需要进一步区分:
Data
与:
Behavior
之间不能直接建立:
Data
↓
Fixed Action
例如:
Egg Position = X
不能直接推出:
Move Hand → X
因为还需要考虑:
Egg Orientation
Distance
Obstacle
Velocity
Fragility
Hand Position
Hand State
Goal
因此:
Multiple Real-Time Factors
↓
Current Cognitive State
↓
Method Matching
↓
Behavior
这正是 ICAI 动态认知计算的基础。
123.17 失误以后世界已经改变
回到最重要的鸡蛋案例。
假设机器人第一次抓取失败:
Robot
↓
Attempt
↓
Failure
鸡蛋开始:
Rolling
此时最重要的不是:
继续执行原来的抓取程序
因为:
World(t1)
已经变成:
World(t2)
鸡蛋发生了:
Position Change
Orientation Change
Velocity Change
Relation Change
所以系统必须:
停止使用旧场景
↓
重新感知
↓
重新形成元素
↓
重新形成对象状态
↓
重新形成场景
↓
重新认知
↓
重新计算行为
这正是动态世界理论真正需要解决的问题。
123.18 世界变化驱动认知变化
由此建立:
World Change
↓
Perception Change
↓
Element Change
↓
Object State Change
↓
Relation Change
↓
Scene Change
↓
Cognitive Change
进一步:
Cognitive Change
↓
Decision Change
↓
Behavior Change
因此:
现实世界变化必须能够驱动机器认知变化。
如果世界已经变化,而机器认知仍然保持旧状态,那么机器的后续行为就可能与现实脱节。
123.19 Dynamic World 的基本工程模型
因此,ICAI 可以建立一个基本运行结构:
Real World
│
▼
Real-Time Data
│
▼
Perception
│
▼
Elements
│
▼
Objects
│
▼
Attributes / Relations
│
▼
State(t)
│
▼
Scene(t)
│
World Changes
│
▼
State(t+1)
│
▼
Scene(t+1)
这不是:
Input → Fixed Answer
而是:
World(t)
↓
Cognition(t)
↓
Action(t)
↓
World(t+1)
↓
Cognition(t+1)
↓
Action(t+1)
↓
...
123.20 Dynamic World 的理论意义
第123章实际上为后面的所有动态认知理论建立了一个最底层前提:
如果现实世界是动态的,那么机器认知就不能建立在“世界已经被完整采集”的假设之上。
机器必须面对:
未知变化
部分变化
连续变化
突发变化
关系变化
状态变化
因此:
固定世界模型
必须逐步转变为:
动态世界模型
最终形成:
World
↓
Real-Time Perception
↓
Dynamic Scene
↓
Current Cognitive State
123.21 本章小结
本章并没有讨论机器人应该做什么动作。
因为在进入行为计算之前,必须首先解决一个更加基础的问题:
机器面对的世界究竟是不是固定的?
答案是:
不是。
现实世界是:
持续变化的
对象是动态的:
Object(t)
属性可能动态变化:
Attribute(t)
关系是动态的:
Relation(t)
状态是动态的:
State(t)
场景也是动态的:
Scene(t)
因此整个世界可以表达为:
World(t)
↓
Change
↓
World(t+1)
↓
Change
↓
World(t+2)
↓
...
而机器不能依靠:
过去固定数据
直接决定:
现在的行为
正确的工程逻辑应该是:
历史认知
+
实时感知
↓
当前元素
↓
当前对象
↓
当前属性
↓
当前关系
↓
当前状态
↓
当前场景
↓
当前认知
由此,第123章建立第十三部分的第一个核心原则:
机器不是在一个已经被数据化完成的世界中运行,而是在一个持续变化的世界中,通过实时感知不断重新构建当前认知。
下一章因此自然进入:
第124章 Real-Time Perception
如果世界一直在变化,机器究竟如何获得“此时此刻”的现实世界数据?
也就是从:
Dynamic World
正式进入:
Real-Time Perception
而这一步将进一步解释为什么你提出的位置、姿态、距离、速度、障碍、接触、力度、机械手状态等多元感知数据,必须共同参与当前场景的认知计算。