GRU 解决方案
GRU 解决方案
作者: WOOSUNG YOON
发布时间: 2025-12-04
竞赛排名: 23
概述
1. 损失函数:鲁棒性与平滑性

训练目标平衡了精确的轨迹追踪与物理上合理的运动。
1.1 鲁棒位置损失(Cauchy 损失)
现实世界的追踪数据包含噪声和异常值。标准均方误差(MSE)会对这些异常值过度惩罚,这可能会 destabilize 训练。
为了解决这个问题,我使用了 Cauchy 损失:
- 机制: 对于大误差,它呈对数增长而非二次方增长。
- 效果: 这有效地降低了异常值的权重,迫使模型专注于拟合大部分 realistic 轨迹,而不是追逐噪声。
1.2 弱速度正则化(随机核)
逐帧位置回归可能导致抖动、不自然的运动。
我不是强制严格的点对点速度匹配,而是采用 随机核平滑:
- 机制: 速度在与随机核卷积后计算误差。
- 效果: 这惩罚了整体运动趋势的差异,同时允许局部变化。它确保预测路径在物理上是平滑的,而不会受到过度约束。
2. 模型架构

核心模型是一个 时空 GRU,采用“由粗到细”的解码策略以确保长期稳定性。
2.1 时间编码器(骨干网络)
- 组件: 门控循环单元 (GRU)。
- 角色: 处理历史运动以生成上下文向量,总结球员运动和传球类型。
2.2 空间编码器(邻居注意力)
- 组件: 门控交叉注意力 (Gated Cross-Attention)。
- 角色: 捕捉与其他代理(接收者、防守者)的交互。
- 门控: 一个学习到的门动态调整邻居的影响——在相关时信任空间上下文(例如紧密覆盖),在添加噪声时忽略它。
2.3 由粗到细解码器
为了防止长期预测范围内的误差累积(漂移),模型分层预测轨迹:
- Level 0 (T/8): 预测低分辨率的“全局形状”。
- Levels 1–2 (T/4, T/2): 插值并细化中间点。
- Level 3 (T): 生成全分辨率残差。
这种分层方法确保模型在细化局部细节之前,致力于保持一致的全局轨迹。
3. 集成策略:遗传算法

为了最大化泛化能力,我使用 遗传算法 (GA) 来优化集成权重,而不是依赖简单的平均。
3.1 池生成
- 输入: 收集来自多个使用不同种子和超参数训练的基础模型的折外(OOF)预测。
3.2 通过 GA 优化
- 目标: 找到互补(误差无关)的模型子集。
- 过程:
- 初始化: 随机生成模型子集(“团队”)。
- 进化: 基于验证 RMSE 迭代选择表现最佳的子集。
- 变异/交叉: 组合并扰定子集以探索搜索空间。
3.3 最终混合
最终提交是 GA 识别的顶级表现子集的加权平均。这确保了集成平衡了多样性和准确性。
4. 结论
我学到了很多。谢谢。