第14章 属性不是静态值
在前面的章节中,我们已经把对象、对象属性以及对象之间的关系逐步建立起来。
对象回答的是:
“认知系统正在认识什么?”
对象属性回答的是:
“这个对象具有什么?”
对象关系回答的是:
“这个对象与其他对象之间如何发生关系?”
但当认知系统真正面对现实世界时,还会遇到一个更基本的问题:
对象的属性究竟是不是一个固定不变的数值?
如果把属性理解为一个静态值,那么认知系统只能描述对象在某一个时刻的状态,却无法真正描述对象的变化。
例如,一个机器人抓取鸡蛋。
如果系统只知道:
鸡蛋重量 = 50g
这个数据本身没有错误。
但是,仅仅知道 50g,并不能告诉机器人:
- 当前是否已经接触鸡蛋;
- 当前施加了多大的压力;
- 鸡蛋是否正在滑动;
- 鸡蛋是否发生形变;
- 摩擦是否正在发生变化;
- 当前压力是否已经超过安全范围;
- 如果继续增加压力,会发生什么;
- 当前动作是否正在接近最小受损状态。
因此:
一个属性的认知价值,不仅存在于它“是多少”,还存在于它“现在是什么状态”“发生了什么变化”“变化有多快”以及“变化趋势是什么”。
这意味着,属性不能再被简单理解为一个静态变量。
更准确的表达应该是:
甚至进一步可以表示为:
这里的 表示时间。
由此,属性从一个静态数据,开始进入一个动态认知过程。
14.1 Value:属性的值
Value 是属性最直接的表达形式。
例如:
鸡蛋重量 = 50g
温度 = 25℃
压力 = 3N
距离 = 20cm
速度 = 1m/s
这些都是 Value。
Value 解决的是:
“属性当前是多少?”
它是认知系统最基础的数据形式。
例如:
Object: Egg
Weight:
50g
或者:
Object: Glass
Temperature:
25℃
在传统程序中,一个属性往往可以直接表示成:
$weight = 50;
这对于记录数据来说已经足够。
但是对于认知系统而言,还不够。
因为:
50g
只告诉系统一个结果。
它没有告诉系统:
这个 50g 是一直保持不变,还是刚刚从 40g 变化到 50g?
也没有告诉系统:
这个属性是否正在变化?
因此,Value 是属性的基础,但不是属性的完整认知。
14.2 State:属性的状态
State 解决的是另一个问题:
“这个属性现在处于什么状态?”
例如压力:
Pressure = 3N
这是 Value。
但是:
Pressure State = Stable
这是 State。
同样的 3N,可以对应不同的状态。
例如:
压力 = 3N
状态 = 稳定
也可以是:
压力 = 3N
状态 = 上升
甚至:
压力 = 3N
状态 = 下降
因此:
Value ≠ State
Value 描述的是:
量。
State 描述的是:
当前状态。
例如一个物体的温度:
Temperature = 30℃
State = Rising
表示:
当前温度为 30℃,并且正在升高。
如果只记录:
Temperature = 30℃
系统就无法区分:
20℃ → 30℃
和:
40℃ → 30℃
这两个完全不同的过程。
它们最终都得到:
30℃
但认知意义不同。
因此:
状态使属性从“一个值”变成“一个当前过程中的状态”。
14.3 Change:属性的变化
如果 Value 是:
现在是多少。
State 是:
现在处于什么状态。
那么 Change 解决的是:
“它发生了什么变化?”
例如:
Pressure(t1) = 2N
Pressure(t2) = 3N
那么:
属性发生了变化。
可以表示:
Pressure
2N → 3N
Change = +1N
Change 并不只是简单的数学差值。
在认知系统中,变化本身就是一种信息。
例如:
压力增加
可能意味着:
- 机器人正在用力抓取;
- 物体正在被压紧;
- 接触面积正在改变;
- 摩擦状态正在变化;
- 物体可能正在发生形变。
因此:
变化不是属性的附属信息,而是认知对象状态的重要组成部分。
14.3.1 没有变化,属性仍然具有意义
例如:
Pressure = 3N
Change = 0
这并不是“没有信息”。
它表示:
当前压力保持稳定。
因此:
Change = 0
本身也是一种动态信息。
认知系统需要区分:
没有数据
和:
有数据,但没有变化
二者不能混淆。
14.3.2 变化具有方向
变化至少可以表现为:
Increase
Decrease
Stable
即:
↑
↓
→
例如:
Pressure:
↑
表示压力正在增加。
Pressure:
↓
表示压力正在降低。
Pressure:
→
表示压力基本稳定。
因此,一个属性的认知表示已经从:
Value
扩展成为:
Value + Change
14.4 Rate:变化率
仅仅知道“发生了变化”仍然不够。
认知系统还需要知道:
“变化得有多快?”
这就是 Rate。
例如两个过程:
压力:
1N → 2N
可能用了:
1秒
另一个过程:
压力:
1N → 2N
可能只用了:
0.01秒
最终变化量相同:
Change = +1N
但变化过程完全不同。
变化率为:
例如:
而:
两个过程的最终 Value 和 Change 可以相同,但 Rate 完全不同。
这对于认知非常重要。
14.4.1 变化率影响风险判断
仍然以抓取鸡蛋为例。
假设机器人当前压力:
2N
如果压力缓慢增加:
1.8N
→
1.9N
→
2.0N
→
2.1N
系统可能判断:
压力正在平稳调整。
但是如果出现:
1.8N
→
2.5N
→
4.0N
那么即使最终压力尚未达到某个固定阈值,系统也可能已经发现:
压力变化过快。
因此,机器人真正需要认知的并不是:
“当前压力是多少?”
而是:
当前压力是多少?
+
压力正在如何变化?
+
变化速度是多少?
这就是动态属性的基础。
14.5 Trend:变化趋势
Rate 描述:
现在变化得有多快。
Trend 描述:
这种变化正在朝什么方向发展。
趋势比单次变化更接近认知。
例如:
10
11
12
13
14
可以发现:
Trend = Increasing
而:
14
13
12
11
10
则是:
Trend = Decreasing
但现实中的属性变化通常不是如此简单。
可能出现:
10
12
11
13
12
14
虽然每一次变化都有升有降,但整体仍然可能表现出:
Trend = Increasing
因此:
Trend 不是单次 Change,而是对一段时间内变化方向的认知。
14.5.1 趋势与变化的区别
必须明确:
Change
描述的是:
两个状态之间发生了什么变化。
而:
Trend
描述的是:
一系列变化形成了什么方向。
例如:
t1 = 10
t2 = 12
得到:
Change = +2
如果继续:
t3 = 14
t4 = 17
t5 = 20
那么系统可以进一步形成:
Trend = Increasing
因此:
Value
↓
Change
↓
Rate
↓
Trend
实际上形成了一个逐渐增强的动态认知层级。
14.6 五种属性信息不是五个孤立字段
到这里,我们得到:
Value
State
Change
Rate
Trend
它们并不是五个互相独立的数据。
而是共同描述同一个属性。
例如:
Object = Egg
Attribute = Pressure
Value = 2.8N
State = Increasing
Change = +0.3N
Rate = +0.2N/s
Trend = Increasing
这时系统获得的已经不是一个简单的:
Pressure = 2.8N
而是一组动态认知信息:
鸡蛋当前受到 2.8N 的压力,压力正在增加,最近增加了 0.3N,变化速度约为 0.2N/s,而且整体趋势仍然是增加。
这才开始接近真实世界中的认知。
14.7 从静态属性到动态属性
传统数据模型通常可以表示为:
Object
↓
Attribute
↓
Value
例如:
Egg
↓
Weight
↓
50g
这种结构适合记录。
但如果系统需要认知现实世界,就需要扩展为:
Object
↓
Attribute
├── Value
├── State
├── Change
├── Rate
└── Trend
于是:
Egg
↓
Pressure
├── Value = 2.8N
├── State = Increasing
├── Change = +0.3N
├── Rate = +0.2N/s
└── Trend = Increasing
这意味着:
属性不再是对象的静态标签,而成为对象当前动态状态的一个认知通道。
14.8 动态属性与时间
动态属性离不开时间。
如果没有时间:
Value = 3
只是一个值。
加入时间:
t1 → Value = 2
t2 → Value = 3
才能得到:
Change = +1
继续加入时间间隔:
Δt = t2 - t1
才能得到:
Rate = ΔValue / Δt
再观察更长时间:
t1
t2
t3
t4
t5
才能形成:
Trend
所以:
时间
↓
Value序列
↓
Change
↓
Rate
↓
Trend
是动态属性形成的重要基础。
14.9 动态属性不是简单的数据采集
这里必须进一步区分:
数据变化
和:
认知变化
数据变化只是:
10 → 12
而认知系统需要继续判断:
为什么变化?
变化是否正常?
变化是否稳定?
变化是否危险?
变化是否符合当前目标?
变化是否意味着对象状态正在改变?
因此:
Data Change
只是动态属性的输入。
真正的认知过程是:
数据变化
↓
变化识别
↓
状态识别
↓
变化率分析
↓
趋势判断
↓
关系分析
↓
认知匹配
这也为后面的动态认知匹配奠定基础。
14.10 从“属性值”进入“属性过程”
传统对象模型:
Object
↓
Attribute
↓
Value
更适合回答:
“这个对象有什么?”
动态认知模型:
Object
↓
Attribute
↓
Value
↓
State
↓
Change
↓
Rate
↓
Trend
则进一步回答:
“这个对象的属性现在是什么状态?”
“这个属性发生了什么变化?”
“变化速度如何?”
“这种变化正在朝什么方向发展?”
于是,属性从一个:
值
转变成为:
过程。
这是本章最重要的理论转变。
14.11 动态属性是认知的时间入口
对象本身可能相对稳定。
但对象属性不断变化。
例如:
对象:鸡蛋
对象身份在短时间内没有改变。
但是:
压力
接触面积
摩擦
位置
速度
形变
温度
都可能变化。
因此,认知系统实际上不是只认识:
Egg
而是在不断认识:
Egg(t1)
Egg(t2)
Egg(t3)
Egg(t4)
...
于是:
可以被理解为:
对象的动态认知,也就成为对象属性动态变化的综合结果。
14.12 从动态属性走向动态认知
本章并不试图在这里直接解决“认知匹配”。
本章只完成一个基础理论转换:
把属性从静态数据转换为动态信息。
形成:
Value
↓
State
↓
Change
↓
Rate
↓
Trend
↓
Dynamic Attribute
而下一步的问题自然产生:
如果一个对象同时存在多个动态属性,那么认知系统如何把这些属性放在一起进行判断?
例如鸡蛋:
压力 ↑
摩擦 ↓
滑移 ↑
形变 ↑
这些属性不是独立存在的。
它们之间存在动态关系。
于是:
多个动态属性
↓
属性协同
↓
动态关系
↓
动态匹配
↓
认知
这就进入后面的动态属性关系与认知匹配理论。
本章小结
本章建立了一个重要原则:
属性不是静态值,而是随时间变化、具有状态、变化量、变化率和变化趋势的动态认知信息。
可以将本章模型概括为:
Object
│
↓
Attribute
│
┌──────────┼──────────┐
↓ ↓ ↓
Value State Change
│
↓
Rate
│
↓
Trend
进一步可以写成:
其中:
- Value:当前属性值;
- State:当前属性状态;
- Change:属性发生的变化;
- Rate:属性变化的速度;
- Trend:属性在一段时间内形成的变化趋势。
由此,认知系统开始从:
“对象有什么属性?”
进入:
“对象的属性正在发生什么?”
而这一步,是从静态对象认知走向动态认知的关键。
下一章将进一步研究:
第15章 动态属性:Attribute(t)
重点不再只是解释“属性会变化”,而是建立属性随时间变化的正式表示方法,使动态属性能够进入后续的对象状态、关系计算和动态认知匹配。