第24名方案:saintpp + lgb (Private 0.810)
第24名方案:saintpp + lgb (Private 0.810)
作者: cswwp | 比赛排名: 第24名
首先,感谢 Kaggle 举办了这么好的一场比赛,几乎没有抖动。恭喜获得顶尖名次的选手,也非常感谢我的队友 @jaideepvalani 和 @ekffar。最终我们队伍的 Public 成绩是 0.808,Private 成绩是 0.810,最终排名第 24。我们遗憾错过了金牌,但这没关系,现在我想分享我们的方法。
因为时差原因,我没有仔细阅读讨论区,所以我刚才看到我的队友 @jaideepvalani 已经分享了我们的 方案。作为补充而非重复,我只是基于 jaideepvalani 的方案 扩展了一些细节。
架构
SaintPlusPlus, lgb
嵌入层
练习:
- Question_id (题目ID)
- Part (部分)
- Community id (尝试过,但没有提升,可能需要调优)
- Task container id (尝试过,但没有提升,可能需要调优)
交互:
- lag time (滞后时间) (同一个 container id 保持与第一个相同) (离散嵌入)
- prior question elapsed time (上一题耗时) (连续嵌入)
- prior had explain (上一题是否有解释) (离散嵌入)
- Prior lecture (上一节讲座) (离散嵌入)
响应:
- Prior question correctness (上一题正确性) (离散嵌入)
数据采样优化
数据采样在我们的实验中非常重要。
优化细节
SAINTPP
- 跳跃连接: 我们在编码器层内部和解码器层内部添加了跳跃连接,我最初使用的 GitHub 实现版本没有这种跳跃连接。
- Dropout (丢弃层): 为编码器、解码器和 FFN 添加了 dropout。
- TCN 因果卷积: 尝试在嵌入层后使用 TCN 因果卷积,没有提升,但现在我认为应该进行调优,它是会起作用的。
- 大序列长度: 对于 saintpp 使用更大的序列长度给我们团队带来了提升,我认为这可能是因为太短的序列导致 Transformer 类模型陷入局部极小值点。
LGB
更新中...
结论
我们最好的 saintpp (序列长度 320, 嵌入维度 224, 2 x 编码器 + 2 x 解码器) 获得了 CV 0.8016,LB 0.806,而 lgb 接近 0.796。最终提交是融合了 lgb (lb 796) + saintpp cv1 (cv 8016) + saintpp cv3 (cv 0.7992) = Public LB 0.808,Private 0.810。
应该做的事情:
- 应该继续用因果卷积优化我们的网络(因为 Transformer 类似于全局注意力,一些局部相关性可能被忽略)和 GRU,但最终没有时间了。
- 应该继续尝试更大的网络。
再次感谢我的队友,他们给了我很多帮助,让我学到了很多。下一场比赛争取金牌,继续前行。