首页 理论 架构 工程 文档 白皮书 著作 研究 案例 下载 博客 关于 开始使用 →

第269章 Cognition API|认知 API

第269章 Cognition API|认知 API

269.1 认知 API 的提出背景

前面的 Element API、Object API、Attribute API、Relation API、State API 和 Scene API,已经建立了机器世界从基础数据到场景结构的连续工程接口。

其结构为:

Element
↓
Object
↓
Attribute
↓
Relation
↓
State
↓
Scene

但是,场景本身还不是认知。

场景回答的是:

当前机器世界中存在什么对象,这些对象具有怎样的属性、关系和状态,并处于怎样的环境、空间和时间结构中。

认知则进一步回答:

在当前目标和当前场景条件下,机器形成了什么认识,以及应该形成什么方法、行为和动作。

因此需要建立:

Cognition API|认知 API

Cognition API 是 ICAI 系统中连接当前场景结构与认知运行系统的标准通信接口。

其基本结构为:

Scene
↓
Cognition API
↓
Cognitive Service
↓
Cognitive Engine
↓
Cognitive Model
↓
Cognition Result

Cognition API 本身不等于 Cognitive Engine。

API 负责:

接收认知数据
↓
验证认知输入
↓
调用认知服务
↓
进入认知引擎
↓
返回认知结果

而 Cognitive Engine 负责真正的认知计算。


269.2 Cognition API 的定义

Cognition API|认知 API,是用于向 ICAI 认知系统提交目标、对象、场景和认知条件,并获得认知结果、方法、行为和动作结构的标准程序接口。

可以定义:

CognitionAPI(Input)→CognitionResultCognitionAPI(Input)\rightarrow CognitionResult

其中:

  • Input:认知输入;
  • CognitionResult:认知输出。

完整认知输入可以表示为:

It=(Gt,Ot,At,Rt,St,Sct,Et,Pt,Tt)I_t=(G_t,O_t,A_t,R_t,S_t,Sc_t,E_t,P_t,T_t)

其中:

  • GtG_t:目标;
  • OtO_t:对象;
  • AtA_t:属性;
  • RtR_t:关系;
  • StS_t:状态;
  • SctSc_t:场景;
  • EtE_t:环境;
  • PtP_t:空间位置;
  • TtT_t:时间。

认知结果可以表示为:

Ct=F(Gt,Ot,At,Rt,St,Sct)C_t=F(G_t,O_t,A_t,R_t,S_t,Sc_t)

进一步:

Ct→Mt→Bt→ActC_t\rightarrow M_t\rightarrow B_t\rightarrow Ac_t

其中:

  • CtC_t:认知;
  • MtM_t:方法;
  • BtB_t:行为;
  • ActAc_t:动作。

269.3 Cognition API 的核心作用

Cognition API 主要承担六类任务。

第一,接收认知输入。

第二,验证认知输入结构。

第三,建立 Cognitive Runtime Context。

第四,调用 Cognitive Engine。

第五,获得认知结果。

第六,将认知结果结构化返回给调用系统。

基本流程:

External System
↓
Cognition API
↓
Cognition Controller
↓
Cognition Service
↓
Cognitive Engine
↓
Cognitive Model
↓
Cognition Result
↓
JSON
↓
External System

因此 Cognition API 是认知能力的通信入口


269.4 Cognition API 与 Scene API 的关系

Scene API 解决:

Structure→SceneStructure\rightarrow Scene

Cognition API 解决:

Scene→CognitionScene\rightarrow Cognition

两者形成连续关系:

Object
+
Attribute
+
Relation
+
State
↓
Scene API
↓
Scene
↓
Cognition API
↓
Cognition

因此:

Scene 是认知的结构输入,Cognition 是对当前结构进行认知计算后的结果。

Scene API 不应该直接承担认知决策。

同样,Cognition API 也不应该重新承担对象、关系和状态的基础管理职责。

这种边界可以表示为:

Object API
    ↓
Attribute API
    ↓
Relation API
    ↓
State API
    ↓
Scene API
    ↓
Cognition API
    ↓
Cognitive Engine

由此保持 API 层的清晰结构。


269.5 Cognition Input|认知输入

认知 API 的输入可以定义为:

CognitionInput
{
    request_id
    goal
    object
    scene
    context
    timestamp
}

更完整的认知输入结构:

CognitionInput
├── Request ID
├── Goal
├── Objects
├── Attributes
├── Relations
├── States
├── Scene
├── Environment
├── Position
├── Time
└── Context

其中:

Request ID 用于标识本次认知请求;

Goal 表示当前目标;

Objects 表示相关对象;

Attributes 表示对象属性;

Relations 表示对象关系;

States 表示对象状态;

Scene 表示当前场景;

Environment 表示环境;

Position 表示空间信息;

Time 表示时间;

Context 表示当前认知上下文。


269.6 Cognition Context|认知上下文

认知不是脱离条件独立产生的。

同一个对象,在不同场景和不同目标下,可以产生不同的认知结果。

因此建立:

Cognition Context|认知上下文

可以定义:

Contextt=(Gt,Sct,Et,Pt,Tt)Context_t=(G_t,Sc_t,E_t,P_t,T_t)

其中:

  • GtG_t:目标;
  • SctSc_t:场景;
  • EtE_t:环境;
  • PtP_t:空间;
  • TtT_t:时间。

认知过程可以表示:

Ct=F(Contextt,Ot,At,Rt,St)C_t=F(Context_t,O_t,A_t,R_t,S_t)

例如,同一个“杯子”对象:

目标:拿起杯子

系统关注:

杯子位置
杯子状态
手的位置
手与杯子的距离
手与杯子的接触关系

而目标变成:

目标:判断杯子是否装满

认知关注结构则发生变化:

杯子
↓
内部状态
↓
液体
↓
液面
↓
容量状态

因此目标和场景共同决定认知过程中的结构关注。


269.7 Cognitive Model|认知模型

Cognition API 的核心输入最终进入 Cognitive Model|认知模型

认知模型可以表示:

CMt=F(Gt,Ot,At,Rt,St,Sct)CM_t=F(G_t,O_t,A_t,R_t,S_t,Sc_t)

其中:

  • CMtCM_t:当前认知模型;
  • GtG_t:目标;
  • OtO_t:对象;
  • AtA_t:属性;
  • RtR_t:关系;
  • StS_t:状态;
  • SctSc_t:场景。

认知模型可以组织为:

Cognitive Model
├── Goal
├── Scene
│   ├── Objects
│   ├── Attributes
│   ├── Relations
│   └── States
├── Cognition
├── Methods
├── Behaviors
└── Actions

因此 Cognitive Model 是认知运行过程中的统一结构。

Cognition API 的作用,就是将外部输入转换为可以进入该结构的认知请求。


269.8 Cognition API 的认知过程

一次完整的认知 API 请求可以表示为:

Request
↓
Input Validation
↓
Object Validation
↓
Scene Validation
↓
Context Construction
↓
Cognitive Model Construction
↓
Cognitive Matching
↓
Cognition
↓
Method Selection
↓
Behavior Formation
↓
Action Formation
↓
Response

其中核心认知过程可以抽象为:

Ct=F(Gt,CMt)C_t=F(G_t,CM_t)

然后:

Mt=SelectMethod(Ct)M_t=SelectMethod(C_t)

进一步:

Bt=BuildBehavior(Gt,Ct,Mt)B_t=BuildBehavior(G_t,C_t,M_t)

最后:

Act=GenerateAction(Bt)Ac_t=GenerateAction(B_t)

这使 Cognition API 不只是一个普通的数据查询接口,而是机器认知运行能力的程序入口。


269.9 Cognition Result|认知结果

认知 API 返回的结果应该是结构化数据,而不是一段非结构化描述。

可以定义:

CognitionResult
{
    request_id
    status
    cognition
    matched_objects
    matched_scene
    method
    behavior
    action
    confidence
    timestamp
}

其中:

  • request_id:请求编号;
  • status:处理状态;
  • cognition:认知结果;
  • matched_objects:匹配到的对象;
  • matched_scene:匹配到的场景;
  • method:形成的方法;
  • behavior:形成的行为;
  • action:形成的动作;
  • confidence:认知结果的可信度;
  • timestamp:认知时间。

因此:

Result=(C,O,Sc,M,B,Ac,F,T)Result=(C,O,Sc,M,B,Ac,F,T)

其中 FF 可以表示认知之后产生的反馈或结果状态。


269.10 Cognition API 与认知匹配

ICAI 认知过程中的重要基础机制是Cognitive Matching|认知匹配

认知 API 可以将当前输入交给认知引擎进行结构匹配:

Goal
↓
Current Scene
↓
Object Matching
↓
Attribute Matching
↓
Relation Matching
↓
State Matching
↓
Scene Matching
↓
Cognition

可以表示:

Match(G,O,A,R,S,Sc)→CMatch(G,O,A,R,S,Sc)\rightarrow C

这里的 Match 不是简单字符串比较,而是对机器世界结构进行条件匹配。

例如:

目标:抓取对象

当前场景:
Hand
Egg
Table

关系:
Hand → Near → Egg

状态:
Hand = Moving
Egg = Stable

认知系统可以形成:

目标对象 = Egg
目标关系 = Hand → Grasp → Egg
目标状态 = Egg 可被抓取

进一步形成:

Method
↓
Grasp
↓
Behavior
↓
Action

因此 Cognition API 是认知匹配过程的系统入口。


269.11 Cognition API 与 Method

认知不是最终执行动作。

认知结果需要进一步找到能够实现目标的方法。

因此:

Ct→MtC_t\rightarrow M_t

其中:

  • CtC_t:当前认知;
  • MtM_t:当前方法。

方法可以定义为:

Mt=F(Gt,Ot,St,Ct)M_t=F(G_t,O_t,S_t,C_t)

例如:

Goal = Grasp
Object = Egg
State = Stable
Relation = Near

系统形成:

Method = Grasp

方法本身不是一次具体的设备动作。

它是从当前认知结构到行为结构之间的中间层。

因此:

Cognition
↓
Method
↓
Behavior
↓
Action

Cognition API 可以将 Method 作为认知结果的一部分返回。


269.12 Cognition API 与 Behavior

方法确定之后,还需要形成行为过程。

定义:

Bt=F(Gt,Ct,Mt,St)B_t=F(G_t,C_t,M_t,S_t)

例如:

Goal
↓
Grasp Egg
↓
Method
↓
Grasp
↓
Behavior
↓
Approach
↓
Contact
↓
Apply Force
↓
Hold
↓
Lift

这里:

Method|方法 是行为实现的规则和方式。

Behavior|行为 是按照目标、状态和方法形成的动态过程。

Action|动作 是具体可执行单元。

因此:

Method≠Behavior≠ActionMethod\neq Behavior\neq Action

Cognition API 可以返回三层结构:

Cognition
↓
Method
↓
Behavior

然后由后续 Action / Device 层完成执行。


269.13 Cognition API 与 Action

当行为形成后,可以产生动作:

Act=M(Bt,St,Pt)Ac_t=M(B_t,S_t,P_t)

其中:

  • ActAc_t:动作;
  • BtB_t:行为;
  • StS_t:当前状态;
  • PtP_t:动态参数。

动作可以包含:

Action
{
    type
    target
    parameters
    device
    expected_state
}

例如:

Action
{
    type: "grasp",
    target: "egg",
    parameters:
    {
        position: ...,
        force: ...,
        pressure: ...,
        velocity: ...
    }
}

其中动态参数不是固定常量,而是根据当前对象和当前状态计算得到。

因此:

Actiont=F(Ct,Mt,Bt,St,At)Action_t=F(C_t,M_t,B_t,S_t,A_t)

这使认知结果能够继续进入设备执行系统。


269.14 Cognition API 的 PHP OOP 架构

Cognition API 可以采用:

CognitionApiController
        ↓
CognitionService
        ↓
CognitiveEngine
        ↓
CognitiveModel
        ↓
CognitiveRepository

其中:

CognitionApiController

负责 API 请求和响应。

CognitionService

负责认知服务流程。

CognitiveEngine

负责认知计算。

CognitiveModel

负责认知运行结构。

CognitiveRepository

负责认知数据持久化。


269.15 CognitionApiController

PHP 可以建立:

class CognitionApiController
{
    protected $service;

    public function analyze()
    {
        $input = $this->getRequestData();

        $result = $this->service->cognize($input);

        return $this->json($result);
    }

    public function current()
    {
        $result = $this->service->currentCognition();

        return $this->json($result);
    }

    public function history()
    {
        $result = $this->service->history();

        return $this->json($result);
    }
}

Controller 的职责是:

Receive
↓
Route
↓
Call Service
↓
Return JSON

而不是直接实现认知算法。


269.16 CognitionService

CognitionService 负责组织认知流程:

class CognitionService
{
    protected $engine;

    public function cognize($input)
    {
        $this->validate($input);

        return $this->engine->cognize($input);
    }

    protected function validate($input)
    {
        return true;
    }
}

因此:

API Controller
↓
Service
↓
Engine

形成稳定的工程边界。


269.17 CognitiveEngine

真正的认知计算进入 CognitiveEngine。

class CognitiveEngine
{
    public function cognize($input)
    {
        $goal   = $input['goal'];
        $scene  = $input['scene'];
        $object = $input['objects'];

        $cognition = $this->buildCognition(
            $goal,
            $scene,
            $object
        );

        $method = $this->selectMethod($cognition);

        $behavior = $this->buildBehavior(
            $cognition,
            $method
        );

        $action = $this->buildAction(
            $behavior
        );

        return array(
            'cognition' => $cognition,
            'method'    => $method,
            'behavior'  => $behavior,
            'action'    => $action
        );
    }
}

这里最重要的是职责分离。

Controller 不认知。

Service 不认知。

API 不认知。

真正的认知计算属于:

CognitiveEngine

269.18 Cognition API 的请求接口

可以建立:

/api/cognition/analyze
/api/cognition/current
/api/cognition/get
/api/cognition/history
/api/cognition/validate
/api/cognition/method
/api/cognition/behavior
/api/cognition/action

其中:

/analyze:提交认知请求;

/current:获取当前认知;

/get:获取指定认知;

/history:获取认知历史;

/validate:验证认知输入;

/method:获得对应方法;

/behavior:获得行为结构;

/action:获得动作结构。

也可以采用资源型设计:

/api/cognitions
/api/cognitions/{id}
/api/cognitions/{id}/method
/api/cognitions/{id}/behavior
/api/cognitions/{id}/action
/api/cognitions/{id}/history

269.19 JSON 认知请求

一个基本的认知请求可以表示为:

{
    "request_id": "C10001",
    "goal": {
        "type": "grasp",
        "target": "egg"
    },
    "scene_id": "SC10001",
    "objects": [
        {
            "id": "hand_01",
            "type": "hand"
        },
        {
            "id": "egg_01",
            "type": "egg"
        }
    ],
    "context": {
        "timestamp": 1788500000
    }
}

系统收到请求后:

JSON
↓
Decode
↓
Cognition Input
↓
Scene Load
↓
Cognitive Model
↓
Cognitive Engine

因此 JSON 仍然只是通信数据结构。

认知计算发生在:

CognitiveEngine

中。


269.20 JSON 认知响应

认知 API 可以返回:

{
    "request_id": "C10001",
    "status": "success",
    "cognition": {
        "target_object": "egg_01",
        "state": "graspable"
    },
    "method": {
        "type": "grasp"
    },
    "behavior": {
        "type": "approach_contact_grasp"
    },
    "action": {
        "type": "grasp",
        "target": "egg_01"
    }
}

这形成:

Cognition
↓
Method
↓
Behavior
↓
Action

因此外部系统不仅可以知道“机器认知到了什么”,还可以获得认知之后形成的结构化行为信息。


269.21 Cognition API 与实时认知

Cognition API 不仅适用于一次性请求,也可以用于实时认知。

实时认知过程:

Sensor
↓
Element API
↓
Object Update
↓
Attribute Update
↓
Relation Update
↓
State Update
↓
Scene Update
↓
Cognition API
↓
Cognitive Engine
↓
Cognition
↓
Behavior
↓
Action

当动作执行后:

Action
↓
Device
↓
World Change
↓
Feedback
↓
Element API
↓
Scene Update
↓
Cognition API
↓
Re-Cognition

因此:

Ct→At→Wt+1→Ft+1→Ct+1C_t\rightarrow A_t\rightarrow W_{t+1}\rightarrow F_{t+1}\rightarrow C_{t+1}

形成认知闭环。


269.22 Cognition History|认知历史

机器认知不是只有当前认知,还需要保存认知变化过程。

定义:

HC={(t1,C1),(t2,C2),⋯ ,(tn,Cn)}H_C=\{(t_1,C_1),(t_2,C_2),\cdots,(t_n,C_n)\}

例如:

t1 → Egg not reachable
t2 → Egg reachable
t3 → Egg graspable
t4 → Egg grasping
t5 → Egg lifted

这形成:

C1→C2→C3→C4→C5C_1\rightarrow C_2\rightarrow C_3\rightarrow C_4\rightarrow C_5

认知历史可以用于:

当前认知
+
过去认知
↓
认知变化

并进一步支持:

Cognition
↓
Experience
↓
Memory

从而与后续 ICAI Memory API、Experience API 等接口产生连接。


269.23 Cognition API 与反馈

认知结果执行后,现实世界会发生变化。

因此认知结果不能永久保持有效。

例如:

Cognition:
Egg is graspable

执行:

Action:
Grasp Egg

现实世界发生变化:

Egg Position Changed
Egg State Changed
Hand-Egg Relation Changed

于是:

Feedback
↓
State Update
↓
Scene Update
↓
Cognition Update

因此:

Ct+1=F(Gt+1,Ot+1,At+1,Rt+1,St+1,Sct+1)C_{t+1}=F(G_{t+1},O_{t+1},A_{t+1},R_{t+1},S_{t+1},Sc_{t+1})

新的认知来自新的世界结构。

这说明 ICAI 的认知不是一次性计算,而是动态运行过程。


269.24 Cognition API 的验证机制

认知 API 必须验证输入是否具备基本结构。

可以定义:

Valid(CInput)=Valid(G)∧Valid(O)∧Valid(Sc)∧Valid(T)Valid(CInput)=Valid(G)\land Valid(O)\land Valid(Sc)\land Valid(T)

其中:

  • GG:目标;
  • OO:对象;
  • ScSc:场景;
  • TT:时间。

进一步要求:

Goal Valid
+
Object Valid
+
Scene Valid
+
State Valid
+
Relation Valid
↓
Valid Cognition Input

如果场景不存在,则不能形成有效的当前场景认知。

如果目标不存在,则无法确定当前认知方向。

因此:

Valid(Sc)∧Valid(G)⇒CognitionInputValidValid(Sc)\land Valid(G)\Rightarrow CognitionInputValid


269.25 Cognition API 的统一数据链

到第269章,ICAI API 层已经形成:

Element API
↓
Object API
↓
Attribute API
↓
Relation API
↓
State API
↓
Scene API
↓
Cognition API

其理论结构为:

E→O→A→R→S→Sc→CE\rightarrow O\rightarrow A\rightarrow R\rightarrow S\rightarrow Sc\rightarrow C

进一步:

C→M→B→Ac→DC\rightarrow M\rightarrow B\rightarrow Ac\rightarrow D

其中:

  • EE:Element;
  • OO:Object;
  • AA:Attribute;
  • RR:Relation;
  • SS:State;
  • ScSc:Scene;
  • CC:Cognition;
  • MM:Method;
  • BB:Behavior;
  • AcAc:Action;
  • DD:Device。

最终形成:

Element
↓
Object
↓
Attribute
↓
Relation
↓
State
↓
Scene
↓
Cognition
↓
Method
↓
Behavior
↓
Action
↓
Device
↓
Feedback
↓
Re-Cognition

这已经形成 ICAI 的完整机器认知运行结构。


269.26 Cognition API 的系统边界

Cognition API 建立之后,ICAI 开始具有明确的外部系统通信能力。

外部系统可以提交:

Goal
+
Object
+
Scene
+
Context

ICAI 返回:

Cognition
+
Method
+
Behavior
+
Action

因此:

External System
        ↓
   Cognition API
        ↓
   ICAI Runtime
        ↓
 Cognitive Engine
        ↓
 Cognition
        ↓
 Method
        ↓
 Behavior
        ↓
 Action
        ↓
 JSON Response
        ↓
External System

这使 ICAI 的认知能力可以作为一个独立的软件能力被其他系统调用。


269.27 Cognition API 与 ICAI Runtime

Cognition API 并不直接代替 ICAI Runtime。

其关系为:

Cognition API
↓
API Controller
↓
Cognition Service
↓
ICAI Runtime
↓
Cognitive Engine
↓
Cognitive Model

ICAI Runtime 保存当前运行状态:

Rt=[Gt,Ot,Sct,Ct,Bt,At,Dt,Ft]R_t=[G_t,O_t,Sc_t,C_t,B_t,A_t,D_t,F_t]

其中:

  • GtG_t:目标;
  • OtO_t:对象;
  • SctSc_t:场景;
  • CtC_t:认知;
  • BtB_t:行为;
  • AtA_t:动作;
  • DtD_t:设备;
  • FtF_t:反馈。

因此 API 请求进入 Runtime 后,可以读取当前运行状态,也可以推动运行状态发生变化。

Rt+1=T(Rt,Dt)R_{t+1}=T(R_t,D_t)


269.28 Cognition API 的工程定位

Cognition API 在 ICAI 中可以正式定义为:

Cognition API 是 ICAI 对外提供机器认知能力的标准程序接口,负责接收目标、对象、场景和上下文数据,调用 Cognitive Engine 形成当前认知,并以结构化数据返回认知、方法、行为和动作结果。

其核心边界为:

Scene
↓
Cognition API
↓
Cognitive Engine
↓
Cognition
↓
Method
↓
Behavior
↓
Action

API 负责通信。

Service 负责业务流程。

Engine 负责认知计算。

Model 负责认知结构。

Runtime 负责持续运行。

这五者形成清晰的工程分层。


269.29 本章总结

第269章建立了 Cognition API|认知 API

前六个 API 完成了机器世界结构建设:

Element→Object→Attribute→Relation→State→SceneElement\rightarrow Object\rightarrow Attribute\rightarrow Relation\rightarrow State\rightarrow Scene

第269章进一步建立:

Scene→CognitionScene\rightarrow Cognition

从而形成:

Scene
↓
Cognition API
↓
Cognitive Engine
↓
Cognition

认知继续向行为执行扩展:

Cognition→Method→Behavior→ActionCognition\rightarrow Method\rightarrow Behavior\rightarrow Action

再进入设备:

Action→Device→WorldAction\rightarrow Device\rightarrow World

世界变化产生反馈:

World→Feedback→SceneUpdate→Re−CognitionWorld\rightarrow Feedback\rightarrow SceneUpdate\rightarrow Re-Cognition

因此,第269章完成了 ICAI API 层最关键的一次跨越:

机器世界结构
↓
Scene
↓
机器认知
↓
Cognition

到此,ICAI 已经形成从基础元素到机器认知的连续 API 结构:

Element API
↓
Object API
↓
Attribute API
↓
Relation API
↓
State API
↓
Scene API
↓
Cognition API

下一阶段可以继续向 Method API|方法 API 延伸,使认知结果进入方法结构,进一步建立:

Cognition→MethodCognition\rightarrow Method

的独立系统通信接口。

Leave a Reply

Your email address will not be published. Required fields are marked *