返回列表

8th place solution

387. Jigsaw Multilingual Toxic Comment Classification | jigsaw-multilingual-toxic-comment-classification

开始: 2020-03-23 结束: 2020-06-22 内容安全 数据算法赛
第8名解决方案

第8名解决方案

作者: Psi (Grandmaster) | 比赛排名: 第8名

非常感谢 Kaggle 和 Jigsaw 举办这次比赛。我很高兴能在一周内获得我的第二枚单人金牌 :)

我参加这次比赛的主要目标是学习如何在 Kaggle 上使用 TPU。我从 Pytorch 开始,转到 Tensorflow,然后又转回 Pytorch。我认为总体可用性仍然很不稳定,3小时的时间限制也相当限制发挥。不过这方面在不断进步,我希望将来它们会变得更好用。我之前发过一个单独的话题

在这次比赛中,整个测试集都是可见的,所以提交非常容易,而且融合多个模型非常重要。不幸的是,我无法选择我最好的提交,因为它包含了一个与Kernel的融合,而该 Kernel 没有提供训练脚本。我很高兴我听从内心没有选择它,尽管如果选了它我的排名会高几位。我真的鼓励大家停止发布仅用于推理的 Kernel,因为从逻辑上讲,如果它们得分高,人们就会使用它们,但在我看来,学习潜力相当有限。

模型

我拟合的模型与整个比赛期间发布的模型没有太大区别。与使用 XLM-Roberta-Large 相比,我无法获得更好的结果。我也尝试了单语言模型,但相比 XLM-Roberta 没有任何改进。

我也不相信任何高级采样技术、标签平滑、数据增强或其他流传的方法能带来任何改进。

唯一真正重要的事情是将训练数据翻译成手头的语言。这与原始XLM-Roberta 论文中报告的实验结果一致。

我通过排名平均融合了模型。

数据

我只使用了提供的数据及其翻译。我认为最大的未开发潜力是使用 Wikipedia 转储中的讨论页面来进一步训练模型。我没有时间去探索这个,但我希望其他人做了并且可以报告一下。

实际上,我认为提供的英文数据的主要问题之一是它几乎不包含机器人评论,但测试数据包含相当多此类评论,特别是土耳其语,这也是我认为那里的分数比其他语言更好的原因。

后处理

融合之后,后处理对于我获得高分非常重要。由于评估指标是六种不同语言的全局 AUC,我很快意识到应该有空间通过上下移动单个语言的预测来优化全局分数。

我在包含三种语言的 CV(交叉验证)集上测试了这一点,并设法在那里获得了很好的提升。我进一步测试了模拟的公共和私有数据集在优化方面的表现,假设公共和私有之间是随机分割的。所以我做的是重复选择随机的 30% CV 数据,为这 30% 优化阈值,然后将它们应用到剩余的 70% 上,并检查它们与 70% 的最佳阈值相差多远。总的来说,我看到差别不大,这就是为什么我很自信我可以在公共 LB(排行榜)上优化阈值,并且它们对私有 LB 应该也能很好地工作。仅在 CV 上优化是行不通的,因为 CV 只有 3 种语言。这是此类分析的一个示例图:

分析图表

x 轴是手头语言的缩放因子,y 轴是相对于不缩放的分数提升。蓝线是 30% 样本的提升,橙线是 70% 样本的提升。请注意,在这种情况下,因子 1.0 的提升不为 0,因为另一种语言已经被优化过了。

此外,我优化了一个范围,用于优化缩放因子。我发现不缩放顶部预测可以提高分数,所以我只缩放了 0.25 到 0.875 之间的预测(排名平均值)。您可以通过平均相似文本的预测来获得一些进一步的微小改进。

我的整个后处理流程将分数提高了大约 0.004,这是相当多的。

同比赛其他方案