返回列表

6th Place Solution: Very Custom GRU

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

开始: 2020-10-05 结束: 2021-01-07 学习效果预测 数据算法赛
第6名方案:非常定制的GRU

第6名方案:非常定制的GRU

作者:Ahmet Erdem (Grandmaster) | 排名:第6名

首先恭喜 @keetar@mamasinkgs 以及其他顶尖团队。我将简要解释我的解决方案。这里时间已晚,所以我可能会遗漏一些要点。

一些通用细节

  • 仅使用了问题数据。加入讲座(Lectures)虽然提高了验证分数,但增加了训练集与验证集之间的差距,并且没有提升 Leaderboard(LB)分数。
  • 没有使用 Dataframes。使用了按用户 ID 分区的 numpy 数组。
  • 序列长度为 256。
  • 训练 15 个 epoch。每次使用 1/3 的数据,并降低学习率。
  • Batch size(批大小)为 8192。
  • 集成方案:在全部数据上训练了 7 个不同随机种子的相同模型进行集成。
  • 单模型验证分数 0.8136,LB 分数 0.813。集成后分数:0.815。
  • 在 4 GPU 机器上训练了 8 小时。
  • 使用了 Github,并提交了每一次改进,提交信息类似于:增加一个 GRU 层 (Val: 0.8136, LB: 0.813)。

输入

Inputs Diagram

工程化特征

假设当前问题的正确答案是 X。计算以下各项的对数:

  • 自上次出现 X 以来的问题数量。
  • 当前 X 连续出现的长度(可以为零)。
  • 当前任何非 X 答案连续出现的长度(可以为零)。

这有助于处理那些总是选择 A 作为答案等的用户情况。

嵌入

Embeddings Diagram 1 Embeddings Diagram 2

内容余弦相似度

  • 有点类似于具有 16 个头的注意力机制。
  • 对内容向量应用线性变换和 L2 归一化。
  • 对于 16 种不同的变换,计算当前内容与历史内容之间的余弦相似度。
  • 变换对于内容和历史内容是对称的。

U-GRU

  • 具有 2 个方向的 GRU,但不是双向 GRU(BiGRU)。
  • 首先进行反向传递,拼接输出,然后进行正向传递。

MLP (多层感知机)

  • 2 层结构,每层包含 [Linear, BatchNorm, Relu]。

编辑:Part embedding 是可训练的。在 GRU 之前实际上还有一个 sigmoid x tanh 层。

同比赛其他方案