356. NFL Big Data Bowl | nfl-big-data-bowl-2020
在阅读和关注 Kaggle 比赛几年后,我终于决定放手一搏。我是新英格兰爱国者队的超级粉丝,也热爱深度学习,所以这对我来说是完美的比赛。我玩得很开心,学到了很多东西。我非常庆幸自己这么做了。致任何正在阅读这篇文章但尚未参加过比赛的人——尽管去试一试!社区非常棒,我保证你会乐在其中。
我基本上采用了一堆权重共享的 Transformer Encoder Layers。大部分时间都花在调整其配置和输入/输出上。我错过了 2017 年数据的问题,事后看来,这导致我在让它正确运行时遇到了很多困难。正因为如此,我也从未弄清楚 CV 的问题。我最好的提交获得了 0.01190 的 5 折随机 CV 分数和 0.01295 的 PLB 分数。
我最好的发现绝对是将原始跑者输入连接到每个球员身上。看起来这让模型能够找出其他参赛者发现的重要特征。
oX 和 oY 分别是 cos(Orientation) 和 sin(Orientation)。Position(位置)和 Season(赛季)是嵌入。(# 值, # 维度)Positions = ['RB', 'OL', 'QB', 'TE', 'WR', 'CB', 'DL', 'LB', 'SS']。根据阅读更好的模型,看起来我本应该致力于移除这个特征。我祈祷通过嵌入赛季,模型能弄清楚 2017 年数据的问题。🙈
我在 transformer 层的参数共享方面做了很多尝试。我发现交错使用 2 组权重效果最好:
for _ in range(self.n_layer // 2):
players = self.encoder_layer(players)
players = self.encoder_layer2(players)
虽然与 ALBERT(https://arxiv.org/pdf/1909.11942.pdf)中展示的那样将所有权重共享相比,收益微乎其微。
我仍然不知道为什么在最后添加全连接层没有帮助。猜测这可能 S 和 A 在 2017 年数据中的问题以及对此的过拟合有关。不过看到一个 10K 参数的网络(16 维)在预测方面表现不错还是很酷的。
另外,107 个输出对应 -7 到 99 码的范围。有趣的是,我发现 -5 到 21 码得出的分数是一样的。我在“长距离跑动”预测器上浪费了很多时间。我永远无法让它接近预测长距离跑动。
感谢主办方和所有参赛者!祝大家好运!