387. Jigsaw Multilingual Toxic Comment Classification | jigsaw-multilingual-toxic-comment-classification
恭喜所有的获奖者。感谢 Kaggle 提供这个有趣的比赛。感谢我的队友 @Yang Zhang @MaChaogong @Hikkiiiiiiiii @Morphy。
这是我第一次解决多语言问题。感谢那些优秀的入门 Kernel:
我在最开始遵循这些代码,很快就获得了 LB 0.9415 的单模型 XLM-R Large 成绩。
在这个问题上工作了3个月后,我总结了一些有用的技巧。
主要有三种训练策略:单阶段训练、两阶段训练和三阶段训练。
a) 单阶段训练
意味着我们在训练中始终使用相同的数据。这种策略通常得分较低。但我们可以从中获得一些多样性。
b) 两阶段训练
意味着我们使用两种不同的数据进行训练。例如:
我们首先在 "Toxic Comment Classification" 数据集 + "Unintended Bias in Toxicity" 数据集上训练。之后我们在 8k 验证数据上训练。这种策略通常得分较高。
c) 三阶段训练
意味着我们使用三种不同的数据进行训练。例如:
我们首先在 "Toxic Comment Classification" 数据集 + "Unintended Bias in Toxicity" 数据集上训练。
其次我们在 200k 开放字幕数据上训练。
最后我们在 8k 验证数据上训练。
这种策略得分通常与两阶段训练相似。但我们能获得更高的 Private 分数(私有榜单分数)。
例如:
我的 XLM-R Large 模型获得了 LB 0.9407,Private 分数 0.9414。
我的另一个 XLM-R Large 模型获得了 LB 0.9420,Private 分数 0.9424。
因此,三阶段训练是最好的训练策略。我也不知道为什么。
在最开始,我的队友发现,当我们在 "Toxic Comment Classification" 数据集 + "Unintended Bias in Toxicity" 数据集上训练时,验证集 AUC 总是低于仅在 "Toxic Comment Classification" 数据集上训练。为了获得更高的验证 AUC,我们不能简单地组合许多不同的数据进行训练。
在9天前,我发现如果我们用最好的单模型预测训练数据的目标,并使用预测的目标作为标签代替原来的 0/1 标签。那么我们可以获得更高的验证 AUC 分数。
例如:我们使用 XLM-R Large 模型 (LB 0.9411) 预测 "Toxic Comment Classification" 数据集并获得它们的预测目标。如下所示:
| id | toxic | preds |
|---|---|---|
| 1 | 0 | 0.341 |
| 2 | 1 | 0.813 |
| 3 | 0 | 0.211 |
然后我们使用预测的概率作为标签目标进行训练。使用这个技巧,我们在验证 AUC 分数上总是能获得 0.003 的提升。这个技巧也可以用于其他具有 0/1 标签的数据集。在 "Toxic Comment Classification" 数据集和 "Unintended Bias in Toxicity" 数据集上都使用这个技巧后,我们可以用它们来训练模型。数据越多,验证 AUC 分数越高。
基于此,我训练了一个拥有 790k 训练数据的 XLM-R Large 模型(包括 "Toxic Comment Classification" 数据集、"Unintended Bias in Toxicity" 数据集和开放字幕数据集)。它获得了 LB 0.9464 分数和 0.9445 Private 分数。
以上就是全部内容。希望这两个技巧能对你有所帮助。