返回列表

3rd place solution (0.818 LB): The Transformer

416. Riiid Answer Correctness Prediction | riiid-test-answer-prediction

开始: 2020-10-05 结束: 2021-01-07 学习效果预测 数据算法赛
第3名方案 (0.818 LB): The Transformer

第3名方案 (0.818 LB): The Transformer

作者: Javier Martín, Andrés Miguel Torrubia Sáez
比赛: Riiid! Answer Correctness Prediction
  • 2021-01-16 编辑 2: 在图表中添加了分类嵌入后的缺失线性层 + 标签特征。
  • 2021-01-16 编辑 1: 源代码 已发布。

哇,这真是一段奇妙的旅程。首先,感谢 @sohier@hoonpyotimjeon、Kaggle、Riiid 以及所有参与组织这场极具挑战性比赛的人。

祝贺获得第 1 名和第 2 名的 @keetar@mamasinkgs!!!我们非常期待阅读你们的解决方案!

还要特别感谢我的队友 @antorsae,他在最后阶段加入了我,如果没有他的想法、直觉和硬件支持,我不可能走到这一步。

我被这个比赛吸引是因为与我之前参加的两个比赛(Deepfakes 和 RSNA 肺栓塞检测)相比,它的数据集占用空间相对较小,但结果证明它比我预期的要消耗更多的资源。

我们的解决方案是两个 Transformer 模型的混合体,配合精心设计的注意力机制、工程化特征以及一种我们戏称为“蒙眼枪手”的时间感知自适应集成机制。

Blindfolded Gunslinger

(“蒙眼枪手”由 @antorsae 手绘,灵感来源于《荒野大镖客 2》)

The Transformer

Model Architecture

我们使用了两个独立训练的 Transformer,保留了 2.5% 的用户用于验证,交互序列长度为 500。在训练时,我们简单地将用户历史记录分割为 500 个不重叠的交互块,并随机采样这些块。

  • Transformer 1: 3+3 层(编码器+解码器),无 LayerNorms,使用 T-Fixup 初始化(参见论文了解我们使用它的原因),ReLU 激活函数,d_model=512。
  • Transformer 2: 4+4 层,无 LayerNorms,T-Fixup 初始化,GELU 激活函数,d_model=512。

我们将所有特征输入编码器和解码器。对于连续变量,我们使用学习到的特征(简单地投影到 d_model);对于分类变量,我们首先将其映射到低维嵌入,然后同样投影到 d_model=512(以避免潜在的过拟合)。我们使用了一个嵌入袋来处理问题标签。

为了防止 Transformer 窥探未来,我们将包含问题和答案的编码器输入向右移动,隐藏解码器中所有特定于答案的特征(user_answer, answered_correctly, qhe, qet),即那些在推断交互

同比赛其他方案