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:
root
2026-06-01 08:55:27 +08:00
commit 398d35c50b
6 changed files with 1379 additions and 0 deletions

View 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
View 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
View 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
View 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% 下降 |

View 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% |