# LLM 子网(布洛卡区/表达核)
## 概述
LLM 子网类比人脑的**布洛卡区(Broca's Area)**——大脑中负责语言表达的关键区域。在 NextAgent 架构中,LLM 子网是**唯一与自然语言打交道的组件**,负责将子网间流转的结构化信息转换为人类可读的自然语言输出。
### 核心设计哲学
**知识存储与语言表达分离**:LLM 子网本身不存储事实知识,它只负责"表达"。所有事实知识来自记忆子网和推理子网的引用包。这一设计从根本上杜绝了 LLM 子网产生"幻觉"的可能性——它不"知道"任何事,它只"表达"收到的结构化信息。
### 核心职责
- **结构化→自然语言转换**:将推理路径、记忆片段等结构化数据转化为流畅的自然语言
- **情感表达**:根据上下文和用户情感状态,调整输出的语气和情感色彩
- **多语言输出**:支持中、英、日、韩、法、德等多语言的表达
- **风格适配**:根据应用场景(正式、友好、专业、通俗)适配语言风格
- **输出格式化**:支持 Markdown、JSON、表格、列表等多种输出格式
## 架构设计
```mermaid
graph TB
Input["结构化输入
(推理路径 + 记忆引用包)"] --> Decoder["结构化解码器"]
Decoder --> Intent["意图与情感分析器"]
Intent --> StyleRouter["风格路由器"]
StyleRouter -->|"正式"| Formal["正式表达分支"]
StyleRouter -->|"友好"| Friendly["友好表达分支"]
StyleRouter -->|"专业"| Professional["专业表达分支"]
StyleRouter -->|"通俗"| Simple["通俗表达分支"]
Formal --> Generator["语言生成器
Causal LM"]
Friendly --> Generator
Professional --> Generator
Simple --> Generator
Generator --> Format["格式处理器"]
Format --> Output["自然语言输出"]
subgraph Controls ["控制组件"]
LangCtrl["语言控制
(LangID)"]
ToneCtrl["语气控制
(Prompt Tuning)"]
FactCtrl["事实一致性检查
(对照源引用包)"]
end
Generator -.-> LangCtrl
Generator -.-> ToneCtrl
Generator -.-> FactCtrl
subgraph Training ["训练管线"]
SFT["指令微调
(SFT)"]
RLHF["人类反馈强化学习
(RLHF)"]
MulAlign["多语言对齐
(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% |