返回列表

19th Place Solution

683. NFL Big Data Bowl 2026 - Prediction | nfl-big-data-bowl-2026-prediction

开始: 2025-09-25 结束: 2025-12-03 运动员表现 数据算法赛
第 19 名解决方案 - ST-Transformer + TXP-CNN

第 19 名解决方案

作者: epsilon
发布日期: 2025-12-04
竞赛排名: 第 19 名

ST-Transformer + TXP-CNN, 高斯 NLL 损失

首先,非常感谢主办方组织了如此富有洞察力的比赛,也感谢 Kaggle 团队提供了出色的体验。恭喜所有获奖者!

这是我第一次认真参加 Kaggle 比赛,在这个过程中我学到了很多关于数据科学的知识。我的方法 heavily 依赖于关于行人轨迹预测的论文和之前的竞赛 writeups。希望这份总结能像社区帮助我一样,帮助其他入门级的 Kaggle 选手。

总结

我的解决方案包括用于编码的 ST-Transformer 和用于解码的 TXP-CNN。本竞赛的核心挑战是在最小化 RMSE 的同时处理未来轨迹的不确定性和多模态性质。为了解决这个问题,我专注于在损失函数中直接建模不确定性。

1. 置信度头 & 损失函数

我认为这是我最解决方案中最关键的部分。我假设未来轨迹分布遵循高斯分布,并在模型上附加了一个“置信度头 (Confidence Head)"来预测坐标旁边的方差 (σ^2)。模型使用高斯对数负似然 (NLL) 损失进行训练:

$$\mathcal{L} = \sum_i \left( \frac{(\hat{x}_i - x_i)^2}{2\hat{\sigma}_x^2} + \frac{(\hat{y}_i - y_i)^2}{2\hat{\sigma}_y^2} + \log \hat{\sigma}_x + \log \hat{\sigma}_y \right)$$

此方法灵感来自 LEAP 竞赛 的 writeups。

在我的实验中,这种方法优于 RMSE、拉普拉斯 NLL、带时间衰减的 Huber 以及其他多模态预测方法。

我将这一成功归因于模型动态编码不确定性的能力。通过自适应地估计每次预测的难度(为不确定的情况分配更高的 σ),这种机制充当了强大的正则化器,防止模型过拟合高度不确定的数据。

2. 模型架构

模型接受的输入形状为 (BATCH, NUM_PLAYERS, SEQ_LEN, FEATS_NUM),输出为 (BATCH, HORIZON, 4),其中 4 个输出是 (x, y, σ_x, σ_y)。

本竞赛的一个挑战性方面是,给定 play 中只有部分球员提供了地面真实 post-pass 轨迹,而不是所有人。

为了解决这个问题,我设计模型在每次推理时执行单代理预测。具体来说,我构建输入使得要预测的目标球员始终固定在 NUM_PLAYERS 维度的索引 0 处。模型接收所有周围球员的上下文,但经过训练仅输出第 0 个索引球员的未来轨迹。

Model Architecture

编码器:ST-Transformer

我的主编码器是一个时空 Transformer,在空间注意力和时间注意力之间交替。在时间注意力块中,我使用 CNN 而不是简单的线性层来更有效地捕捉局部时间依赖性。空间注意力机制结合了领域偏置,详见下一节。

注意力偏置

受用于行人预测的图神经网络 (GNN) 启发,我注入了基于领域知识的注意力偏置。

我添加了以下偏置:

  • 高碰撞风险 (Dutra et al. 2017, Computer graphics forum,Vol. 36. No. 2.)
  • 逆距离 (Mohamed et al. CVPR, 2020, pp. 14424-14432)
    在他们的实验中,他们比较了各种核函数——包括二次指数衰减和逆二次衰减——并证明简单的逆衰减 (1/d) 表现最好。我直接采用了这一发现。
  • 视野内的球员 (Zhang et al. Pattern Recognition 142 (2023) 109633 )
  • 队友球员
  • 对手球员

它们大多是为图神经网络提出的,但我将它们用作具有可学习强度的注意力偏置。
这允许模型软性地优先处理这些交互。

解码器:TXP-CNN

对于解码器,我使用了 TXP-CNN (Mohamed et al. CVPR, 2020, pp. 14424-14432)。
这种架构将时间维度视为通道,并在特征维度上执行卷积。虽然有些违反直觉,但我发现对于此特定任务,它的效果明显优于标准的 Transformer 解码器。

3. 训练策略

预处理:

  • 以传球者为中心的坐标:我将坐标系统标准化为相对于传球者。所有位置都重新计算,使传球者位于原点 (0, 0)。
  • 统一向左:我对齐了场地几何形状,使所有进攻 play 都向左攻击。这确保了模型的方向一致性。

数据增强

  • 过渡序列:我训练模型预测 pre-pass 和 post-pass 轨迹(输入:[: -N] 帧,输出:pre-pass 的最后 N 帧 + post-pass 帧),约占数据集的 30%。
  • 非目标预测:我还训练模型预测随机球员 pre-pass 轨迹的最后 N 帧,约占数据集的 30%。这有助于模型学习球员运动动态。

4. 推理策略

为了在推理过程中进一步挤出性能,我应用了以下技术:

  • 测试时训练 (TTT):我仅使用 pre-pass 预测辅助任务(预测传球前的轨迹)在测试数据上更新模型权重。

    • 这在 Public LB 上带来了约 0.001 RMSE 的非常微小的改进。

    • 然而,观察 CV 期间 TTT 的损失曲线(由同一年份组成),优化行为类似于随机游走。我不确定这能多好地泛化到不同年份的数据。

  • 测试时增强 (TTA):我还通过应用球员排列 (Player Permutation) 采用了 TTA。对不同球员输入顺序的预测进行平均有助于稳定结果。

5. 其他实验与错过的机会

  • 往年数据:虽然利用之前 Big Data Bowl 竞赛的数据可能是可行的,但我意识到这一点太晚了,无法将其纳入我的 pipeline。
  • 时间 U-Net:我尝试了一种类似于 U-Net 的架构,它在时间维度上卷积并在各种时间尺度上应用 ST-Transformer。虽然初步实验显示了一些希望,但在提交截止日期前我没有时间对其进行微调。
  • GNNs & Social-LSTM:像 Social-LSTM 和标准 GNN 这样的基于 RNN 的方法本身表现不佳。然而,用 GNN 替换空间 Transformer 产生了不错的结果,所以我将其用于集成。
  • 类 BERT 模型:一个接收 (SEQ_LEN+ HORIZON) 输入的模型表现相当,所以我将其用于集成。
  • CVAE:条件 VAE 在最小化 K 最佳 RMSE 方面效果很好,但在单模态(均值)预测方面 struggles。
  • 特征选择策略:我后悔在没有更严格选择的情况下依赖广泛的特征集。虽然我的实验表明使用丰富的特征集优于较小的子集,但这些验证是使用较小版本的模型进行的以提高效率。有可能较大的模型会从更精选的特征集中受益,而较小的代理模型 simply 需要更多原始信息来学习。
  • 基于聚类的混合专家模型:受 arXiv:2402.08698 启发,我对编码器输出应用 K-Means 聚类,将输入分类为不同的任务。基于这些聚类,我设计了门控机制以 heavily 权重分配给该聚类的特定专家。不幸的是,这种显式任务路由没有产生比单一模型更好的性能。
同比赛其他方案