日期: 2025-11-22 类型: 架构优化
原有模型设计过于简单,存在以下问题:
需要重新设计模型架构,参考其他MOBA AI(OpenAI Five、王者绝悟、AlphaStar)的经验。
input_channels 由buffer决定(当前3,未来帧叠加会变6/9)num_actions 由action_space决定讨论了三种方案:
关键洞察:”参数量要和整体模型对比,不能孤立看”
采用Dueling DQN分离状态价值和动作优势,提升训练稳定性。
文件: core/lightweight_dqn.py
主要变更:
架构细节(以full模式为例):
输入: C×540×960
├─ Conv1: C→64, stride=2, BN, ReLU
├─ Conv2: 64→128, stride=2, BN, ReLU
├─ Conv3: 128→256, stride=2, BN, ReLU
├─ Conv4: 256→512, stride=2, BN, ReLU
├─ Conv5: 512→512, stride=2, BN, ReLU
├─ Reduce: 512→128 (1×1 conv)
├─ Pool: (4,8) AdaptiveAvgPool
├─ Flatten
└─ Dueling Head: 512 hidden → num_actions
文件: config/config.py, config/agent.config.yaml
新增配置:
model:
mode: mini # 'mini'/'full'/'high'
移除配置:
input_channels - 移至buffer模块决定文件: core/trainer.py
主要变更:
input_channelsmodel_modemodel_{mode}.pth文件: data/training_buffer.py
新增属性:
self.input_channels = 3 # 当前RGB图像,未来帧叠加会更新
文件: docs/design/MODEL_DESIGN.md
内容:
model:
mode: mini # 模型规模: mini(快速测试), full(推荐), high(追求极致)
checkpoint:
resume_model: ./checkpoints/model_mini.pth # 与mode对应
training:
use_target_network: true # 使用目标网络,提升训练稳定性
target_update_epochs: 5 # 每5个epoch更新目标网络
samples_per_epoch: null # 每epoch样本数,null=使用所有buffer数据
| 模式 | 卷积层参数 | 全连接参数 | 总参数 | 卷积占比 |
|---|---|---|---|---|
| mini | ~1.2M | ~0.3M | ~1.5M | 80% |
| full | ~7M | ~2M | ~9M | 78% |
| high | ~24M | ~6M | ~30M | 80% |
更新测试配置 scripts/test_pipeline.py:
config_data = {
'model': {
'mode': 'mini' # 测试使用mini模式
}
}
MODEL_FILE = "test_model_mini.pth"
input_channels由数据格式决定num_actions由动作空间决定mode选择模型复杂度input_channels: 3 → 6(prev + current)core/lightweight_dqn.py - 模型实现core/trainer.py - 训练器更新data/training_buffer.py - Buffer更新config/config.py - 配置类更新config/agent.config.yaml - 配置文件docs/design/MODEL_DESIGN.md - 模型设计原理(新增)docs/design/ARCHITECTURE.md - 架构文档(更新)README.md - 项目简介(更新)scripts/test_pipeline.py - 测试脚本(更新)