返回列表

3rd Place Solution

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

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

第三名解决方案

作者: Moiz Saifee | 比赛排名: 第3名

首先,我们要感谢 Jigsaw 组织了如此有趣的比赛,并且在数据质量、训练/验证/测试集划分等方面执行得完美无缺。同时也非常感谢 Kaggle 提供免费的 TPU,这使得快速实验成为可能。这是我第一次仅使用 Kaggle Notebook(kernels)进行训练/推理,它们在大多数情况下运行良好,给我留下了深刻印象,除了缺少成熟 IDE 的功能外,我对 Kernels 的一切都很满意。

最后,同样重要的是,我要感谢我出色的队友 —— @brightertiger (Ujjwal)、@soloway (Igor) 和 @drpatrickchan (Dr Patrick) —— 是他们让我们在排行榜(LB)上的位置成为可能,而且合作过程非常愉快。我们在比赛最后 15 分钟才提交了最好的结果,这是一个从未停止进步的不懈团队。我们不断寻找和重新评估新的角度来改进我们的解决方案。虽然是我写的解决方案描述,但我代表大家在此发言。

以下是我们最佳提交的主要部分:

预训练 RoBERTa XLM:就像我们在所有公开分享的 kernels 中看到的那样,RoBERTa XLM 是主力军,只需极少的精力/训练就能提供出色的性能。使用了论坛中讨论的许多内容,如翻译数据、开放字幕数据以及多折平均。通常大约 20 万条左右的观察数据足以训练单个模型,因此鉴于手头有大量数据,有很大的空间进行多折平均。非常感谢 @shonenkov 和 @xhlulu 提供的优秀 kernels。

特定语言的预训练 Bert 模型:针对所有 6 种测试语言使用了特定语言的预训练 Bert 模型。对于单个语言而言,给定容量的模型总是比多语言模型更强大。唯一的挑战是将来自不同模型(可能具有不同的分布)的概率合并到一个单一的排名中,这对于 ROC 评估指标来说尤其成问题(即使你在每种语言中完全正确地获得了排名顺序,在跨语言组合时也可能把事情搞砸)。我们的队友 Igor 神奇地做到了这一点。非常感谢 @shonenkov 提供的用于训练这些 Bert 模型的优秀 kernel

RoBERTa XLM MLM:借鉴了 @riblidezso 的优秀 kernel 中使用领域特定数据训练模型的概念。虽然这些模型的性能与我们现有的 XLM-Roberta 模型相似,但它们在融合中效果很好。我们通过使用训练数据、验证数据和测试数据集的翻译,在 MLM 步骤中添加了更多数据。这给了我们几个预训练模型的版本,我们在融合中对它们进行了平均。

后处理:我们观察到大约 5-10% 的评论看起来像是自动生成/基于模板的消息。例如 - 查看测试 ID 39482。这里真正发生的是 —— 用户名/页面标题/附件名称被机器人引用,其中可能包含脏话。但很可能是由于数据标签生成的方式,这些可能被标记为非恶意 —— 不幸的是,我们的模型对此感到困惑。我们应用正则表达式、聚类和其他启发式方法来调整这些评论直接来自模型的分数。这让我们在 LB 上额外获得了接近 0.001 的提升。

其他对结果有微小影响的事情:

TTA(测试时增强):我们的一些模型进行了测试时增强 —— 我们对外语和英语的预测进行了加权平均。
标签平滑:在我们的大多数模型中都使用了,包括单语言模型。

将组件 # 1-3 加权融合在一起,并加上 # 4 中描述的后处理,使我们在公共 LB 上获得了 0.9523,在私有 LB 上获得了 0.9509。

同比赛其他方案