返回列表

38th place solution: Single SAINT+

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

开始: 2020-10-05 结束: 2021-01-07 学习效果预测 数据算法赛
第38名方案:单模型 SAINT+

第38名方案:单模型 SAINT+

作者: Furkan Ömerustaoğlu | 排名: 第38名

首先,感谢主办方和Kaggle团队举办了这次比赛。我认为对于那些想在自然语言处理(NLP)之外尝试Transformer模型的人来说,这是一个非常有用的挑战。我还要感谢所有在比赛中分享想法的人。可以说,这在我的学习之旅中贡献良多。

感谢 Tito 及其关于循环特征工程的精彩 notebook
感谢 Mark 及其关于调和平均数想法的精彩 notebook

结果

我的本地训练/验证集 AUC:0.804 / 0.806
由于私有数据泄露,我已经知道我的公开榜单和私有榜单分数之间的差异。
作为交叉验证(CV)策略,我使用了与 Tito 类似但不完全相同的方法。

模型细节

模型结构与 SAINT+ 论文非常相似,除了以下参数:

  • 2个编码器 - 2个解码器层
  • 256 嵌入维度
  • 注意力层的 dropout 为 0.1,编码器-解码器层末端的全连接头的 dropout 为 0.2
  • 序列长度为 100

编码器嵌入(已知特征)

  • 位置嵌入(分类)
  • 题目ID嵌入(分类)
  • 捆绑包ID嵌入(分类)
  • 部分嵌入(分类)
  • 题目编码标签嵌入(每个唯一值的新编号)(分类)
  • 题目尝试次数嵌入(分类)
  • 滞后时间嵌入(当前任务时间戳 - 上一个任务时间戳)(分类)
  • 调和平均数嵌入(连续)

解码器嵌入(未来特征)
所有特征均已移位/调整

  • 位置嵌入 - 与编码器使用相同的嵌入层(分类)
  • 答案嵌入(分类)
  • 耗时(分类)
  • 答案捆绑包ID - 与捆绑包ID使用相同的嵌入层(分类)

训练

  • 25个 epoch,在 GPU 上训练大约需要 7-8 小时,推理需要 3-4 小时
  • 使用 Adam 优化器,前 20 个 epoch 学习率为 1e-3,最后 5 个 epoch 学习率为 1e-4
  • Batch size 为 128
同比赛其他方案