chore: init project docs - NextAgent cognitive decoupled architecture
- README.md with architecture diagram and project overview - docs/architecture-overview.md: core design, scheduling, RefPack protocol - docs/routing-compression-subnet.md: multi-modal encoding, compression training - docs/memory-subnet.md: MANN, GNN, retrieve-pull mechanism training - docs/logic-trace-subnet.md: RLHF+PRM, MCTS, self-correction training - docs/llm-subnet.md: SFT, RLHF fine-tuning, multi-language alignment
This commit is contained in:
202
docs/architecture-overview.md
Normal file
202
docs/architecture-overview.md
Normal file
@ -0,0 +1,202 @@
|
||||
# 架构概览
|
||||
|
||||
## 整体架构设计
|
||||
|
||||
NextAgent 采用 **认知解耦架构(Cognitive Decoupled Architecture)**,将传统单一 LLM 拆解为多个具有独立职能的子网,通过调度 Core 统一协调。每个子网类比人脑的一个功能区域,各司其职、协同工作。
|
||||
|
||||
### 设计原则
|
||||
|
||||
- **单一职责**:每个子网只负责一种认知功能,降低复杂度
|
||||
- **信息压缩**:子网间传递轻量级引用包而非原始数据
|
||||
- **冷热分离**:活跃数据在计算单元处理,原始数据存储在冷区
|
||||
- **可追溯**:每次推理决策都有完整的链路追踪记录
|
||||
|
||||
### 架构分层
|
||||
|
||||
```
|
||||
┌──────────────────────────────────────────────────────────────┐
|
||||
│ 应用层 │
|
||||
│ CLI / API / SDK / Web Interface / 第三方集成 │
|
||||
└──────────────────────┬───────────────────────────────────────┘
|
||||
│
|
||||
┌──────────────────────▼───────────────────────────────────────┐
|
||||
│ 调度 Core(前额叶皮层) │
|
||||
│ ┌────────────┐ ┌────────────┐ ┌────────────────────────┐ │
|
||||
│ │ 任务解析器 │ │ 调度引擎 │ │ 同步总线 │ │
|
||||
│ │ 拆解用户意图 │ │ 分配子任务 │ │ 子网间状态同步 │ │
|
||||
│ └────────────┘ └────────────┘ └────────────────────────┘ │
|
||||
└──────┬──────┬──────┬──────┬──────┬──────┬──────┬───────────┘
|
||||
│ │ │ │ │ │ │
|
||||
┌──────▼──┐ ┌─▼──────┐ ┌─▼──────┐ ┌─▼──────┐ ┌─▼──────────┐
|
||||
│ 路由与 │ │ 记忆 │ │ 逻辑链路 │ │ LLM │ │ 冷区存储 │
|
||||
│ 压缩子网 │ │ 子网 │ │ 追踪子网 │ │ 子网 │ │ (原始数据) │
|
||||
│(感觉中枢) │ │(海马体) │ │(推理回路)│ │(布洛卡) │ │ │
|
||||
└─────────┘ └────────┘ └────────┘ └────────┘ └────────────┘
|
||||
```
|
||||
|
||||
## 调度 Core(前额叶皮层)
|
||||
|
||||
调度 Core 是整个架构的**总指挥**,类比人脑的前额叶皮层,负责高级认知功能。
|
||||
|
||||
### 核心职责
|
||||
|
||||
1. **任务解析**:接收用户输入,拆解为可执行的子任务序列
|
||||
2. **调度决策**:根据任务类型,决定调用哪些子网及调用顺序
|
||||
3. **信息同步**:维护子网间的共享上下文状态
|
||||
4. **冲突解决**:当子网返回矛盾结果时,启动仲裁机制
|
||||
5. **链路追踪**:记录完整的推理决策路径,支持回溯
|
||||
|
||||
### 工作流程
|
||||
|
||||
```mermaid
|
||||
sequenceDiagram
|
||||
participant User as 用户
|
||||
participant Core as 调度 Core
|
||||
participant RCN as 路由与压缩子网
|
||||
participant MEM as 记忆子网
|
||||
participant LTC as 逻辑链路追踪子网
|
||||
participant LLM as LLM 子网
|
||||
|
||||
User->>Core: 用户输入/任务
|
||||
Core->>RCN: 1. 发送原始输入
|
||||
RCN->>RCN: 特征提取与压缩
|
||||
RCN-->>Core: 返回引用包(RefPack)
|
||||
|
||||
Core->>MEM: 2. 携带引用包检索记忆
|
||||
MEM->>MEM: 搜索知识图谱与情景记忆
|
||||
MEM-->>Core: 返回关联记忆引用包
|
||||
|
||||
Core->>LTC: 3. 发送任务+记忆进行推理
|
||||
LTC->>LTC: MCTS 推理路径搜索
|
||||
LTC->>LTC: 逻辑验证与修正
|
||||
LTC-->>Core: 返回验证后的推理路径
|
||||
|
||||
Core->>LLM: 4. 发送结构化推理结果
|
||||
LLM->>LLM: 结构化→自然语言转换
|
||||
LLM-->>Core: 返回自然语言输出
|
||||
|
||||
Core->>MEM: 5. 更新记忆(本次交互记录)
|
||||
Core-->>User: 返回最终结果
|
||||
```
|
||||
|
||||
### 调度算法伪代码
|
||||
|
||||
```
|
||||
function process(input):
|
||||
# 1. 任务解析
|
||||
task_graph = parse_task(input)
|
||||
|
||||
# 2. 逐节点执行
|
||||
for node in topological_sort(task_graph):
|
||||
# 2a. 路由与压缩
|
||||
refpack = routing_subnet.compress(node.input)
|
||||
|
||||
# 2b. 记忆检索
|
||||
memories = memory_subnet.retrieve(refpack)
|
||||
|
||||
# 2c. 逻辑推理
|
||||
reasoning_path = logic_subnet.reason(refpack, memories)
|
||||
|
||||
# 2d. 若需语言输出
|
||||
if node.requires_language:
|
||||
output = llm_subnet.express(reasoning_path)
|
||||
else:
|
||||
output = reasoning_path
|
||||
|
||||
# 3. 记忆更新
|
||||
memory_subnet.store(interaction_record)
|
||||
|
||||
return output
|
||||
```
|
||||
|
||||
## 子网间通信机制
|
||||
|
||||
### 引用包(RefPack)协议
|
||||
|
||||
所有子网间通信通过 **引用包(Reference Package)** 完成。引用包是一种轻量级的数据结构,包含:
|
||||
|
||||
```json
|
||||
{
|
||||
"refpack_id": "uuid-xxxx",
|
||||
"type": "compressed_feature | memory_chunk | reasoning_path | expression",
|
||||
"metadata": {
|
||||
"source_subnet": "routing_compression",
|
||||
"target_subnet": "memory",
|
||||
"timestamp": 1717200000,
|
||||
"compression_ratio": 0.85,
|
||||
"confidence": 0.92
|
||||
},
|
||||
"payload": {
|
||||
"dim": 768,
|
||||
"data": [0.12, -0.34, ...], // 压缩向量或结构化数据
|
||||
"indices": [1024, 2048, ...] // 冷区索引(可选)
|
||||
},
|
||||
"signature": "sha256-checksum"
|
||||
}
|
||||
```
|
||||
|
||||
### 引用-拉取机制
|
||||
|
||||
1. **引用阶段**:发送方生成轻量级引用包(通常 1-10 KB)
|
||||
2. **路由阶段**:调度 Core 将引用包分发到目标子网
|
||||
3. **拉取阶段**:目标子网根据引用包中的索引,按需从冷区拉取完整数据
|
||||
4. **缓存阶段**:热区缓存常用数据,减少冷区访问频率
|
||||
|
||||
```mermaid
|
||||
graph LR
|
||||
A["发送方子网"] -->|"1. 生成引用包"| B["引用包 (1-10KB)"]
|
||||
B -->|"2. 调度 Core 分发"| C["目标子网"]
|
||||
C -->|"3. 按需拉取"| D["冷区存储"]
|
||||
D -->|"4. 返回完整数据"| C
|
||||
C -->|"5. 缓存热数据"| E["热区缓存"]
|
||||
```
|
||||
|
||||
## 数据流
|
||||
|
||||
```mermaid
|
||||
flowchart TD
|
||||
Input["用户输入/多模态数据"] -->|"原始数据"| RCN["路由与压缩子网"]
|
||||
RCN -->|"引用包"| Core["调度 Core"]
|
||||
|
||||
Core -->|"记忆查询"| MEM["记忆子网"]
|
||||
MEM -->|"记忆引用包"| Core
|
||||
|
||||
Core -->|"推理请求"| LTC["逻辑链路追踪子网"]
|
||||
LTC -->|"推理路径"| Core
|
||||
|
||||
Core -->|"表达请求"| LLM["LLM 子网"]
|
||||
LLM -->|"自然语言"| Core
|
||||
|
||||
Core -->|"冷存储"| Cold["冷区存储"]
|
||||
Cold -->|"按需拉取"| Core
|
||||
|
||||
RCN -.->|"引用包索引"| Cold
|
||||
MEM -.->|"批量拉取"| Cold
|
||||
|
||||
Core -->|"最终输出"| Output["用户结果"]
|
||||
|
||||
style Input fill:#e1f5fe
|
||||
style Output fill:#e8f5e9
|
||||
style Core fill:#fff3e0,stroke:#ff9800,stroke-width:3px
|
||||
style Cold fill:#f3e5f5
|
||||
```
|
||||
|
||||
## 关键设计决策
|
||||
|
||||
| 决策 | 选择 | 理由 |
|
||||
|------|------|------|
|
||||
| 子网间通信协议 | 引用包(RefPack) | 轻量级、低延迟、支持异步 |
|
||||
| 冷区存储格式 | 压缩向量 + 倒排索引 | 高压缩率、快速模糊检索 |
|
||||
| 调度策略 | 有向无环图(DAG)调度 | 支持并行执行与依赖管理 |
|
||||
| 错误处理 | 三级降级(重试→降级→报错) | 保证系统鲁棒性 |
|
||||
| 状态同步 | 事件驱动 + 共享内存 | 低延迟、去中心化 |
|
||||
|
||||
## 与现有架构对比
|
||||
|
||||
| 特性 | 传统单一 LLM | Agent + 工具调用 | NextAgent(认知解耦) |
|
||||
|------|-------------|----------------|-------------------|
|
||||
| 知识存储 | 模型参数内隐式存储 | 外部工具/数据库 | 专用记忆子网 |
|
||||
| 推理能力 | 隐式(端到端) | 提示工程驱动 | 专用推理子网 + MCTS |
|
||||
| 幻觉控制 | 无专门机制 | 工具结果覆盖 | 知识-表达解耦,根本上杜绝 |
|
||||
| 可解释性 | 低(黑箱) | 中(可追踪工具调用) | 高(完整推理链路) |
|
||||
| 计算效率 | 每次推理全模型参与 | 按需调用工具 | 冷热分离,仅热数据参与计算 |
|
||||
312
docs/llm-subnet.md
Normal file
312
docs/llm-subnet.md
Normal file
@ -0,0 +1,312 @@
|
||||
# LLM 子网(布洛卡区/表达核)
|
||||
|
||||
## 概述
|
||||
|
||||
LLM 子网类比人脑的**布洛卡区(Broca's Area)**——大脑中负责语言表达的关键区域。在 NextAgent 架构中,LLM 子网是**唯一与自然语言打交道的组件**,负责将子网间流转的结构化信息转换为人类可读的自然语言输出。
|
||||
|
||||
### 核心设计哲学
|
||||
|
||||
**知识存储与语言表达分离**:LLM 子网本身不存储事实知识,它只负责"表达"。所有事实知识来自记忆子网和推理子网的引用包。这一设计从根本上杜绝了 LLM 子网产生"幻觉"的可能性——它不"知道"任何事,它只"表达"收到的结构化信息。
|
||||
|
||||
### 核心职责
|
||||
|
||||
- **结构化→自然语言转换**:将推理路径、记忆片段等结构化数据转化为流畅的自然语言
|
||||
- **情感表达**:根据上下文和用户情感状态,调整输出的语气和情感色彩
|
||||
- **多语言输出**:支持中、英、日、韩、法、德等多语言的表达
|
||||
- **风格适配**:根据应用场景(正式、友好、专业、通俗)适配语言风格
|
||||
- **输出格式化**:支持 Markdown、JSON、表格、列表等多种输出格式
|
||||
|
||||
## 架构设计
|
||||
|
||||
```mermaid
|
||||
graph TB
|
||||
Input["结构化输入<br/>(推理路径 + 记忆引用包)"] --> Decoder["结构化解码器"]
|
||||
|
||||
Decoder --> Intent["意图与情感分析器"]
|
||||
|
||||
Intent --> StyleRouter["风格路由器"]
|
||||
|
||||
StyleRouter -->|"正式"| Formal["正式表达分支"]
|
||||
StyleRouter -->|"友好"| Friendly["友好表达分支"]
|
||||
StyleRouter -->|"专业"| Professional["专业表达分支"]
|
||||
StyleRouter -->|"通俗"| Simple["通俗表达分支"]
|
||||
|
||||
Formal --> Generator["语言生成器<br/>Causal LM"]
|
||||
Friendly --> Generator
|
||||
Professional --> Generator
|
||||
Simple --> Generator
|
||||
|
||||
Generator --> Format["格式处理器"]
|
||||
Format --> Output["自然语言输出"]
|
||||
|
||||
subgraph Controls ["控制组件"]
|
||||
LangCtrl["语言控制<br/>(LangID)"]
|
||||
ToneCtrl["语气控制<br/>(Prompt Tuning)"]
|
||||
FactCtrl["事实一致性检查<br/>(对照源引用包)"]
|
||||
end
|
||||
|
||||
Generator -.-> LangCtrl
|
||||
Generator -.-> ToneCtrl
|
||||
Generator -.-> FactCtrl
|
||||
|
||||
subgraph Training ["训练管线"]
|
||||
SFT["指令微调<br/>(SFT)"]
|
||||
RLHF["人类反馈强化学习<br/>(RLHF)"]
|
||||
MulAlign["多语言对齐<br/>(Cross-lingual Alignment)"]
|
||||
end
|
||||
|
||||
SFT --> RLHF
|
||||
RLHF --> MulAlign
|
||||
```
|
||||
|
||||
## 训练目标
|
||||
|
||||
### 目标 1:结构化信息到自然语言的转换
|
||||
|
||||
训练模型将结构化输入(JSON 格式的推理路径、知识图谱片段、逻辑链)转换为高质量的自然语言。
|
||||
|
||||
- **信息保真度**:输出内容与输入结构化信息的一致性 ≥ 95%
|
||||
- **完整度**:输入中的关键信息点 100% 体现在输出中
|
||||
- **简明度**:在不丢失信息的前提下,输出长度 ≤ 推理路径长度的 3 倍
|
||||
|
||||
### 目标 2:情感表达
|
||||
|
||||
训练模型根据用户情感状态和上下文,调节输出的情感色彩。
|
||||
|
||||
- **情感一致性**:输出情感与用户期望情感的匹配度 ≥ 85%
|
||||
- **情感粒度**:支持 8 种基本情感(喜、怒、哀、惧、惊、厌、盼、信)及其复合情感
|
||||
- **情感调节**:在信息传递准确的前提下,情感表达不影响事实信息
|
||||
|
||||
### 目标 3:多语言输出
|
||||
|
||||
训练模型在保持语义不变的前提下,输出多种语言。
|
||||
|
||||
- **支持语言**:中文、英语、日语、韩语、法语、德语、西班牙语、阿拉伯语
|
||||
- **翻译质量**:跨语言语义保留 BLEU ≥ 35,COMET ≥ 0.8
|
||||
- **语言切换**:支持单次输出中的语言切换(如中英混杂)
|
||||
|
||||
## 训练计划
|
||||
|
||||
### 阶段 1:指令微调(Supervised Fine-Tuning, SFT)
|
||||
|
||||
**目标**:使用高质量的"结构化输入 → 自然语言输出"配对数据,对基座模型进行指令微调。
|
||||
|
||||
#### 基座模型选择
|
||||
|
||||
| 模型 | 参数量 | 优势 | 适用场景 |
|
||||
|------|--------|------|---------|
|
||||
| Qwen2.5-7B 或同等 | 7B | 中文能力突出、推理效率高 | 主推模型 |
|
||||
| LLaMA-3.1-8B | 8B | 英文能力突出、生态完善 | 英文场景 |
|
||||
|
||||
#### 训练数据
|
||||
|
||||
1. **结构化→自然语言配对数据**
|
||||
|
||||
| 数据类型 | 输入 | 输出 | 规模 |
|
||||
|---------|------|------|------|
|
||||
| 推理路径转文字 | JSON 推理链 | 自然语言解释 | 100,000 |
|
||||
| 知识图谱转叙述 | 三元组集合 | 流畅段落 | 80,000 |
|
||||
| 记忆片段转回答 | 检索到的记忆 | 回答用户 | 120,000 |
|
||||
| 逻辑链路转报告 | 推理过程 | 分析报告 | 50,000 |
|
||||
|
||||
2. **数据生成流程**
|
||||
|
||||
```
|
||||
原始问题 → 调度 Core 生成结构化推理路径 → 人工标注员写出参考输出
|
||||
|
||||
结构化输入示例:
|
||||
{
|
||||
"task": "解释光合作用的过程",
|
||||
"reasoning_path": [
|
||||
{"step": 1, "content": "光合作用发生在叶绿体中", "source": "memory:biology/chapter_5"},
|
||||
{"step": 2, "content": "需要叶绿素、光、CO₂、H₂O", "source": "memory:biology/chapter_5"},
|
||||
{"step": 3, "content": "光反应阶段:光能→ATP+NADPH", "source": "logic:verified"},
|
||||
{"step": 4, "content": "暗反应阶段(Calvin循环):CO₂→葡萄糖", "source": "logic:verified"},
|
||||
{"step": 5, "conclusion": "光合作用将光能转化为化学能", "source": "reasoning:deduction"}
|
||||
],
|
||||
"language": "zh",
|
||||
"tone": "educational"
|
||||
}
|
||||
```
|
||||
|
||||
#### 训练配置
|
||||
|
||||
- **输入格式**:`<|struct|>{结构化信息}<|output|>`
|
||||
- **损失函数**:自回归语言建模(交叉熵)
|
||||
- **批大小**:128(梯度累积 8 步)
|
||||
- **优化器**:AdamW(β1=0.9, β2=0.95)
|
||||
- **学习率**:1e-5,余弦退火至 1e-6
|
||||
- **warmup**:500 steps
|
||||
- **权重衰减**:0.01
|
||||
- **梯度裁剪**:max_norm = 1.0
|
||||
- **训练轮数**:3 epochs(SFT 数据量充足,防止过拟合)
|
||||
- **LoRA 配置**(如使用全参微调资源不足):
|
||||
- r = 64, α = 128, dropout = 0.05
|
||||
- 目标模块:q_proj, k_proj, v_proj, o_proj, gate_proj
|
||||
|
||||
### 阶段 2:人类反馈强化学习(RLHF)
|
||||
|
||||
**目标**:通过人类偏好反馈,优化表达的自然度、流畅度和信息呈现方式的优劣。
|
||||
|
||||
#### 奖励模型训练
|
||||
|
||||
- **模型架构**:基于 SFT 模型,移除语言头,添加线性奖励头
|
||||
- **训练数据**:
|
||||
|
||||
| 来源 | 类型 | 规模 |
|
||||
|------|------|------|
|
||||
| 人工标注 | 对同一输入的不同输出进行偏好排序 | 50,000 对 |
|
||||
| 自动评估 | 使用 GPT-4/Claude 作为评估者 | 200,000 对 |
|
||||
| 红队测试 | 对抗样本的偏好标注 | 10,000 对 |
|
||||
|
||||
- **标注维度**:
|
||||
|
||||
| 维度 | 评分范围 | 说明 |
|
||||
|------|---------|------|
|
||||
| 信息准确度 | 1-5 | 与结构化输入的一致性 |
|
||||
| 自然度 | 1-5 | 读起来像人写的 |
|
||||
| 完整度 | 1-5 | 关键信息是否全部覆盖 |
|
||||
| 简洁度 | 1-5 | 在信息完整下是否简洁 |
|
||||
| 情感适配 | 1-5 | 语气是否符合作者期望 |
|
||||
|
||||
- **损失函数**:Bradley-Terry + 维度加权
|
||||
```
|
||||
L = -E[Σ w_d · log(σ(r_d_better - r_d_worse))]
|
||||
w = [0.4, 0.3, 0.15, 0.1, 0.05] # 各维度权重
|
||||
```
|
||||
|
||||
- **训练配置**:
|
||||
- 学习率:1e-5
|
||||
- 批大小:64
|
||||
- 训练轮数:3 epochs
|
||||
|
||||
#### PPO 训练
|
||||
|
||||
- **策略模型**:SFT 模型
|
||||
- **价值模型**:与策略模型共享基座 + 价值头
|
||||
- **KL 散度惩罚**:β = 0.04
|
||||
- **GAE λ**:0.95
|
||||
- **折扣因子 γ**:0.99
|
||||
- **学习率**:1e-6(策略),1e-5(价值)
|
||||
- **PPO clip**:ε = 0.2
|
||||
- **批大小**:256
|
||||
- **总 PPO 轮次**:200(每轮采样 1024 条)
|
||||
- **句子级奖励**:使用 PRM 对每句话评分,而非仅整段评分
|
||||
|
||||
### 阶段 3:多语言对齐训练
|
||||
|
||||
**目标**:扩展模型的多语言表达能力和跨语言一致性。
|
||||
|
||||
#### 训练数据
|
||||
|
||||
| 语言 | 对齐数据规模 | 来源 |
|
||||
|------|------------|------|
|
||||
| 中文 | 200,000 | 自建 + 翻译 |
|
||||
| 英语 | 200,000 | 自建 + 翻译 |
|
||||
| 日语 | 100,000 | 翻译 + 人工校对 |
|
||||
| 韩语 | 100,000 | 翻译 + 人工校对 |
|
||||
| 法语 | 100,000 | 翻译 + 人工校对 |
|
||||
| 德语 | 100,000 | 翻译 + 人工校对 |
|
||||
| 西班牙语 | 100,000 | 翻译 + 人工校对 |
|
||||
| 阿拉伯语 | 50,000 | 翻译 + 人工校对 |
|
||||
|
||||
#### 对齐方法
|
||||
|
||||
1. **平行语料监督学习**
|
||||
- 同一结构化输入对应多语言的 GT 输出
|
||||
- 训练模型在不同语言分支上输出语义一致的内容
|
||||
|
||||
2. **跨语言对比学习**
|
||||
- 正样本对:同一结构化输入的不同语言输出
|
||||
- 负样本对:不同结构化输入的同语言输出
|
||||
- 损失函数:InfoNCE,温度 τ = 0.07
|
||||
|
||||
3. **反向翻译一致性**
|
||||
- 模型输出 A 语言 → 翻译为 B 语言 → 模型输出从 A→B
|
||||
- 要求 A 语言输出和 B 语言输出语义一致
|
||||
- 一致性损失:余弦相似度(语义嵌入(输出_A), 语义嵌入(输出_B))
|
||||
|
||||
4. **语言自适应层**
|
||||
- 为每种语言添加可训练的 LayerNorm + 偏置(Adapter 风格)
|
||||
- 共享语言无关的参数 + 语言特定的适配层
|
||||
- 参数量:每种语言 +5M(极小开销)
|
||||
|
||||
#### 训练配置
|
||||
|
||||
- **阶段 3a(平行语料训练)**:3 epochs,LR=5e-6
|
||||
- **阶段 3b(对比学习)**:2 epochs,LR=3e-6
|
||||
- **阶段 3c(一致性训练)**:2 epochs,LR=3e-6
|
||||
- **总轮数**:7 epochs
|
||||
|
||||
### 阶段 4:事实一致性对齐
|
||||
|
||||
**目标**:确保 LLM 子网严格依据输入的结构化信息生成输出,不添加、不遗漏、不改动事实。
|
||||
|
||||
#### 训练方法
|
||||
|
||||
1. **负采样对抗训练**
|
||||
- 故意在结构化输入中植入与常见知识矛盾的信息
|
||||
- 如果模型依赖"固有知识"而非输入结构信息,则产生错误
|
||||
- 训练模型学会"忽略固有知识,只遵循输入"
|
||||
|
||||
2. **事实对比损失**
|
||||
- 在输出层添加事实一致性评分头
|
||||
- 计算输出中每个实体/关系与输入结构化信息的匹配度
|
||||
- 损失函数:Focal Loss(处理事实类不平衡)
|
||||
|
||||
3. **约束解码**
|
||||
- 推理阶段使用受限 Beam Search
|
||||
- 约束条件:输出必须包含输入中的所有关键信息点
|
||||
- 惩罚项:缺失信息点数量 × 0.1
|
||||
|
||||
#### 评估配置
|
||||
|
||||
- 测试集:5,000 条包含事实冲突的结构化输入
|
||||
- 期望行为:模型严格按输入生成,不引入外部知识
|
||||
- 目标值:事实一致性 ≥ 98%
|
||||
|
||||
## 评估指标
|
||||
|
||||
### 表达准确度
|
||||
|
||||
| 指标 | 定义 | 目标值 |
|
||||
|------|------|--------|
|
||||
| 信息保真度 | 输出与输入结构化信息的一致性 | ≥ 95% |
|
||||
| 实体准确率 | 输出中实体的正确率 | ≥ 98% |
|
||||
| 关系准确率 | 输出中关系描述的正确率 | ≥ 95% |
|
||||
| 事实幻觉率 | 输出来源非输入中信息的比例 | ≤ 2% |
|
||||
|
||||
### 自然度评分
|
||||
|
||||
| 指标 | 定义 | 目标值 |
|
||||
|------|------|--------|
|
||||
| 人工评分(5 分制) | 标注员对输出自然度的评分 | ≥ 4.2 |
|
||||
| GPT-4 评分(5 分制) | 大模型评估的自然度评分 | ≥ 4.0 |
|
||||
| Perplexity | 语言模型的困惑度 | ≤ 15 |
|
||||
| 平均句长标准差 | 句子长度的多样性指标 | ≥ 5 |
|
||||
|
||||
### 情感一致性
|
||||
|
||||
| 指标 | 定义 | 目标值 |
|
||||
|------|------|--------|
|
||||
| 情感匹配度 | 输出情感与目标情感的匹配度 | ≥ 85% |
|
||||
| 情感误判率 | 产生与目标相反情感的比率 | ≤ 3% |
|
||||
| 情感粒度 F1 | 复合情感识别的 F1 | ≥ 0.75 |
|
||||
|
||||
### 多语言能力
|
||||
|
||||
| 指标 | 定义 | 目标值 |
|
||||
|------|------|--------|
|
||||
| BLEU | 各语言的 BLEU 分数加权平均 | ≥ 35 |
|
||||
| COMET | 跨语言语义保留评分 | ≥ 0.80 |
|
||||
| 跨语言一致性 | 不同语言输出的语义相似度 | ≥ 0.90 |
|
||||
| 语言切换准确率 | 中英混杂场景的语言切换正确率 | ≥ 90% |
|
||||
|
||||
### 系统性能
|
||||
|
||||
| 指标 | 定义 | 目标值 |
|
||||
|------|------|--------|
|
||||
| 生成延迟(首 token) | 从输入到首个输出 token | ≤ 200ms |
|
||||
| 生成吞吐量 | tokens/second | ≥ 50 tokens/s |
|
||||
| 冷启动适应 | 新语言的 few-shot 适应所需样本 | ≤ 100 条 |
|
||||
| 输出长度控制 | 指定长度与实际长度的偏差 | ≤ ±20% |
|
||||
311
docs/logic-trace-subnet.md
Normal file
311
docs/logic-trace-subnet.md
Normal file
@ -0,0 +1,311 @@
|
||||
# 逻辑链路追踪神经网络(推理回路)
|
||||
|
||||
## 概述
|
||||
|
||||
逻辑链路追踪神经网络(Logic Trace Network, LTN)类比人脑的**推理回路**,是 NextAgent 的"思维引擎"。它负责对任务进行逻辑推理、验证推理路径的正确性,并在发现错误时执行自我修正。这是实现 **可解释 AI** 和 **可信推理** 的核心组件。
|
||||
|
||||
### 核心职责
|
||||
|
||||
- **逻辑验证**:对调度 Core 下达的任务进行逻辑一致性检查
|
||||
- **推理路径搜索**:探索多条可能的推理路径,选择最优解
|
||||
- **错误追溯**:当推理结果矛盾或错误时,定位错误节点
|
||||
- **路径重规划**:在错误节点处分支,重新规划推理路径
|
||||
- **自我修正**:从错误中学习,更新推理策略偏好
|
||||
|
||||
## 架构设计
|
||||
|
||||
```mermaid
|
||||
graph TB
|
||||
Input["输入:任务 + 记忆引用包"] --> Parser["推理任务解析器"]
|
||||
|
||||
Parser --> MCTS["蒙特卡洛树搜索"]
|
||||
|
||||
subgraph MCTS_Tree ["MCTS 推理树"]
|
||||
Root["根节点"]
|
||||
N1["推理节点 1"]
|
||||
N2["推理节点 2"]
|
||||
N3["推理节点 3"]
|
||||
N11["子节点 1.1"]
|
||||
N12["子节点 1.2"]
|
||||
Leaf["叶节点(结论)"]
|
||||
|
||||
Root --> N1
|
||||
Root --> N2
|
||||
Root --> N3
|
||||
N1 --> N11
|
||||
N1 --> N12
|
||||
N2 --> Leaf
|
||||
end
|
||||
|
||||
MCTS --> Selection["选择<br/>UCT 算法"]
|
||||
MCTS --> Expansion["扩展<br/>策略网络"]
|
||||
MCTS --> Simulation["模拟<br/>奖励预测"]
|
||||
MCTS --> Backprop["反向传播<br/>更新访问计数"]
|
||||
|
||||
Selection --> Validator["逻辑验证器"]
|
||||
Validator --> ErrorTrace["错误追踪器"]
|
||||
ErrorTrace --> Corrector["自我修正器"]
|
||||
|
||||
Corrector --> Replan["路径重规划"]
|
||||
Replan --> MCTS
|
||||
|
||||
Validator --> PathSelect["最优路径选择"]
|
||||
PathSelect --> Output["输出:验证后的推理路径"]
|
||||
|
||||
subgraph Learning ["训练组件"]
|
||||
PRM["过程奖励模型<br/>Process Reward Model"]
|
||||
RLHF_P["RLHF 训练<br/>(推理偏好)"]
|
||||
ErrorDS["错误案例数据集"]
|
||||
end
|
||||
|
||||
Validator -.-> PRM
|
||||
Corrector -.-> ErrorDS
|
||||
PathSelect -.-> RLHF_P
|
||||
```
|
||||
|
||||
## 训练目标
|
||||
|
||||
### 目标 1:逻辑验证
|
||||
|
||||
训练子网能够识别推理链中的逻辑错误,包括事实矛盾、步骤跳跃和循环依赖。
|
||||
|
||||
- **验证粒度**:逐步骤验证,而非仅验证最终结论
|
||||
- **错误类型覆盖**:≥ 10 种常见逻辑谬误(偷换概念、循环论证、错误归因等)
|
||||
- **验证速度**:每步推理 ≤ 10ms
|
||||
|
||||
### 目标 2:错误追溯与定位
|
||||
|
||||
当推理结果错误时,精确定位错误发生的步骤和原因。
|
||||
|
||||
- **定位精度**:Top-1 错误步骤准确率 ≥ 80%
|
||||
- **根因分析**:错误分类准确率 ≥ 85%
|
||||
- **回溯效率**:N 步推理的回溯复杂度 O(log N)
|
||||
|
||||
### 目标 3:路径重规划与自我修正
|
||||
|
||||
在错误步骤处分支,探索替代推理路径,实现自我修正。
|
||||
|
||||
- **修正成功率**:首次修正成功率 ≥ 70%
|
||||
- **修正轮次上限**:最多 3 轮修正后必须输出结果
|
||||
- **修正代价**:修正后的推理路径长度 ≤ 原始路径 × 1.5
|
||||
|
||||
## 训练计划
|
||||
|
||||
### 阶段 1:过程奖励模型(Process Reward Model, PRM)训练
|
||||
|
||||
**目标**:训练一个能够对推理中间步骤进行质量评分的模型,替代仅评估最终结果的传统方法。
|
||||
|
||||
#### 数据构建
|
||||
|
||||
1. **自动推理链生成**:使用 GPT-4 / Claude 对数学、逻辑、常识类问题生成多步推理链
|
||||
2. **人工标注**:标注员对推理链的每个步骤进行评分(-1: 错误, 0: 中性, 1: 正确)
|
||||
3. **数据规模**:200,000 条推理链,平均链长 8 步,总计 160 万标注步骤
|
||||
4. **数据覆盖**:
|
||||
|
||||
| 类别 | 占比 | 示例 |
|
||||
|------|------|------|
|
||||
| 数学推理 | 30% | GSM8K、MATH 题目 |
|
||||
| 逻辑推理 | 25% | 三段论、命题逻辑、谓词逻辑 |
|
||||
| 常识推理 | 20% | 物理常识、社会常识 |
|
||||
| 因果推理 | 15% | 因果推断、反事实推理 |
|
||||
| 代码推理 | 10% | 代码执行跟踪、bug 定位 |
|
||||
|
||||
#### 模型架构
|
||||
|
||||
- **基座模型**:基于 LLaMA-3.1-8B 或同等规模模型
|
||||
- **奖励头**:在每一层 Transformer 后添加线性层,输出步骤质量评分
|
||||
- **输入格式**:`[问题] [步骤1] [步骤2] ... [当前步骤]`
|
||||
- **输出**:当前步骤的奖励值(连续值,范围 [-1, 1])
|
||||
|
||||
#### 训练配置
|
||||
|
||||
- **损失函数**:排序损失(Pairwise Ranking Loss)
|
||||
```
|
||||
L = max(0, margin - (r_pos - r_neg))
|
||||
margin = 0.5
|
||||
```
|
||||
- **批大小**:64(每条含完整推理链)
|
||||
- **优化器**:AdamW(β1=0.9, β2=0.95)
|
||||
- **学习率**:1e-5,余弦退火
|
||||
- **权重衰减**:0.01
|
||||
- **训练轮数**:5 epochs(防止过拟合)
|
||||
- **验证集**:人工标注数据的 10% 作为验证
|
||||
|
||||
#### PRM 推理流程
|
||||
|
||||
```
|
||||
def evaluate_step(question, steps_so_far, next_step):
|
||||
# 1. 编码上下文
|
||||
context = tokenize(question, steps_so_far)
|
||||
|
||||
# 2. 逐层提取 hidden states
|
||||
hidden_states = model(context)
|
||||
|
||||
# 3. 奖励头预测
|
||||
reward = reward_head(hidden_states[-1])
|
||||
|
||||
# 4. 可选:+ 置信度校准
|
||||
confidence = calibrate(reward)
|
||||
|
||||
return reward, confidence
|
||||
```
|
||||
|
||||
### 阶段 2:蒙特卡洛树搜索(MCTS)推理训练
|
||||
|
||||
**目标**:在推理过程中使用 MCTS 探索多条路径,找到最优解决方案。
|
||||
|
||||
#### MCTS 四步流程
|
||||
|
||||
```mermaid
|
||||
graph LR
|
||||
S["1. 选择 (Select)"] --> E["2. 扩展 (Expand)"]
|
||||
E --> Sim["3. 模拟 (Simulate)"]
|
||||
Sim --> BP["4. 反向传播 (Backprop)"]
|
||||
BP --> S
|
||||
```
|
||||
|
||||
#### MCTS 组件设计
|
||||
|
||||
1. **选择(Selection)**
|
||||
- 算法:UCT(Upper Confidence Bound Applied to Trees)
|
||||
- 公式:`UCT = Q(s,a) + c · P(s,a) · sqrt(N_parent / (1 + N_child))`
|
||||
- 探索系数 c:1.5(可通过贝叶斯优化调参)
|
||||
- 剪枝:当节点 UCT 值低于阈值时不再扩展
|
||||
|
||||
2. **扩展(Expansion)**
|
||||
- 策略网络:轻量级 Transformer(6 层),预测下一步推理方向
|
||||
- 候选动作数:top-K = 5
|
||||
- 动作空间:推理方向编码(演绎、归纳、溯因、类比、分解)
|
||||
|
||||
3. **模拟(Simulation)**
|
||||
- 使用 PRM 对节点评分作为奖励信号
|
||||
- 模拟深度:最大 20 步
|
||||
- 终止条件:得出确定性结论 或 达到步数上限
|
||||
- 快速回滚:当奖励值骤降时提前终止
|
||||
|
||||
4. **反向传播(Backpropagation)**
|
||||
- 更新路径上所有节点的 Q 值和访问计数
|
||||
- 折扣因子 γ:0.9(越远的节点贡献越小)
|
||||
- 更新公式:`Q_new = Q_old + α · (G - Q_old)`,其中 α = 1/N
|
||||
|
||||
#### 训练配置
|
||||
|
||||
- **模拟次数**:每轮推理 50 次 MCTS 模拟
|
||||
- **温度参数**:
|
||||
- 训练阶段:τ = 1.0(充分探索)
|
||||
- 推理阶段:τ → 0(选择最优路径)
|
||||
- **批处理大小**:并行搜索 16 棵推理树
|
||||
- **策略网络训练**:使用 MCTS 访问计数作为软标签
|
||||
- 损失函数:KL 散度(策略网络输出 || MCTS 访问分布)
|
||||
- 学习率:1e-4
|
||||
|
||||
### 阶段 3:强化学习(RLHF + 过程奖励)训练推理偏好
|
||||
|
||||
**目标**:通过人类反馈强化学习,优化推理路径选择的偏好。
|
||||
|
||||
#### 训练流程
|
||||
|
||||
```
|
||||
1. 策略模型(要训练的推理模型)生成多条推理路径
|
||||
2. PRM 对每条路径的每一步评分
|
||||
3. 人类标注员对比不同路径,给出偏好标签
|
||||
4. 训练奖励模型拟合人类偏好
|
||||
5. PPO 算法优化策略模型
|
||||
```
|
||||
|
||||
#### 奖励模型训练
|
||||
|
||||
- **输入**:完整的推理链(含每一步)
|
||||
- **输出**:标量奖励值
|
||||
- **模型架构**:与 PRM 共享基座,但奖励头为单标量输出
|
||||
- **损失函数**:Bradley-Terry 偏好模型
|
||||
```
|
||||
L = -E[log(σ(r_better - r_worse))]
|
||||
```
|
||||
- **数据**:50,000 对人类偏好对比对
|
||||
|
||||
#### PPO 训练配置
|
||||
|
||||
- **策略模型**:推理路径生成模型(基于 LLaMA 架构)
|
||||
- **价值模型**:与策略模型共享部分参数
|
||||
- **KL 散度惩罚**:β = 0.04(防止策略偏离基座过远)
|
||||
- **GAE λ**:0.95
|
||||
- **折扣因子 γ**:0.99
|
||||
- **学习率**:1e-6(策略),1e-5(价值)
|
||||
- **PPO clip**:ε = 0.2
|
||||
- **批大小**:512
|
||||
- **训练轮数**:3 epochs 每个 PPO 轮次
|
||||
- **总 PPO 轮次**:100
|
||||
|
||||
### 阶段 4:错误案例数据集与针对性训练
|
||||
|
||||
**目标**:构建高质量的错误推理案例数据集,针对性训练错误检测与修正能力。
|
||||
|
||||
#### 数据集构建
|
||||
|
||||
| 来源 | 方法 | 规模 |
|
||||
|------|------|------|
|
||||
| 模型自生成 | 奖励模型筛选低分路径 | 500,000 |
|
||||
| 人工构造 | 标注人员植入特定错误类型 | 50,000 |
|
||||
| 对抗生成 | 使用 Red-Teaming 方法生成困难错误 | 20,000 |
|
||||
| 真实对话 | 从生产环境收集失败案例 | 100,000 |
|
||||
|
||||
#### 错误类型覆盖
|
||||
|
||||
1. 事实性错误(Factual Error)
|
||||
2. 逻辑跳跃(Logic Leap)
|
||||
3. 循环论证(Circular Reasoning)
|
||||
4. 假两难推理(False Dilemma)
|
||||
5. 错误归因(False Attribution)
|
||||
6. 以偏概全(Hasty Generalization)
|
||||
7. 偷换概念(Equivocation)
|
||||
8. 诉诸权威(Appeal to Authority)
|
||||
9. 诉诸情感(Appeal to Emotion)
|
||||
10. 因果倒置(Reverse Causality)
|
||||
|
||||
#### 针对性训练
|
||||
|
||||
- **多任务学习**:同时优化错误检测 + 错误定位 + 修正生成
|
||||
- **数据增强**:对正确推理链随机注入错误,生成训练样本
|
||||
- **课程学习**:从简单错误(事实错误)到复杂错误(循环论证)渐进训练
|
||||
- **训练轮数**:30 epochs
|
||||
- **早停**:验证集 F1 连续 5 轮不提升则停止
|
||||
|
||||
## 评估指标
|
||||
|
||||
### 推理准确率
|
||||
|
||||
| 指标 | 定义 | 目标值 |
|
||||
|------|------|--------|
|
||||
| 最终答案准确率 | 推理结论的总体正确率 | ≥ 85% |
|
||||
| 步骤准确率 | 推理链中每步的正确率 | ≥ 90% |
|
||||
| 推理路径一致性 | 相同输入多次推理的结论一致性 | ≥ 95% |
|
||||
| 对抗鲁棒性 | 面对对抗性输入仍保持正确 | ≥ 75% |
|
||||
|
||||
### 自我修正
|
||||
|
||||
| 指标 | 定义 | 目标值 |
|
||||
|------|------|--------|
|
||||
| 错误检测率 | 错误推理被正确标记的比例 | ≥ 90% |
|
||||
| 修正成功率 | 首次修正即得到正确结果 | ≥ 70% |
|
||||
| 修正效率 | 修正路径 / 原路径长度比 | ≤ 1.5 |
|
||||
| 过修正率 | 原本正确被错误修改的比例 | ≤ 5% |
|
||||
| 冗余修正率 | 不必要的额外修正步骤比例 | ≤ 10% |
|
||||
|
||||
### 错误定位
|
||||
|
||||
| 指标 | 定义 | 目标值 |
|
||||
|------|------|--------|
|
||||
| Top-1 定位准确率 | 错误步骤的首位命中率 | ≥ 80% |
|
||||
| 根因分类准确率 | 错误类型判别的准确率 | ≥ 85% |
|
||||
| 定位粒度 | 能定位到句子/公式级别 | 句子级 |
|
||||
| 假阳性率 | 正确步骤被误判为错误的比率 | ≤ 3% |
|
||||
|
||||
### 系统性能
|
||||
|
||||
| 指标 | 定义 | 目标值 |
|
||||
|------|------|--------|
|
||||
| 推理延迟 | 从输入到输出的端到端延迟 | ≤ 500ms |
|
||||
| MCTS 扩展数 | 平均每次推理扩展的节点数 | ≤ 200 |
|
||||
| 内存占用 | 推理过程中的峰值内存 | ≤ 4GB |
|
||||
| 修正收敛 | 平均修正轮数 | ≤ 1.8 |
|
||||
234
docs/memory-subnet.md
Normal file
234
docs/memory-subnet.md
Normal file
@ -0,0 +1,234 @@
|
||||
# 记忆子网(海马体与皮层)
|
||||
|
||||
## 概述
|
||||
|
||||
记忆子网类比人脑的**海马体与大脑皮层**,负责长期记忆的存储、索引和检索。与传统向量数据库不同,记忆子网是一个**可训练的学习系统**,能够自主构建知识关联、更新记忆权重,并支持情景记忆的时序追溯。
|
||||
|
||||
### 核心职责
|
||||
|
||||
- **长期记忆存储**:将压缩引用包持久化存储于冷区,构建可检索的记忆库
|
||||
- **情景记忆索引**:记录交互的时间戳、上下文和情感标签,支持时序回溯
|
||||
- **知识图谱构建**:从记忆片段中自动提取实体与关系,构建动态知识图谱
|
||||
- **关联检索**:根据当前任务上下文,检索最相关的历史记忆片段
|
||||
|
||||
## 架构设计
|
||||
|
||||
```mermaid
|
||||
graph TB
|
||||
Input["输入引用包"] --> Router["记忆路由器"]
|
||||
|
||||
Router -->|"存储"| Store["记忆存储管线"]
|
||||
Router -->|"检索"| Retrieve["记忆检索管线"]
|
||||
|
||||
Store --> Encoder["记忆编码器<br/>MANN"]
|
||||
Encoder --> Graph["知识图谱更新<br/>GNN"]
|
||||
Graph --> Cold["冷区持久化"]
|
||||
|
||||
Retrieve --> Query["查询编码器"]
|
||||
Query --> Index["倒排索引搜索"]
|
||||
Index --> Rerank["重排序器"]
|
||||
Rerank --> Output["记忆引用包输出"]
|
||||
|
||||
subgraph Storage ["存储架构"]
|
||||
Cold
|
||||
Cache["热区缓存<br/>LRU"]
|
||||
IndexStore["索引存储<br/>HNSW"]
|
||||
end
|
||||
|
||||
Cache --> IndexStore
|
||||
IndexStore --> Cold
|
||||
|
||||
subgraph Learning ["学习模块"]
|
||||
MANN["Memory-Augmented<br/>Neural Networks"]
|
||||
GNN["Graph Neural<br/>Networks"]
|
||||
Consolidation["记忆巩固<br/>(sleep phase)"]
|
||||
end
|
||||
|
||||
Encoder -.-> MANN
|
||||
Graph -.-> GNN
|
||||
Cold -.-> Consolidation
|
||||
```
|
||||
|
||||
## 训练目标
|
||||
|
||||
### 目标 1:长期记忆存储与检索
|
||||
|
||||
训练记忆子网能够高效存储大量历史交互记录,并在需要时准确检索。
|
||||
|
||||
- **存储容量**:支持 ≥ 10⁸ 条记忆片段
|
||||
- **写入延迟**:≤ 10ms/条
|
||||
- **检索延迟**:p99 ≤ 50ms
|
||||
- **检索准确率**:Top-1 ≥ 90%,Top-5 ≥ 98%
|
||||
|
||||
### 目标 2:情景记忆索引
|
||||
|
||||
对每条记忆附加时间戳、上下文标签、情感值,支持按时间和场景检索。
|
||||
|
||||
- 时间范围查询:任意时间窗口的回忆准确率 ≥ 85%
|
||||
- 情景聚类:同场景记忆的聚类纯度 ≥ 0.8
|
||||
- 遗忘曲线模拟:模拟人脑 Ebbinghaus 遗忘曲线,重塑低频记忆
|
||||
|
||||
### 目标 3:知识图谱构建
|
||||
|
||||
从记忆片段中自动抽取实体和关系,构建可查询的知识图谱。
|
||||
|
||||
- 实体抽取 F1 ≥ 85%(基于预训练 NER 模型)
|
||||
- 关系抽取准确率 ≥ 75%
|
||||
- 图谱密度:≥ 5 条边/节点
|
||||
- 推理路径长度:支持最多 5 跳的关系推理
|
||||
|
||||
## 训练计划
|
||||
|
||||
### 阶段 1:Memory-Augmented Neural Networks(MANN)预训练
|
||||
|
||||
**目标**:训练记忆增强神经网络,使其具备快速读写外部记忆的能力。
|
||||
|
||||
- **模型架构**:基于 Differentiable Neural Computer(DNC)改进
|
||||
- 控制器:LSTM,隐藏层维度 512
|
||||
- 外部记忆矩阵:N × M = 256 × 128
|
||||
- 读写头:4 个并行读写头
|
||||
- 记忆注意力:基于内容寻址 + 位置寻址的混合机制
|
||||
- 时间链路记录:记录记忆写入的时序顺序
|
||||
|
||||
- **训练数据**:
|
||||
- 合成记忆任务:Copy、Repeat Copy、Associative Recall(Graves et al., 2016)
|
||||
- 真实对话数据:MultiWOZ、DSTC 系列对话数据集
|
||||
- 时序序列:WikiText-103(分段记忆)
|
||||
|
||||
- **损失函数**:
|
||||
- 主损失:交叉熵损失(任务预测)
|
||||
- 记忆使用惩罚:鼓励稀疏记忆访问
|
||||
- 记忆冲突惩罚:避免写入冲突
|
||||
- **优化器**:Adam(β1=0.9, β2=0.999)
|
||||
- **学习率**:1e-4,含 warmup 5000 steps
|
||||
- **梯度裁剪**:max_norm = 10
|
||||
- **训练轮数**:300 epochs
|
||||
|
||||
#### DNC 控制器更新规则
|
||||
|
||||
```
|
||||
# 读取
|
||||
r_t = Σ_i w_t^r(i) · M_t(i) # 按读取权重加权记忆
|
||||
|
||||
# 写入
|
||||
M_t(i) = M_{t-1}(i) ⊙ (1 - w_t^w(i) · e_t) + w_t^w(i) · a_t # 擦除后写入
|
||||
|
||||
# 记忆保持
|
||||
w_t^r, w_t^w = attend(q_t, M_{t-1}) # 基于查询的注意力
|
||||
```
|
||||
|
||||
### 阶段 2:图神经网络(GNN)知识关联训练
|
||||
|
||||
**目标**:构建和更新知识图谱,发现记忆间的隐式关联。
|
||||
|
||||
- **模型架构**:Relational Graph Convolutional Networks(R-GCN)
|
||||
- 层数:3 层 GCN
|
||||
- 隐藏维度:256
|
||||
- 关系类型数:50 种预设关系 + 动态关系发现
|
||||
- 聚合函数:均值聚合(mean aggregator)
|
||||
- 自注意力:GAT(Graph Attention Network)层提升关联权重
|
||||
|
||||
- **训练任务**:
|
||||
1. **链接预测**:预测实体间是否存在某种关系
|
||||
2. **实体分类**:预测实体的类别
|
||||
3. **关系分类**:预测两个实体间的关系类型
|
||||
4. **子图匹配**:识别与当前上下文最匹配的子图
|
||||
|
||||
- **训练数据**:
|
||||
- 通用知识图谱:Wikidata 子集、ConceptNet
|
||||
- 自构建图谱:从对话数据中自动抽取的关系三元组
|
||||
- 时序图谱:Temporal Knowledge Graph(事件时序关联)
|
||||
|
||||
- **损失函数**:
|
||||
- 链接预测:二元交叉熵 + 负采样(1:10 正负比)
|
||||
- 实体/关系分类:交叉熵
|
||||
- 正则项:L2 权重衰减(5e-4)
|
||||
- **优化器**:AdamW
|
||||
- **学习率**:5e-5,线性衰减
|
||||
- **训练轮数**:100 epochs
|
||||
|
||||
### 阶段 3:引用-拉取训练策略
|
||||
|
||||
**目标**:训练子网学习何时生成引用包、何时拉取完整数据,在带宽与信息量间找到平衡。
|
||||
|
||||
#### 训练框架
|
||||
|
||||
```
|
||||
环境:模拟多轮对话任务
|
||||
智能体:NextAgent(含记忆子网)
|
||||
奖励信号:
|
||||
+1: 正确使用了历史记忆
|
||||
+0.5: 引用包命中,无需完整拉取
|
||||
-0.5: 不必要的完整拉取(浪费带宽)
|
||||
-1: 遗漏了关键记忆
|
||||
-2: 检索到错误记忆导致错误输出
|
||||
```
|
||||
|
||||
#### 训练步骤
|
||||
|
||||
1. **行为克隆(Behavior Cloning)预热**
|
||||
- 使用专家轨迹数据(人工标注的"正确引用/拉取"决策)
|
||||
- 监督学习 10 epochs,初始化策略网络
|
||||
|
||||
2. **强化学习训练**
|
||||
- 算法:PPO(Proximal Policy Optimization)
|
||||
- Actor 网络:2 层 MLP(512 → 256 → 2 动作)
|
||||
- Critic 网络:2 层 MLP(512 → 256 → 1 值)
|
||||
- 动作空间:[引用(REFERENCE), 拉取(FETCH)]
|
||||
- 折扣因子 γ:0.95
|
||||
- GAE λ:0.95
|
||||
- clip 系数 ε:0.2
|
||||
- 训练轮数:1000 episodes
|
||||
|
||||
3. **记忆巩固阶段(Memory Consolidation)**
|
||||
- 模拟"睡眠"过程:定期重放低频记忆,防止遗忘
|
||||
- 使用 Experience Replay 从冷区采样
|
||||
- 记忆重加权:根据访问频率动态调整记忆强度
|
||||
|
||||
### 阶段 4:端到端联合训练
|
||||
|
||||
**目标**:将 MANN、GNN 和引用-拉取策略联合微调。
|
||||
|
||||
- 联合损失:L = L_MANN + λ₁·L_GNN + λ₂·L_RL
|
||||
- λ₁ = 0.3, λ₂ = 0.5
|
||||
- 冻结策略网络的初期 10 epochs,后全部放开
|
||||
- 交替训练:每 5 个 batch 的记忆检索 → 1 个 batch 的图谱更新
|
||||
- 总训练轮数:50 epochs
|
||||
|
||||
## 评估指标
|
||||
|
||||
### 记忆检索
|
||||
|
||||
| 指标 | 定义 | 目标值 |
|
||||
|------|------|--------|
|
||||
| Top-1 准确率 | 首条检索结果相关 | ≥ 90% |
|
||||
| Top-5 召回率 | 前五条中包含相关记忆 | ≥ 98% |
|
||||
| 平均倒数排名(MRR) | 相关记忆的排名倒数均值 | ≥ 0.92 |
|
||||
| 归一化折损累计增益(NDCG@10) | 排序质量 | ≥ 0.85 |
|
||||
|
||||
### 关联发现
|
||||
|
||||
| 指标 | 定义 | 目标值 |
|
||||
|------|------|--------|
|
||||
| 链接预测 Hits@10 | 图谱补全准确率 | ≥ 75% |
|
||||
| 关联发现 F1 | 新关联预测的精确率与召回率调和均值 | ≥ 0.7 |
|
||||
| 时序一致性 | 时序关系推理准确率 | ≥ 80% |
|
||||
| 聚类纯度 | 同主题记忆聚类纯度 | ≥ 0.85 |
|
||||
|
||||
### 系统性能
|
||||
|
||||
| 指标 | 定义 | 目标值 |
|
||||
|------|------|--------|
|
||||
| 写入延迟 | 单条记忆写入时间 | ≤ 10ms |
|
||||
| 检索延迟 p50 | 中位数检索响应时间 | ≤ 20ms |
|
||||
| 检索延迟 p99 | 99 分位检索响应时间 | ≤ 50ms |
|
||||
| 存储密度 | 每条记忆平均存储开销 | ≤ 1KB |
|
||||
| 有效压缩率 | 原始数据大小 / 引用包大小 | ≥ 10× |
|
||||
|
||||
### 遗忘曲线
|
||||
|
||||
| 指标 | 定义 | 目标值 |
|
||||
|------|------|--------|
|
||||
| 短期遗忘率 | 24h 后同场景记忆召回率 | ≥ 90% |
|
||||
| 长期遗忘率 | 30 天后同场景记忆召回率 | ≥ 70% |
|
||||
| 干扰抵抗 | 相似记忆插入后的检索准确率变化 | ≤ 5% 下降 |
|
||||
173
docs/routing-compression-subnet.md
Normal file
173
docs/routing-compression-subnet.md
Normal file
@ -0,0 +1,173 @@
|
||||
# 路由与压缩子网(感觉中枢)
|
||||
|
||||
## 概述
|
||||
|
||||
路由与压缩子网类比人脑的**感觉中枢**,负责将外部的多模态输入(文本、图像、音频等)转化为结构化的内部表示。它是 NextAgent 的**入口层**,所有输入数据必须经过此子网处理才能进入后续流程。
|
||||
|
||||
### 核心职责
|
||||
|
||||
- **多模态特征提取**:将不同模态的原始数据统一为向量表示
|
||||
- **信息压缩**:在保留语义的前提下最大化压缩率,降低存储与传输成本
|
||||
- **引用包生成**:将压缩后的特征打包为标准引用包(RefPack),供调度 Core 分发
|
||||
- **输入路由**:根据输入类型将数据分发到对应的特征提取通道
|
||||
|
||||
## 架构设计
|
||||
|
||||
```mermaid
|
||||
graph TB
|
||||
Input["多模态输入"] --> Router["输入路由器"]
|
||||
|
||||
Router -->|"文本"| TextEnc["文本编码器<br/>BERT/RoBERTa"]
|
||||
Router -->|"图像"| ImageEnc["图像编码器<br/>ViT/ResNet"]
|
||||
Router -->|"音频"| AudioEnc["音频编码器<br/>Wav2Vec 2.0"]
|
||||
Router -->|"视频"| VideoEnc["视频编码器<br/>VideoMAE"]
|
||||
|
||||
TextEnc --> Merger["特征融合器"]
|
||||
ImageEnc --> Merger
|
||||
AudioEnc --> Merger
|
||||
VideoEnc --> Merger
|
||||
|
||||
Merger --> Compressor["压缩模块<br/>AutoEncoder"]
|
||||
Compressor --> RefPack["引用包生成器"]
|
||||
RefPack --> Output["引用包输出"]
|
||||
|
||||
subgraph Training ["训练组件"]
|
||||
SimCLR["对比学习<br/>SimCLR/MoCo"]
|
||||
KD["知识蒸馏"]
|
||||
AE["AutoEncoder<br/>训练"]
|
||||
end
|
||||
|
||||
TextEnc -.-> SimCLR
|
||||
ImageEnc -.-> SimCLR
|
||||
Merger -.-> KD
|
||||
Compressor -.-> AE
|
||||
```
|
||||
|
||||
## 训练目标
|
||||
|
||||
### 目标 1:多模态特征提取
|
||||
|
||||
训练各模态编码器,使其能够从原始输入中提取高质量的语义特征。
|
||||
|
||||
- **文本模态**:预训练语言模型(BERT-base / RoBERTa-base),输出 768 维向量
|
||||
- **图像模态**:视觉 Transformer(ViT-B/16),输出 768 维向量
|
||||
- **音频模态**:自监督语音模型(Wav2Vec 2.0 Base),输出 768 维向量
|
||||
- **视频模态**:视频掩码自编码器(VideoMAE Base),输出 768 维向量
|
||||
|
||||
### 目标 2:信息压缩
|
||||
|
||||
在保持重建质量的前提下,将特征维度压缩至原始大小的 10%-20%。
|
||||
|
||||
- 压缩率目标:≥ 5 倍(即 768 维 → ≤ 150 维)
|
||||
- 重建相似度:余弦相似度 ≥ 0.92
|
||||
- 推理速度:单次压缩 ≤ 5ms(GPU)
|
||||
|
||||
### 目标 3:引用包生成
|
||||
|
||||
将压缩特征包装为标准化的引用包,包含元数据、签名和冷区索引。
|
||||
|
||||
## 训练计划
|
||||
|
||||
### 阶段 1:对比学习预训练(SimCLR / MoCo)
|
||||
|
||||
**目标**:为各模态编码器学习通用的特征表示。
|
||||
|
||||
- **SimCLR**:用于文本和图像编码器的初始训练
|
||||
- 批大小:4096
|
||||
- 温度系数 τ:0.07
|
||||
- 投影头:2 层 MLP(2048 → 2048 → 128)
|
||||
- 损失函数:NT-Xent(归一化温度标度交叉熵损失)
|
||||
- 优化器:LARS(Layer-wise Adaptive Rate Scaling)
|
||||
- 学习率:0.3 × BatchSize / 256
|
||||
- 训练轮数:100 epochs
|
||||
|
||||
- **MoCo v3**:用于视频和音频编码器的训练
|
||||
- 动量系数 m:0.999
|
||||
- 队列大小:65536
|
||||
- 编码器更新:动量式(momentum encoder)
|
||||
- 损失函数:InfoNCE
|
||||
- 优化器:AdamW
|
||||
- 学习率:1.5e-4
|
||||
- 训练轮数:200 epochs
|
||||
|
||||
**数据集**:
|
||||
|
||||
| 模态 | 数据集 | 规模 |
|
||||
|------|--------|------|
|
||||
| 文本 | Wikipedia + BookCorpus | 16GB |
|
||||
| 图像 | ImageNet-1K + LAION-400M | 4 亿样本 |
|
||||
| 音频 | LibriSpeech + AudioSet | 5000 小时 |
|
||||
| 视频 | Kinetics-700 + HowTo100M | 70 万视频 |
|
||||
|
||||
### 阶段 2:知识蒸馏
|
||||
|
||||
**目标**:将大模型的丰富特征迁移到轻量编码器,减少推理成本。
|
||||
|
||||
- **教师模型**:CLIP ViT-L/14(文本+图像)、HuBERT-Large(音频)、InternVideo(视频)
|
||||
- **学生模型**:各模态专用编码器(参数量为教师模型的 1/10)
|
||||
- **蒸馏损失**:
|
||||
- 特征蒸馏:MSE(教师特征, 学生特征)
|
||||
- 关系蒸馏:基于互信息的对比蒸馏
|
||||
- 逻辑蒸馏:KL 散度(教师输出 || 学生输出)
|
||||
- **总损失**:L = α·L_feat + β·L_rel + γ·L_logit
|
||||
- α = 0.5, β = 0.3, γ = 0.2
|
||||
- **温度 T**:4.0(软化概率分布)
|
||||
- **训练轮数**:50 epochs
|
||||
|
||||
### 阶段 3:AutoEncoder 压缩训练
|
||||
|
||||
**目标**:训练压缩-解压缩的 AutoEncoder 结构。
|
||||
|
||||
- **编码器结构**:
|
||||
```
|
||||
Input (768) → Dense(512, ReLU) → BN → Dense(256, ReLU) → BN → Dense(128, Linear)
|
||||
```
|
||||
- **解码器结构**:
|
||||
```
|
||||
Latent (128) → Dense(256, ReLU) → BN → Dense(512, ReLU) → BN → Dense(768, Linear)
|
||||
```
|
||||
- **损失函数**:
|
||||
- 重建损失:MSE + 余弦相似度
|
||||
- 感知损失:基于预训练编码器的特征匹配
|
||||
- 对抗损失:附加判别器,提升重建质量
|
||||
- KL 散度正则项:β-VAE 风格
|
||||
- **优化器**:Adam(β1=0.9, β2=0.999)
|
||||
- **学习率**:1e-4,余弦退火调度
|
||||
- **训练轮数**:150 epochs
|
||||
- **压缩比搜索**:在 {2×, 3×, 5×, 8×, 10×} 中搜索最优压缩比
|
||||
|
||||
### 阶段 4:端到端联合微调
|
||||
|
||||
**目标**:将编码器、压缩器联合微调,优化跨模态对齐。
|
||||
|
||||
- 固定解码器参数
|
||||
- 引入跨模态对比损失:batch_size 内的跨模态负样本挖掘
|
||||
- 训练轮数:30 epochs(低学习率 5e-5)
|
||||
|
||||
## 评估指标
|
||||
|
||||
### 压缩效率
|
||||
|
||||
| 指标 | 定义 | 目标值 |
|
||||
|------|------|--------|
|
||||
| 压缩率 | 原始维度 / 压缩后维度 | ≥ 5× |
|
||||
| 压缩延迟 | 单次前向推理时间 | ≤ 5ms |
|
||||
| 吞吐量 | 每秒处理的样本数 | ≥ 1000 samples/s |
|
||||
|
||||
### 重建质量
|
||||
|
||||
| 指标 | 定义 | 目标值 |
|
||||
|------|------|--------|
|
||||
| MSE | 原始与重建的均方误差 | ≤ 0.01 |
|
||||
| 余弦相似度 | 原始与重建的余弦相似度 | ≥ 0.92 |
|
||||
| PSNR | 峰值信噪比(图像模态) | ≥ 30dB |
|
||||
| 感知距离 | LPIPS( Learned Perceptual Image Patch Similarity) | ≤ 0.05 |
|
||||
|
||||
### 检索与召回
|
||||
|
||||
| 指标 | 定义 | 目标值 |
|
||||
|------|------|--------|
|
||||
| Top-1 召回 | 压缩查询的最近邻检索准确率 | ≥ 85% |
|
||||
| Top-5 召回 | Top-5 召回率 | ≥ 95% |
|
||||
| 跨模态检索 | 文本→图像/图像→文本检索准确率 | ≥ 70% |
|
||||
| 反事实一致性 | 语义相近输入的重建一致性 | ≥ 90% |
|
||||
Reference in New Issue
Block a user