TITANS + MIRAS 混合架构

版本: v1.3 (Recommendation System Integration)
更新日期: 2026-01-27

概述

米塞斯行为引擎采用 TITANS + MIRAS 混合架构,结合:

  • TITANS: 神经长期记忆模块,支持测试时学习
  • MIRAS: 多尺度迭代检索增强系统
  • HOPE: 持续在线学习(惊讶度驱动)

该架构通过 LLM 生成的合成数据进行训练,实现高质量、低成本的模型优化。

v1.2 性能优化: MIRAS 预热机制使首次匹配时间从 55秒 降至 <1秒


架构图

┌─────────────────────────────────────────────────────────────────┐
│                     TITANS + MIRAS 混合架构                       │
├─────────────────────────────────────────────────────────────────┤
│                                                                 │
│   输入: 用户表达 + 画像                                          │
│          ↓                                                      │
│   ┌─────────────────────────────────────────────────┐          │
│   │              多尺度编码器 (MIRAS)                 │          │
│   │  ┌─────────┐  ┌─────────┐  ┌─────────┐         │          │
│   │  │  局部   │  │ 上下文  │  │  全局   │         │          │
│   │  │ (行为)  │  │ (场景)  │  │ (模式)  │         │          │
│   │  │  256d   │  │  384d   │  │  512d   │         │          │
│   │  └────┬────┘  └────┬────┘  └────┬────┘         │          │
│   │       └────────────┼────────────┘              │          │
│   │                    ↓                           │          │
│   │           迭代检索器 (3步)                       │          │
│   │                    ↓                           │          │
│   │              知识库检索                          │          │
│   └─────────────────────────────────────────────────┘          │
│                         ↓                                       │
│   ┌─────────────────────────────────────────────────┐          │
│   │              TITANS 记忆模块                     │          │
│   │  ┌─────────────────────────────────────────────┐│          │
│   │  │  记忆编码器 → 记忆库 → 记忆检索器           ││          │
│   │  │              (1024 slots)                   ││          │
│   │  └─────────────────────────────────────────────┘│          │
│   │                    ↓                            │          │
│   │              惊喜检测器                          │          │
│   │         (驱动测试时学习)                         │          │
│   └─────────────────────────────────────────────────┘          │
│                         ↓                                       │
│   ┌─────────────────────────────────────────────────┐          │
│   │              门控融合层                          │          │
│   │   gate = f(surprise_score)                     │          │
│   │   output = gate * TITANS + (1-gate) * MIRAS    │          │
│   └─────────────────────────────────────────────────┘          │
│                         ↓                                       │
│   输出: 行为分析 (不舒适→愿望→路径)                             │
│                                                                 │
└─────────────────────────────────────────────────────────────────┘

TITANS 模块

核心概念

TITANS (Test-Time Adaptation with Neural Long-term Memory) 是 Google Research 提出的架构,核心特点:

  1. 神经长期记忆: 将记忆存储在网络参数中,而非外部数据库
  2. 测试时学习: 在推理时根据"惊喜度"更新记忆
  3. 选择性存储: 只有超过阈值的新信息才会被记忆

实现细节

class TITANSMemoryModule:
    """
    记忆槽位: 1024 个
    记忆维度: 512
    
    核心组件:
    - MemoryEncoder: 输入 → 记忆向量
    - MemoryRetriever: 查询 → 相关记忆
    - NeuralMemoryGate: 控制写入/遗忘
    """
    
    def update_at_test_time(self, input, target, surprise_score):
        """
        测试时学习(TITANS核心)
        
        if surprise_score > threshold:
            # 惊喜度高 → 学习新知识
            update_related_memories()
            
            if surprise_score > 1.5 * threshold:
                # 非常惊喜 → 写入新记忆槽
                write_new_memory()
        """

惊喜检测器

class SurpriseDetector:
    """
    计算当前输入相对于记忆的"惊喜度"
    
    surprise = 1 - cosine_similarity(prediction, actual)
    
    高惊喜度: 模型预测错了 → 需要学习
    低惊喜度: 模型预测对了 → 无需更新
    """

MIRAS 模块

核心概念

MIRAS (Multi-scale Iterative Retrieval-Augmented System) 是为米塞斯引擎设计的检索增强系统:

  1. 多尺度表示: 局部(行为)、上下文(场景)、全局(生活模式)
  2. 迭代检索: 多步细化查询,逐步找到最相关知识
  3. 知识蒸馏: 从 LLM 蒸馏知识到本地模型

多尺度特征

尺度 维度 捕获内容 示例
局部 256 具体行为 "想换工作"、"买房"
上下文 384 场景信息 "职业发展"、"家庭决策"
全局 512 生活模式 "风险偏好"、"时间偏好"

迭代检索

class IterativeRetriever:
    """
    3步迭代检索:
    
    Step 1: 粗略检索 (top-100)
    Step 2: 更新查询,精细检索 (top-30)  
    Step 3: 再次更新,最终检索 (top-10)
    
    每步后通过查询更新网络改进查询向量
    """

混合融合策略

门控机制

def hybrid_forward(input, prev_memory):
    # TITANS: 长期记忆
    titans_repr = titans_memory(input)
    
    # MIRAS: 多尺度检索
    miras_repr = miras(input)
    
    # 计算惊喜度
    if prev_memory:
        surprise = surprise_detector(prev_memory, titans_repr)
    
    # 门控融合
    # 惊喜度高 → 更多依赖TITANS(学习新知识)
    # 惊喜度低 → 更多依赖MIRAS(检索已知知识)
    gate = fusion_gate(titans_repr, miras_repr)
    gate = gate * (0.5 + 0.5 * surprise)
    
    output = gate * titans_repr + (1-gate) * miras_repr

融合优势

场景 主导模块 原因
新用户首次交互 MIRAS 无历史记忆,依赖检索
用户说出意外信息 TITANS 高惊喜度,需要学习
常规咨询 混合 平衡记忆和检索
长期用户回访 TITANS 有丰富个人记忆

LLM 合成数据方案

可行性分析

✅ 完全可行,原因:

  1. 行业先例: 微软 Phi 系列模型大量使用 LLM 合成数据,效果优异
  2. 质量可控: 通过两阶段流程(低成本生成 + 高质量筛选)保证质量
  3. 成本低廉: DeepSeek/Qwen 生成成本极低,Claude 筛选成本可控
  4. 覆盖全面: 可自动生成覆盖全生命周期的场景

两阶段数据生成流程

┌─────────────────────────────────────────────────────────────────┐
│                      LLM 合成数据工厂                            │
├─────────────────────────────────────────────────────────────────┤
│                                                                 │
│   阶段1: 低成本批量生成                                          │
│   ┌─────────────────────────────────────────────────┐          │
│   │  DeepSeek-V3 ──┐                                │          │
│   │                ├──→ 原始样本 (N个)              │          │
│   │  Qwen3-235B ───┘                                │          │
│   │                                                 │          │
│   │  成本: ~$0.0003/样本                            │          │
│   └─────────────────────────────────────────────────┘          │
│                         ↓                                       │
│   阶段2: 高质量筛选                                              │
│   ┌─────────────────────────────────────────────────┐          │
│   │  Claude 4.5 Sonnet                              │          │
│   │                                                 │          │
│   │  评估维度:                                       │          │
│   │  - 理论契合度 (米塞斯行为学)                     │          │
│   │  - 深度洞察 (挖掘隐藏需求)                       │          │
│   │  - 个性化程度                                    │          │
│   │  - 因果链清晰度                                  │          │
│   │  - 实用性 (第一步可操作性)                       │          │
│   │  - 语言质量                                      │          │
│   │                                                 │          │
│   │  通过率: ~70-80%                                │          │
│   │  成本: ~$0.02/样本                              │          │
│   └─────────────────────────────────────────────────┘          │
│                         ↓                                       │
│   输出: 高质量训练数据 (TITANS+MIRAS格式)                        │
│                                                                 │
└─────────────────────────────────────────────────────────────────┘

成本估算

规模 生成样本 通过样本 生成成本 筛选成本 总成本
1,000 ~750 $0.30 $20 ~$20
10,000 ~7,500 $3 $200 ~$200
100,000 ~75,000 $30 $2,000 ~$2,000

数据格式

{
    "id": "syn_20260109_a1b2c3d4",
    "sequence": [
        {
            "stage": "uneasiness",
            "input": "最近工作压力很大...",
            "output": {
                "surface": "工作压力大",
                "hidden": ["担心被裁员", "能力焦虑"],
                "root_cause": "对未来的不确定感"
            },
            "memory_update": {
                "should_store": true,
                "surprise_expected": 0.6
            }
        },
        {
            "stage": "desires",
            "input": "...",
            "output": {
                "primary": "获得职业安全感",
                "means_ends_chain": [...]
            }
        },
        {
            "stage": "paths",
            "input": "...",
            "output": {
                "paths": [...]
            }
        }
    ],
    "multi_scale": {
        "local": {"action_type": "职业咨询", "urgency": 7},
        "context": {"domain": "career", "life_stage": "prime"},
        "global": {"time_preference": "delayed", "risk_tolerance": 0.4}
    },
    "persona_context": {...},
    "quality_score": 72
}

训练流程

命令行用法

# 完整流程(生成+训练)
python -m training.train_titans_miras --full --samples 1000

# 只生成数据
python -m training.train_titans_miras --generate-only --samples 500

# 只训练(使用已有数据)
python -m training.train_titans_miras --data path/to/data.json --epochs 20

# 指定LLM模型
python -m training.train_titans_miras --full \
    --generators "deepseek-v3,qwen3-235b" \
    --filter-model "claude-4.5-sonnet"

训练配置

HybridTrainingConfig(
    # 模型
    input_dim=768,
    memory_dim=512,
    num_memory_slots=1024,
    
    # MIRAS
    local_dim=256,
    context_dim=384,
    global_dim=512,
    num_retrieval_steps=3,
    
    # 训练
    batch_size=16,
    learning_rate=1e-4,
    num_epochs=20,
    
    # 损失权重
    memory_loss_weight=1.0,
    behavior_loss_weight=1.0,
    surprise_loss_weight=0.5
)

损失函数

Total Loss = w1 * BehaviorLoss      # 行为预测
           + w2 * SurpriseLoss      # 惊喜度预测
           + w3 * MemoryLoss        # 记忆重建
           + w4 * ConsistencyLoss   # 多尺度一致性
           + w5 * DistillLoss       # LLM知识蒸馏(可选)

推理集成

加载模型

from training.titans.miras_module import TITANSMIRASHybrid
import torch

# 加载
model = TITANSMIRASHybrid(input_dim=768)
checkpoint = torch.load("training/checkpoints/titans_miras_inference.pt")
model.load_state_dict(checkpoint["model_state_dict"])
model.eval()

# 推理
with torch.no_grad():
    output = model(input_embedding, prev_memory)
    
    behavior_scores = output["behavior_scores"]  # 行为分析分数
    surprise = output["surprise_score"]          # 惊喜度
    titans_repr = output["titans_repr"]          # 用于下次的记忆

与引擎集成

# src/core/engine.py

class MisesEngine:
    def __init__(self):
        # 加载TITANS+MIRAS
        self.hybrid_model = TITANSMIRASHybrid()
        self.hybrid_model.load_state_dict(...)
        
        # 用户记忆缓存
        self.user_memories = {}
    
    async def process(self, user_id, input_text):
        # 获取用户历史记忆
        prev_memory = self.user_memories.get(user_id)
        
        # 编码输入
        embedding = self.embed(input_text)
        
        # 混合模型推理
        output = self.hybrid_model(embedding, prev_memory)
        
        # 更新用户记忆
        self.user_memories[user_id] = output["titans_repr"]
        
        # 根据行为分数选择响应策略
        if output["surprise_score"] > 0.7:
            # 高惊喜度:用户说了意外的事,需要特殊处理
            ...

MIRAS 预热优化 (v1.2)

问题分析

MIRAS 匹配器首次加载需要 ~55秒,包括:

  • TITANS 记忆模块初始化
  • MoE(混合专家)模型加载
  • 嵌入模型初始化
  • 专家注册

解决方案

在服务启动时预热 MIRAS 匹配器:

# src/mcp/client.py
async def preload_models():
    # 预热 MIRAS 匹配器
    from src.knowledge.miras_matcher import get_miras_matcher
    matcher = get_miras_matcher()
    if matcher.enabled:
        # 进行一次空匹配来完全初始化模型
        _ = matcher.iterative_match("预热测试", user_id="preload", top_k=1)
        logger.info("✅ MIRAS 匹配器预热完成")

效果对比

指标 优化前 优化后 提升
MIRAS 首次匹配 55秒 <1秒 98%
专家路由响应 8-15秒 4-9秒 40-45%
超时概率 极低 -

性能指标

训练指标

指标 目标 说明
Total Loss < 0.5 总损失
Behavior Loss < 0.3 行为预测准确性
Surprise MAE < 0.15 惊喜度预测误差
通过率 > 70% 合成数据质量

推理指标 (v1.2 优化后)

指标 优化前 优化后 说明
MIRAS 匹配延迟 55s <1s 首次匹配
模型推理时间 100ms <50ms 已预热
记忆命中率 > 60% > 60% TITANS记忆检索
用户满意度 > 4.0/5 > 4.0/5 回应质量评分

与专家推荐系统集成 (v1.3 新增)

TITANS + MIRAS 架构已与专家推荐系统深度集成:

集成点

组件 集成方式 用途
TITANS 记忆 TITANSConversationMemory 用户行为历史、专家偏好
MIRAS 匹配 MIRASMatcher 多尺度专家匹配
HOPE 画像 HopeEnhancedMemory 用户需求画像

推荐引擎架构

┌─────────────────────────────────────────────────────────────────┐
│                    专家推荐引擎                                   │
├─────────────────────────────────────────────────────────────────┤
│                                                                 │
│  ┌─────────────┐  ┌─────────────┐  ┌─────────────┐             │
│  │ 意图分析    │  │ 协同过滤    │  │ 信任评分    │             │
│  │ (米塞斯)    │  │ (CF)       │  │ (Trust)    │             │
│  └──────┬──────┘  └──────┬──────┘  └──────┬──────┘             │
│         │                │                │                     │
│         └────────────────┼────────────────┘                     │
│                          ▼                                      │
│  ┌─────────────────────────────────────────────────────────┐   │
│  │              多维度加权融合                               │   │
│  │  意图匹配 35% + 信任度 25% + CF 20% + 偏好 15% + 新鲜 5% │   │
│  └─────────────────────────────────────────────────────────┘   │
│                          ▼                                      │
│  ┌─────────────────────────────────────────────────────────┐   │
│  │              探索与利用 (UCB/Thompson)                   │   │
│  │                                                         │   │
│  │  • 避免信息茧房                                          │   │
│  │  • 新专家曝光机会                                        │   │
│  │  • 多样性重排                                            │   │
│  └─────────────────────────────────────────────────────────┘   │
│                                                                 │
└─────────────────────────────────────────────────────────────────┘

相关模块

  • src/market/recommendation_engine.py - 推荐引擎
  • src/market/expert_trust_score.py - 专家信任评分
  • src/market/collaborative_filter.py - 协同过滤
  • src/market/exploration_strategy.py - 探索策略
  • src/market/realtime_feedback.py - 实时反馈处理
  • src/market/recommendation_explainer.py - 推荐解释

总结

TITANS + MIRAS 混合架构:

  1. TITANS 提供长期记忆和测试时学习能力
  2. MIRAS 提供多尺度理解和迭代检索能力
  3. LLM合成数据 提供低成本、高质量的训练素材
  4. 门控融合 根据场景动态平衡两个模块
  5. 推荐系统 提供智能专家匹配和个性化推荐 (v1.3 新增)

这种架构特别适合米塞斯行为引擎的需求:

  • 需要记住用户历史(TITANS)
  • 需要理解复杂场景(MIRAS多尺度)
  • 需要快速适应新信息(测试时学习)
  • 训练数据需要低成本获取(LLM合成)
  • 需要智能推荐专家(推荐引擎)