返回列表

10th Place Solution

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

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

第10名方案

作者:Qishen Ha (haqishen) | 团队成员:naivelamb, wuyhbb, terenceliu4444, hughshaoqz

感谢我出色的队友 @naivelamb@wuyhbb@terenceliu4444@hughshaoqz,感谢你们帮助我获得了我的第5枚金牌!

祝贺所有的获奖者!

摘要

以下是对我们有效的主要思路:

详情

翻译数据

我们使用这里列出的翻译数据进行训练和测试(用于TTA):

https://www.kaggle.com/c/jigsaw-multilingual-toxic-comment-classification/discussion/159888

感谢大家发布这些优秀的数据集!

伪标签

我们训练了一些基线模型,然后将它们与一些公开提交的文件进行融合,使 LB 分数达到 0.9481,然后将其作为伪标签一直使用到最后。

在使用带有伪标签的测试数据进行训练时,我们发现使用 KL 散度损失配合软标签处理所有测试数据能带来最佳性能。

多阶段训练

众所周知,在训练集上训练模型后,在验证集上进行微调可以提高 LB 分数,我们称之为2阶段训练。(https://www.kaggle.com/xhlulu/jigsaw-tpu-xlm-roberta

通过在我们的训练流程中增加更多阶段,我们能够进一步提高 LB 分数。我们的部分流程如下:

  • 伪标签 (5轮) -> Train1 (1轮) -> 验证集 (3轮)
  • Train2 (1轮) -> Train1 (1轮) -> 验证集 (3轮)
  • Train1 (1轮) -> 伪标签 (3轮) -> 验证集 (3轮)
  • ...

(Train1: 2018年第一届 Jigsaw 竞赛的训练数据)
(Train2: 2019年第二届 Jigsaw 竞赛的训练数据)
(伪标签: 本次竞赛的测试数据)
(验证集: 本次竞赛的验证数据)

请注意,在使用 Train1 和 Train2 时,我们通常不会在完整数据集上进行训练,而是使用其子集。

冻结嵌入层

冻结 Transformer 的嵌入层可以节省 GPU 显存,使我们能够在训练时使用更大的批次大小,同时加快训练过程。

通过多阶段训练、伪标签和冻结嵌入层,我们能够在不融合任何公开提交文件的情况下达到 LB 0.9487

测试时增强 (TTA)

我们对所有 6 种语言进行推理,原始语言与其他 5 种语言之间的融合权重比例为 8:2。通过这种 TTA 方法,我们的 LB 分数达到了 0.9492

UDA

参考:https://arxiv.org/pdf/1904.12848.pdf

然后我们融合了一些在训练时使用 UDA 的模型,LB 分数达到了 0.9498,经过进一步的调整,我们达到了 LB 0.9500

单语言建模

同比赛其他方案