第1章 SAI Framework 概述
1.1 SAI 是什么
SAI 是 Simulated Artificial Intelligence 的缩写,中文可以定义为:
模拟人工智能
SAI 的核心不是生成内容,而是模拟一个人工个体如何接收信息、感知环境、形成认知、保存记忆、进行推理、作出决策、产生行为,并通过反馈不断积累经验和学习的完整运行过程。
因此,SAI 的研究和开发重点不是某一个单独的算法,而是建立一个能够承载这些过程的完整软件框架。
可以把 SAI 的基本运行过程表示为:
信息接收
↓
场景采集
↓
感知
↓
元素
↓
对象
↓
关系
↓
理解
↓
记忆
↓
推理
↓
决策
↓
行为
↓
行动 / 表现
↓
外部世界
↓
反馈
↓
经验
↓
学习
↓
更新
↓
再次接收信息
因此,SAI 最终形成的是一个闭环运行的模拟人工个体。
1.2 SAI 的英文定义
SAI 的英文名称:
Simulated Artificial Intelligence
其中:
Simulated
↓
模拟的
Artificial
↓
人工的
Intelligence
↓
智能
组合起来就是:
Simulated Artificial Intelligence —— 模拟人工智能
这里的 Simulated 非常重要。
SAI 的目标不是简单模拟某一个人工智能功能,而是通过软件对象、状态、关系、规则、数学计算、记忆、经验和学习机制,模拟一个人工个体的智能运行过程。
因此:
SAI
≠ 单一算法
≠ 单一模型
≠ 单一程序
≠ 单一聊天系统
而是:
SAI
=
模拟人工个体的完整软件运行体系
1.3 Simulated Artificial Intelligence 的含义
传统的软件通常按照预先确定的程序流程运行:
输入
↓
程序
↓
计算
↓
输出
例如:
输入:10 + 20
程序:
执行加法
输出:
30
这是确定性的程序计算。
而一个模拟人工个体需要面对更加复杂的运行过程:
外部世界
↓
获得信息
↓
识别信息
↓
形成对象
↓
理解对象关系
↓
结合已有记忆
↓
进行推理
↓
产生多个候选行为
↓
进行决策
↓
执行行为
↓
获得结果
↓
形成经验
↓
更新自身
因此 SAI 关注的是:
程序如何形成一个持续运行的人工个体。
例如,一个简单的 SAI 个体可以面对:
环境:
温度 = 32℃
已有规则:
温度 > 30℃ → 开启风扇
当前状态:
风扇 = OFF
经过:
信息
↓
感知
↓
对象
↓
状态
↓
规则匹配
↓
推理
↓
决策
↓
行为
↓
Action:开启风扇
最后:
风扇 = ON
这就是 SAI 所关注的基本运行方式。
1.4 SAI Framework 的定义
SAI Framework 可以定义为:
SAI Framework 是一套用于构建模拟人工个体的通用软件框架,以 PHP OOP、对象、元素、属性、关系、方法、规则、事实、状态、记忆、经验、数学计算和模块化机制为基础,为模拟人工个体提供统一的运行结构、对象体系、认知体系、行为体系以及外部交互能力。
简单来说:
SAI
↓
模拟人工智能
SAI Framework
↓
开发 SAI 的软件框架
就像:
Web Application
↓
需要
↓
Web Framework
而这里:
Simulated Individual
↓
需要
↓
SAI Framework
因此,SAI Framework 的最终服务对象不是网页,而是:
Simulated Individual —— 模拟人工个体。
1.5 SAI Framework 解决什么问题
如果没有统一框架,每开发一个模拟人工个体,都需要重新处理:
信息
场景
对象
状态
记忆
规则
推理
决策
行为
反馈
学习
这样容易产生大量重复代码。
SAI Framework 的作用,就是把这些通用能力抽象成框架。
例如:
SAI Framework
│
├── Information
├── Scene
├── Perception
├── Element
├── Object
├── Relation
├── Cognition
├── Memory
├── Reasoning
├── Decision
├── Behavior
├── Expression
├── Template
├── Renderer
├── Adapter
├── Device
├── Feedback
├── Experience
├── Learning
└── Maintenance
以后开发不同的人工个体时,不需要重新开发整个体系。
例如:
SAI Individual A
↓
环境监测
SAI Individual B
↓
机器人控制
SAI Individual C
↓
车辆环境处理
SAI Individual D
↓
Web 信息交互
它们都可以使用同一个 SAI Framework。
1.6 SAI Framework 与普通软件框架的区别
普通软件框架通常解决的是:
程序如何组织
模块如何调用
数据如何处理
请求如何进入
结果如何输出
SAI Framework 除了这些工程问题,还要解决:
人工个体如何存在
人工个体如何获得信息
如何感知
如何建立对象
如何理解关系
如何记忆
如何推理
如何决策
如何产生行为
如何获得反馈
如何形成经验
如何学习
因此两者的核心目标不同。
普通软件框架
程序
↓
业务逻辑
↓
结果
SAI Framework
外部世界
↓
信息
↓
感知
↓
认知
↓
记忆
↓
推理
↓
决策
↓
行为
↓
外部世界
↓
反馈
↓
学习
所以:
普通 Framework 主要组织程序,SAI Framework 进一步组织一个模拟人工个体的运行过程。
1.7 SAI Framework 与 Web Framework 的区别
这一点必须明确。
SAI Framework 不是 Web Framework。
Web Framework 的核心对象通常是:
Request
↓
Controller
↓
Model
↓
View
↓
Response
而 SAI 的核心运行过程是:
Information
↓
Perception
↓
Cognition
↓
Memory
↓
Reasoning
↓
Decision
↓
Behavior
↓
Action
↓
External World
↓
Feedback
Web 可以成为 SAI 的一种外部接口:
Browser
↓
Web Request
↓
Controller
↓
SAI
↓
Expression
↓
SATE
↓
WebRenderer
↓
Response
但也可以完全不使用 Web:
Sensor
↓
SceneCollector
↓
SAI
↓
RobotAdapter
↓
Robot
甚至:
Machine
↓
DeviceAdapter
↓
SAI
↓
Action
↓
Machine
因此:
SAI 可以使用 Web 的工程思想,但 SAI 并不依附于 Web。
1.8 SAI Framework 与 ThinkPHP 的关系
ThinkPHP 可以作为 SAI Framework 在软件框架工程设计思想上的参考。
例如可以借鉴:
Application
Container
Controller
Model
Route
Middleware
Lifecycle
Extension
但是这些概念进入 SAI 后需要重新定义。
例如:
ThinkPHP
Controller
↓
处理 Web Request
SAI:
Controller
↓
作为一种外部入口
↓
把信息交给 Central / Individual
再例如:
ThinkPHP Model
↓
业务数据模型
SAI Model:
Object
Property
Relation
State
Memory
Experience
因此:
ThinkPHP 是工程思想参考,而不是 SAI 的基础身份。
SAI Framework 可以借鉴成熟 Framework 的:
- OOP
- MVC
- Container
- Lifecycle
- Route
- Component
- Extension
- Event
- Middleware
但是最终组织目标仍然是:
Individual
而不是 Web Application。
1.9 SAI Framework 与 Smarty 的关系
Smarty 最核心的工程思想之一是:
把程序逻辑与表现模板分离。
这个思想对 SAI 同样有价值。
但 SAI 不直接使用 Smarty 作为自身模板系统。
SAI 可以建立自己的:
SATE —— SAI Template Engine
并进一步发展为开放的表现与映射机制。
基本结构:
Behavior
↓
Action
↓
Expression
↓
Template
↓
Renderer / Adapter
↓
外部世界
例如:
Action
↓
Light ON
可以通过不同方式表现:
WebRenderer
↓
灯已打开
ApiRenderer
↓
{"action":"light_on"}
DeviceAdapter
↓
发送开灯指令
因此 SATE 不应该被限制为:
HTML Template
而可以支持:
Web
UI
API
Terminal
Device
Robot
Machine
Custom
所以:
Smarty 提供了模板工程思想的参考,而 SATE 是 SAI 自己的开放模板与表现系统。
1.10 SAI Framework 的最终目标
SAI Framework 的最终目标不是开发一个“智能网页”。
也不是开发一个“聊天机器人”。
更不是开发一个单纯的规则引擎。
最终目标是:
建立一个可以持续运行的模拟人工个体。
这个个体应该具备:
Identity
↓
State
↓
Ability
↓
Information
↓
Perception
↓
Cognition
↓
Memory
↓
Reasoning
↓
Decision
↓
Behavior
↓
Action
↓
Expression
↓
External World
↓
Feedback
↓
Experience
↓
Learning
↓
Update
最终形成:
┌───────────────┐
│ Individual │
└───────┬───────┘
│
Central
│
┌──────────────┼──────────────┐
│ │ │
Perception Memory Learning
│ │ │
└──────────────┼──────────────┘
│
Cognition
│
Reasoning
│
Decision
│
Behavior
│
Action
│
External World
│
Feedback
│
Experience
│
└──────→ Learning
这就是 SAI Framework 的最终闭环。
1.11 本教程的学习路线
本教程不会直接从一个大型 SAI 开始。
而是采用从框架内核逐步构建完整人工个体的方式。
第一阶段:Framework Core
Application
Container
Bootstrap
Request
Response
Controller
Model
Engine
先把框架本身建立起来。
第二阶段:Individual
Individual
Identity
State
Ability
Central
建立人工个体。
第三阶段:Input
Information
InformationReceiver
Scene
SceneCollector
Sensor
建立信息接收和场景采集。
第四阶段:Cognition
Element
Object
Property
Relation
Method
Perception
Cognition
Understanding
建立认知基础。
第五阶段:Memory & Reasoning
Memory
Fact
Experience
Rule
Reasoning
Conclusion
建立记忆和推理。
第六阶段:Decision & Behavior
Decision
Risk
Priority
Behavior
Action
Expression
建立决策与行为。
第七阶段:SATE
Template
TemplateEngine
Compiler
Renderer
建立开放表现模板系统。
第八阶段:External World
Adapter
Device
Robot
Machine
Sensor
让 SAI 可以连接外部设备。
第九阶段:Feedback & Learning
Feedback
Experience
Learning
Update
形成学习闭环。
第十阶段:Self Maintenance
Detection
Risk
Conflict
Diagnosis
Repair
Verification
形成自我维护能力。
最终
把所有模块组合成:
SAI Framework
↓
Individual
↓
完整运行
1.12 本章完整示例:一个最简单的 SAI
为了理解整个框架,我们先不实现复杂系统。
假设建立一个最简单的 SAI:
Individual:SAI-001
它只有一个能力:
当温度超过 30℃时开启风扇。
外部环境提供:
温度 = 32℃
第一步:信息接收
Information
{
type: "temperature",
value: 32
}
第二步:感知
Perception
↓
发现:
温度
第三步:建立对象
Object
{
name: "temperature",
value: 32
}
第四步:认知
系统理解:
temperature
=
32℃
第五步:读取规则
Rule
IF temperature > 30
THEN fan = ON
第六步:推理
32 > 30
结果:
Conclusion
=
需要开启风扇
第七步:决策
Decision
=
TurnOnFan
第八步:行为
Behavior
=
TurnOnFan
第九步:Action
Action
{
device: "fan",
command: "ON"
}
第十步:执行
Fan
↓
ON
第十一步:反馈
设备返回:
Fan State
=
ON
第十二步:经验
SAI 保存:
Experience
{
condition: "temperature > 30",
action: "fan ON",
result: "success"
}
最终形成:
温度 32℃
↓
Information
↓
Perception
↓
Object
↓
Cognition
↓
Rule
↓
Reasoning
↓
Decision
↓
Behavior
↓
Action
↓
Fan ON
↓
Feedback
↓
Experience
这就是一个最小的 SAI Individual 闭环。
后面的章节,就是把这个非常简单的过程逐步扩展成真正的:
Information
+
Scene
+
Perception
+
Cognition
+
Memory
+
Reasoning
+
Decision
+
Behavior
+
Action
+
Expression
+
SATE
+
Renderer
+
Adapter
+
Device
+
Feedback
+
Experience
+
Learning
+
Maintenance
最终形成完整的 SAI Framework + Simulated Individual。