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