aip-sci 0.1.0

Affective Interaction Programming - 情感交互编程
Documentation

AIP (Affective Interaction Programming)

情感交互编程——基于情绪数据模型的AI决策与生成式用户交互系统

License: MIT Rust


概述

AIP是一个将用户情绪作为AI决策者直接优化目标的创新框架。与传统推荐系统不同,AIP不推荐内容,而是生成交互逻辑本身——将用户特质与实时行为情绪信号映射到参数化的交互机制,包括节奏、强度与反馈动态。

核心理念

交互参数不仅仅是内容的传递机制,它们是强大的情感工具。AIP将用户情绪从"评价指标"转变为"可编程设计变量"。


核心组件

EDM (Emotion Data Model) - 情绪数据模型

从触屏动力学、按键熵与犹豫模式等行为信号推断用户的实时情绪状态。

输入:15维行为特征(10秒窗口)

特征ID 特征名 情绪关联
0 点击频率 唤醒↑
1 滑动速度 唤醒↑
2 多点触控比例 唤醒↑
3 设备倾斜标准差 唤醒↑
4 重试延迟 效价↓
5 暂停时长 效价↓
6 犹豫时间 效价↓
7 路径效率 掌控↑
8 取消率 掌控↓
9 完成率 掌控↑
10 平均压力 唤醒↑
11 压力标准差 唤醒↑
12 动作精度 掌控↑
13 平均反应时间 效价↓
14 反应时间标准差 效价↓

输出:三维情绪状态

pub struct EmotionState {
    pub valence: f32,    // 效价 [0, 1]
    pub arousal: f32,    // 唤醒 [0, 1]
    pub dominance: f32,  // 掌控感 [0, 1]
}

模型架构

输入 (15维特征 × 5步历史)
    ↓
1D卷积 (滤波器=32, 核=3)
    ↓
SE模块 (通道注意力)
    ↓
双向LSTM (64)
    ↓
自注意力层
    ↓
MLP (64→32→3)
    ↓
Sigmoid → [效价, 唤醒, 掌控感] ∈ [0,1]

性能目标

维度 Pearson r 目标 RMSE 目标
效价 ≥ 0.55 ≤ 0.18
唤醒 ≥ 0.60 ≤ 0.16
掌控感 ≥ 0.50 ≤ 0.20

Director - 交互策略网络

基于用户特质、环境状态和实时情绪向量,输出连续的交互参数以优化复合奖励。

状态空间 (23维)

类别 维度 描述
用户特质 8 年龄组、性别、自我报告风格、反应时间百分位等
环境状态 6 关卡、进度、资源、时间等
实时情绪 3 效价、唤醒、掌控感
情绪统计 6 过去30秒的均值和标准差

动作空间 (7维连续)

参数 范围 含义
intensity_factor [0.5, 2.0] 事件频率/密度的乘数
feedback_intensity [0.3, 1.5] 触觉/视觉反馈的强度
pace_speed [0.6, 1.8] 交互进程的速度
reward_scarcity [0.0, 1.0] 稀有奖励的概率
env_arousal [0.3, 1.0] 背景刺激水平
rhythm_modulation [0.8, 1.5] 音频反馈的节奏/步调
challenge_curve [-1.0, 1.0] 难度进展的陡峭程度

奖励函数

R = 0.4 · R_progress + 0.4 · R_emotion + 0.2 · R_retention

训练算法:PPO (Proximal Policy Optimization)

参数
学习率 3e-4
裁剪系数 0.2
GAE λ 0.95
熵系数 0.01
小批量大小 64

项目结构

aip/
├── Cargo.toml
├── src/
│   ├── lib.rs
│   ├── edm/                    # EDM模块
│   │   ├── core.rs             # 核心接口定义
│   │   ├── features.rs         # 特征工程
│   │   └── roguelite/          # Roguelite游戏实现
│   │       ├── core.rs         # 推理实现
│   │       └── training.rs     # 训练实现
│   ├── director/               # Director模块
│   │   ├── core.rs             # 核心接口定义
│   │   └── roguelite/          # Roguelite游戏实现
│   │       ├── core.rs         # 推理实现
│   │       └── training.rs     # 训练实现
│   ├── ffi/                    # FFI接口
│   └── utils/                  # 工具函数
├── tests/                      # 测试文件
├── docs/                       # 文档
│   ├── core.md                 # 核心技术架构
│   ├── roguelite.md            # Roguelite游戏方案
│   └── training_schemes.md     # 训练标记方案
└── papers/                     # 论文
    └── 001.md                  # 第一部分论文

Cargo Features

Feature 描述 依赖
edm EDM核心接口 -
edm_roguelite EDM Roguelite推理 edm
edm_roguelite_training EDM Roguelite训练 edm_roguelite
director Director核心接口 -
director_roguelite Director Roguelite推理 director, edm_roguelite
director_roguelite_training Director Roguelite训练 director_roguelite

快速开始

安装

[dependencies]
aip = { version = "0.1.0", features = ["edm_roguelite", "director_roguelite"] }

基础用法

use aip::edm::{EmotionDataModel, EmotionState};
use aip::director::{InteractionStrategy, InteractionState, InteractionParams};

// EDM推理
let edm = RogueliteEdm::load("models/edm_v1.safetensors")?;
let features = compute_behavior_features(&events);
let emotion = edm.infer(&features)?;

// Director决策
let director = RogueliteDirector::load("models/director_v1.safetensors")?;
let state = InteractionState {
    user_traits,
    env_state,
    emotion,
    emotion_stats,
};
let params = director.decide(&state)?;

// 应用交互参数
apply_intensity_factor(params.intensity_factor);
apply_feedback_intensity(params.feedback_intensity);

构建命令

# 基础编译
cargo build

# 完整编译 (所有features)
cargo build --all-features

# 全部测试
cargo test --all-features

# 文档生成
cargo doc --open

# 代码格式化
cargo fmt

# 静态检查
cargo clippy --all-features

应用场景:Roguelite游戏

AIP在Roguelite游戏环境中进行验证,游戏特点:

  • 2D俯视像素风格:4x像素放大,像素对齐渲染
  • 生成式地牢:程序化生成,Delaunay三角剖分 + MST连接
  • 移动端控制:虚拟摇杆 + 技能按钮,自动锁定
  • 实时情绪采集:15维行为特征,10秒窗口

游戏控制方案

┌─────────────────────────────────────────────────────────────────────┐
│  ┌─────────┐                                    ┌─────────────────┐│
│  │ HP: ████│                                    │ Level: 1-3      ││
│  │ MP: ██  │                                    │ Score: 12,450   ││
│  └─────────┘                                    └─────────────────┘│
│                                                                     │
│                    ┌─────────────────────┐                          │
│                    │    游戏画面区域      │                          │
│                    │    (玩家 + 敌人)     │                          │
│                    └─────────────────────┘                          │
│                                                                     │
│  ┌─────────┐  ┌─────────┐  ┌─────────┐    ┌─────┐  ┌─────┐        │
│  │ 技能1   │  │ 技能2   │  │ 技能3   │    │道具1│  │道具2│        │
│  └─────────┘  └─────────┘  └─────────┘    └─────┘  └─────┘        │
│                                                                     │
│  ┌───────────────┐                                                  │
│  │   虚拟摇杆     │  (左手控制移动)                                  │
│  └───────────────┘                                                  │
└─────────────────────────────────────────────────────────────────────┘

AIP参数对游戏的影响

参数 游戏影响
intensity_factor 敌人生成速率、伤害倍率
feedback_intensity 屏幕震动、音效音量
pace_speed 游戏节奏、事件触发频率
reward_scarcity 稀有道具掉落率
env_arousal 环境特效密度、背景音乐强度
rhythm_modulation 音乐节奏、心跳音效
challenge_curve 难度曲线斜率

训练方案

冷启动策略

新用户 ──→ 用户画像采集 ──→ 群体匹配 ──→ 初始策略分配
              │                │               │
              ↓                ↓               ↓
         静态特质         相似用户群        预训练模型
         (8维)            聚类中心          参数迁移

校准期 ──→ 行为数据采集 ──→ 在线学习 ──→ 个性化模型
(2分钟)      (10秒窗口)      (增量更新)    (用户专属)

实时训练架构

┌──────────────┐    ┌──────────────┐    ┌──────────────┐
│   客户端      │    │   边缘节点    │    │   云端服务器  │
│  (游戏端)     │───→│  (推理+缓存)  │───→│  (训练中心)   │
└──────────────┘    └──────────────┘    └──────────────┘
       │                   │                    │
       ↓                   ↓                    ↓
  行为数据采集         增量推理更新          批量模型训练
  特征计算             轨迹缓存              全局模型更新
  本地推理             快速响应              模型分发

标记方案

标注方式 成本 质量(Pearson r) 适用场景
纯人工SAM 0.90 金标准、小规模验证
LLM批量标注 0.70-0.80 大规模历史数据
LLM+人工复核 0.85 生产环境推荐
隐式行为推断 极低 0.60-0.70 实时补充标注

性能指标

指标 目标值
EDM推理延迟 < 5ms
Director推理延迟 < 5ms
EDM Pearson r (效价) ≥ 0.55
Director平均奖励 ≥ 0.7
模型更新成功率 ≥ 99%
情绪稳定性方差 ≤ 0.1

研究成果

初步仿真结果

  1. 情绪预测准确性:EDM与用户自我报告的效价/唤醒/掌控感达到交叉验证 Pearson r > 0.55
  2. 策略自发特化:不同用户群体收敛到性质迥异的交互风格
  3. 消融实验:移除情绪项会导致情绪波动性增加,而留存率并未提升

用户群体特化示例

群体 特征 典型参数
探索型 低唤醒偏好,慢节奏 intensity=0.73, pace=0.85
战斗型 高唤醒偏好,快节奏 intensity=1.42, pace=1.35
社交型 中等唤醒,高反馈 feedback=1.2, rhythm=1.1
挑战型 高掌控感,陡峭曲线 challenge=0.8, scarcity=0.7

依赖库

  • Candle: 模型推理和训练
  • ndarray: 数值计算
  • serde: 序列化/反序列化

文档


参考文献

  1. Barthet et al. (2024). Closing the Affective Loop via Experience-Driven Reinforcement Learning Designers.
  2. Yannakakis & Togelius (2011). Experience-driven procedural content generation.
  3. Mehrabian & Russell (1974). An approach to environmental psychology.
  4. Schulman et al. (2017). Proximal policy optimization algorithms.

许可证

MIT License


联系方式

张海龙
Email: hailongz@qq.com